Удаление сломанных пакетов

9

Недавно, разочаровавшись в установке phpmyadmin, я решил начать с нуля.

К сожалению, на этапе удаления мне предложили ввести пароль root для mysql, которого у меня не было на тот момент. Достаточно сказать, что он сообщил мне, что будут остатки компонентов, так как он не мог должным образом очистить свои коннекторы базы данных.

Когда я вернулся домой, я попытался удалить пакет, aptitude purgeкоторый оказался не более мощным, чем aptitude removeтот, в котором он увидел phpmyadmin, попытался удалить его и потерпел неудачу, так как каталоги, связанные с пакетом, уже были удалены из моей предыдущей попытки.

Я попытался переустановить phpmyadmin, но aptitude просто заявил, что обновление недоступно, и ничего не сделал, если бы оно было, я, вероятно, столкнулся бы с теми же проблемами, независимо от этого.

В связи с этим я приступил к очистке mysql, удалив используемую базу данных и очистив ее от пользовательских таблиц. Я, однако, понятия не имею, что еще осталось от упаковки, или даже как убрать крючки в aptitude.

Результат dpkg --purge

ickronia:/home/ken# dpkg --purge phpmyadmin
(Reading database ... 27158 files and directories currently installed.)
Removing phpmyadmin ...
/var/lib/dpkg/info/phpmyadmin.prerm: line 5: /usr/share/dbconfig-common/dpkg/prerm.mysql: No such file or directory
dpkg: error processing phpmyadmin (--purge):
 subprocess pre-removal script returned error exit status 1
/var/lib/dpkg/info/phpmyadmin.postinst: line 35: /usr/share/dbconfig-common/dpkg/postinst.mysql: No such file or directory
dpkg: error while cleaning up:
 subprocess post-installation script returned error exit status 1
Errors were encountered while processing:
phpmyadmin

Следуя совету Джайла, я попытался переустановить зависимость dbconfig-common

ickronia:/home/ken# aptitude reinstall dbconfig-common
Reading package lists... Done
Building dependency tree
Reading state information... Done
Reading extended state information
Initializing package states... Done
Reading task descriptions... Done
dbconfig-common is not currently installed, so it will not be reinstalled.
dbconfig-common is not currently installed, so it will not be reinstalled.
The following packages are BROKEN:
  phpmyadmin
0 packages upgraded, 0 newly installed, 0 to remove and 3 not upgraded.
Need to get 0B of archives. After unpacking 0B will be used.
The following packages have unmet dependencies:
  phpmyadmin: Depends: php5-mcrypt but it is not installable
              Depends: dbconfig-common but it is not installable
              Depends: libjs-mootools (>= 1.2.4.0~debian1-1) which is a virtual  package.
The following actions will resolve these dependencies:

Remove the following packages:
phpmyadmin

Score is 121

Accept this solution? [Y/n/q/?] n

*** No more solutions available ***

The following actions will resolve these dependencies:

Remove the following packages:
phpmyadmin

Score is 121

Accept this solution? [Y/n/q/?] n

*** No more solutions available ***

The following actions will resolve these dependencies:

Remove the following packages:
phpmyadmin

Score is 121

Accept this solution? [Y/n/q/?] y
The following packages will be REMOVED:
  phpmyadmin{a}
0 packages upgraded, 0 newly installed, 1 to remove and 3 not upgraded.
Need to get 0B of archives. After unpacking 17.7MB will be freed.
Do you want to continue? [Y/n/?] y
Writing extended state information... Done
(Reading database ... 27158 files and directories currently installed.)
Removing phpmyadmin ...
/var/lib/dpkg/info/phpmyadmin.prerm: line 5: /usr/share/dbconfig-common/dpkg/prerm.mysql: No such file or directory
dpkg: error processing phpmyadmin (--remove):
 subprocess pre-removal script returned error exit status 1
/var/lib/dpkg/info/phpmyadmin.postinst: line 35: /usr/share/dbconfig-common/dpkg/postinst.mysql: No such file or directory
dpkg: error while cleaning up:
 subprocess post-installation script returned error exit status 1
Errors were encountered while processing:
 phpmyadmin
E: Sub-process /usr/bin/dpkg returned an error code (1)
A package failed to install.  Trying to recover:
Reading package lists... Done
Building dependency tree
Reading state information... Done
Reading extended state information
Initializing package states... Done
Writing extended state information... Done
Reading task descriptions... Done

ickronia:/home/ken#

Похоже, что phpmyadmin чисто очистил dbconfig-common

ickronia:/usr/share/dbconfig-common# ls -alF
total 12
drwxr-xr-x  3 root root 4096 2011-02-09 08:09 ./
drwxr-xr-x 98 root root 4096 2011-01-20 21:42 ../
drwxr-xr-x  3 root root 4096 2011-01-05 11:08 data/
ickronia:/usr/share/dbconfig-common#

Попытка dpkg из архивов, как предложено Джайлсом

ickronia:/usr/share/dbconfig-common# dpkg -i /var/cache/apt/archives/{dbconfig-common,php5-mcrypt,libjs-mootools}*.deb
Selecting previously deselected package dbconfig-common.
(Reading database ... 27161 files and directories currently installed.)
Unpacking dbconfig-common (from .../dbconfig-common_1.8.46_all.deb) ...
Selecting previously deselected package php5-mcrypt.
Unpacking php5-mcrypt (from .../php5-mcrypt_5.3.3-6_i386.deb) ...
Selecting previously deselected package libjs-mootools.
Unpacking libjs-mootools (from .../libjs-mootools_1.2.5~debian1-2_all.deb) ...
Setting up dbconfig-common (1.8.46) ...
dpkg: dependency problems prevent configuration of php5-mcrypt:
 php5-mcrypt depends on libltdl7 (>= 2.2.6b); however:
  Package libltdl7 is not installed.
 php5-mcrypt depends on libmcrypt4; however:
  Package libmcrypt4 is not installed.
dpkg: error processing php5-mcrypt (--install):
 dependency problems - leaving unconfigured
Setting up libjs-mootools (1.2.5~debian1-2) ...
Processing triggers for man-db ...
Processing triggers for libapache2-mod-php5 ...
Reloading web server config: apache2.
Errors were encountered while processing:
 php5-mcrypt
ickronia:/usr/share/dbconfig-common#

У меня есть веб-сервер, работающий на php, но я готов рискнуть простоем, чтобы решить эту проблему.

кругозор
источник
Скопируйте и вставьте точные команды, которые вы пробовали, и весь полученный результат. Мы, вероятно, можем вам помочь, но не без точных сообщений об ошибках.
Жиль "ТАК - перестань быть злым"

Ответы:

7

phpmyadminзависит от того dbconfig-common, который содержит /usr/share/dbconfig-common/dpkg/prerm.mysql. Похоже, вам удалось удалить dbconfig-commonбез удаления phpmyadmin, чего не должно было случиться (вы пытались --forceчто-то сделать?).

Мой совет - сначала попробовать aptitude reinstall dbconfig-common. Если это работает, у вас должна быть согласованная система, из которой вы можете aptitude purge phpmyadminповторить попытку .

Другая вещь, которую вы можете сделать, это закомментировать оскорбительную строку в /var/lib/dpkg/info/phpmyadmin.prerm. Это, вероятно, позволит вам удалить phpmyadmin. Я подозреваю, что вы сделали то, что должна делать эта строка, когда вы редактировали эти таблицы MySQL вручную, но я вообще не знаю phpmyadminадминистратора базы данных, поэтому я только догадываюсь.

Разница между removeи purgeзаключается в том, что она removeпросто удаляет программу и ее файлы данных (то, что вы могли бы повторно загрузить), в то время как purgeсначала выполняется то, что removeпроисходит, затем удаляются файлы конфигурации (то, что вы могли редактировать локально). Если removeне получится, так и будет purge.

Жиль "ТАК - перестань быть злым"
источник
Я недавно попробовал вам предложение переустановить dbconfig-common, но безрезультатно. Я обновил свои вопросы с результатами этого усилия.
Кен
@Ken: попробуй dpkg -i /var/cache/apt/archives/{dbconfig-common,php5-mcrypt,libjs-mootools}*.deb. Если в вашем кэше нет дабов, загрузите их с packages.debian.org . Если есть сообщения об ошибках, опубликуйте их, и я (или кто-то еще) может помочь вам с ними.
Жиль "ТАК - перестань быть злым"
Попытка безрезультатна. Кажется, как будто на моем чистом сервере Debian был запущен рой саранчи. Вопрос был обновлен, чтобы отразить эту последнюю попытку.
Кен
@Ken: Вам также нужно установить зависимости php5-mcrypt. Aptitude сделает всю работу за вас; Вы можете попробовать, но я думаю, что он откажется сдвинуться с места, пока вы не приведете php5myadminв хорошее состояние. dpkgявляется более низким уровнем и может работать даже с частично поврежденной базой данных пакетов.
Жиль "ТАК - перестань быть злым"
При попытке установить php5-mcrypt, сначала предложили удалить phpmyadminи dbconfig-common. Я не мог найти никаких других решений, поэтому я думал, что это не получится, когда я согласился. Наоборот, просто то, что php5-mycrypt был «предложен» для установки, позволило aptitude правильно очистить хуки и удалить phpmyadminи dbconfig-common. Теперь я переустановил их вместе с phpmyadmin(хотя и через tar для большего контроля). Похоже, что последняя версия не требует mysql для самоорганизации. Спасибо, Джайлс, за удаление саранчи с моего сервера!
Кен
3

Иногда система управления пакетами настолько сломана (часто в круговой цепочке зависимостей), что единственная комбинация команд, которую я нашел для удаления проблемных пакетов:

  • cd /var/lib/dpkg/info ; rm <packagename.*>
  • dpkg --purge --force-remove-reinstreq <packagename>
  • ИЛИ dpkg --remove --force-remove-reinstreq <packagename>
  • Затем apt-get install <packagename>переустановить пакет

Иногда файл переопределения состояния может также нуждаться в исправлении, и вышеупомянутая процедура может вызвать ошибки относительно этого. Как исправить файлы переопределения состояния, зависит от того, является ли это ошибкой, помечающей пользователя или нет.

В общем:

  • файлы переопределения состояния находятся в: /var/lib/dpkg/statoverride
  • Вы можете обновить его, запустив: dpkg-statoverride --remove <stateoverride-filename>
  • Вы даже можете редактировать их вручную, если знаете, что делаете
Чукс Узоэто
источник
2

(Я предполагаю, что вы имели в виду aptitude purgeи apt-get remove, потому что приведенные вами команды не существуют)

Попробуй dpkg --purge phpmyadmin. Это более низкий уровень, чем другие инструменты, поэтому может быть более эффективным в этом случае.

tshepang
источник
Это дало тот же результат, но без подробной обратной связи, требуемой aptitude. Спасибо, что поймали мой фарш из имен команд.
Кен
У меня есть то, что похоже на ту же проблему, но, к сожалению, я вручную скомпилировал PHP, Apache, и более того, установив их, добавив модуль php5-mcrypt (в котором есть все, что я упомянул как зависимость), получился бы довольно грязный и нежелательное дублирование. Другого пути нет?
Кен
0

Вы можете запустить 'apt-get -f install', чтобы исправить это:

The following packages have unmet dependencies:
 postgresql-client-9.1 : Breaks: postgresql-9.1 (< 9.1.11-0ubuntu0.12.04) but 9.1.10-0ubuntu12.04 is to be installed
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).

Я столкнулся с вышеуказанной проблемой, используя команду «sudo dpkg --purge postgresql-9.1».

manjunath.k
источник