Видалення зламаних пакетів


9

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

На жаль, під час фази видалення мені було запропоновано кореневий пароль для mysql, який у мене тоді не було під рукою. Досить сказати, він повідомив мені, що будуть залишкові компоненти, оскільки він не може належним чином очистити роз'єми бази даних.

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

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

У зв'язку з цим я приступив до очищення mysql, скинувши використану ним базу даних та очистивши її від таблиць користувачів. Однак я не маю поняття, що ще залишається від упаковки, або навіть як почистити гачки на придатності.

Результат 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-звичайний

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#

Спроба витягнути кілограми з архівів, як запропонував Джайлз

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-поширених, але безрезультатно. Я оновив свої запитання щодо результатів цього починання.
Кен

@Ken: Спробуйте dpkg -i /var/cache/apt/archives/{dbconfig-common,php5-mcrypt,libjs-mootools}*.deb. Якщо у вашому кеші немає деб, завантажте їх з пакунків.debian.org . Якщо є повідомлення про помилки, опублікуйте їх, і я (або хтось інший) можу вам допомогти з ними.
Жил 'ТАК - перестань бути злим'

Спроба безрезультатна. Схоже, на моєму чистому сервері Debian був розпущений рій сарани. Питання оновлено, щоб відобразити цю останню спробу.
Кен

@Ken: Вам також потрібно встановити залежності php5-mcrypt. Aptitude зробив би роботу за вас; Ви можете спробувати, але я думаю, що це відмовиться зрушити з місця, поки ви не приведете php5myadminв хороший стан. dpkgнижчий рівень і може працювати навіть на частково зламаній базі даних пакетів.
Жиль "ТАК - перестань бути злим"

Намагаючись встановити php5-mcrypt, він спочатку запропонував видалити phpmyadminта dbconfig-common. Я не міг отримати жодних інших рішень, тому думав, що коли я погодиться, воно впаде на обличчя. Навпаки, просто дія, яку php5-mycrypt було "запропоновано" для встановлення дозволених можливостей належним чином очистити гачки та зняти phpmyadminта dbconfig-common. Зараз я знову встановив їх разом із phpmyadmin(хоча і через дьоготь для більшого контролю). Здається, що остання версія не вимагає 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. Нижній рівень, ніж інші інструменти, тому може бути більш ефективним у цьому випадку.


Це дало той самий результат, але без детального зворотного зв'язку, необхідного для здатності. Дякую за те, що я впіймав моє накреслення команд.
Кен

У мене є те, що схоже на ту ж проблему, але, на жаль, я вручну склав PHP, Apache, і тим більше встановити їх, додавши модуль php5-mcrypt (який має все, що я згадував як залежність), призведе до досить безладдя. і небажане дублювання. Хіба іншого шляху немає?
ken

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"

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.