Как исправить поврежденные синаптические обновления: «Пакет находится в очень плохом несовместимом состоянии»

24168
spoulson

У меня Dell Mini9 под управлением Ubuntu 8.10. Однажды у меня появилась блестящая идея посмотреть, смогу ли я установить стек LAMP. У меня были проблемы с установкой MySQL 5.0. Я не помню ошибки, но с тех пор все попытки запустить update-manager, synaptic или apt-get завершаются с ошибкой о mysql-server-5.0: «Пакет находится в очень плохом несовместимом состоянии».

Я пробовал apt-get remove mysql-server-5.0и тоже, installно без удачи. Оба терпят неудачу с той же самой ошибкой ниже. Как я могу это исправить?

$ sudo apt-get remove mysql-server-5.0 Чтение списков пакетов ... Готово Построение дерева зависимостей  Чтение информации о состоянии ... Готово Следующие пакеты были установлены автоматически и больше не требуются: dhcdbd libisc32 Используйте «apt-get autoremove», чтобы удалить их. Следующие пакеты будут удалены: MySQL-сервер 5.0 0 обновлено, 0 вновь установлено, 1 для удаления и 164 не обновлено. 1 не полностью установлен или удален. После этой операции освободится 85,4 МБ дискового пространства. Вы хотите продолжить [Да / Нет]?  dpkg: ошибка обработки mysql-server-5.0 (--remove): Пакет находится в очень плохом несовместимом состоянии - вы должны переустановите его перед попыткой удаления. При обработке возникли ошибки: MySQL-сервер 5.0 E: Подпроцесс / usr / bin / dpkg вернул код ошибки (1) 
15
Рассмотреть возможность использования
 для вывода на экран, где подсветка синтаксиса не требуется. 
John Oxley 15 лет назад 0

7 ответов на вопрос

19
Robin Green

Ни один из других ответов не работал для меня на Maverick.

В моем случае я обнаружил, что это работает:

sudo rm /var/lib/dpkg/info/flashplugin-nonfree.prerm  sudo dpkg --remove --force-remove-reinstreq flashplugin-nonfree 

(заменив «flashplugin-nonfree» именем сломанного пакета, и заменив «prerm» на тип сценария, который не удался - в моем случае это был «postrm», сценарий после удаления.)

И они говорят, что Ubuntu прост в использовании! ворчать ворчать

--purge лучше отбросить сломанные deps stepancheg 13 лет назад 0
Я часами искал решение похожей проблемы, и это единственное, что сработало. Спасибо. LukeGT 12 лет назад 1
6
nagul

У меня была точно такая же проблема с установкой MySQL. Вы должны очистить пакет. Простое удаление пакета не удаляет файлы конфигурации, которые были с ним.

Также я собираюсь сослаться на mysql-server-5.0, но понимаю, что есть пакет - обертка mysql-server, который всегда указывает на последнюю версию. т.е. если вы попросите установить mysql-server, apt-get должен сообщить вам, что это зависит от mysql-server-5.0 и установить оба. Если у вас есть пакет mysql-server в системе, вы должны убедиться, что он пропал, прежде чем пытаться переустановить.

  • Убедитесь, что сервер mysql (mysqld) не работает. Если это так, опустите его:

    sudo /etc/init.d/mysqld stop

  • Проверьте, зависят ли какие-либо пакеты от mysql-server-5.0:

    sudo apt-cache rdepends mysql-server-5.0

    Если они это сделают, вам нужно будет использовать параметр --force для удаления.

  • Очистить пакет (включая опцию --force, в зависимости от # 2)

    sudo apt-get --purge удалить --force mysql-server-5.0

  • Убедитесь, что файлы установщика также очищены, запустив

    sudo apt-get автоочистка
    sudo apt-get автоочистка

  • Установите серверный пакет снова

    sudo apt-get установить mysql-server-5.0

Надеюсь, это должно исправить вашу проблему. Тем не менее, пакет все еще может быть поврежден, если вы внесли какие-либо изменения в файлы, полученные из пакета mysql-common .

mysql-common - это базовый пакет, используемый как клиентскими, так и серверными компонентами. Если что-то не работает, попробуйте переустановить этот пакет. Там определенно будут пакеты, которые зависят от этого; проверьте используя # 2 выше. Очистите mysql-сервер перед переустановкой mysql-common . Также не забудьте переустановить mysql-common, иначе ваша система будет сильно повреждена.

1
innaM

Возможно, вы захотите aptitudeпопробовать, что лучше обрабатывает зависимости:

sudo aptitude remove mysql-server-5.0 
Ошибка здесь в `dpkg`, поэтому я не думаю, что" aptitude "обязательно будет лучше. Не поймите меня неправильно, я за «aptitude», а не «apt-get», но в конце концов они оба передают настоящую суету «dpkg» (которую вы будете счастливы). чтобы услышать изначально был реализован в Perl). Telemachus 15 лет назад 0
;-) Я просто подумал, что стоит попробовать. innaM 15 лет назад 0
0
John Oxley

Пытаться

sudo dpkg -i reconfigure mysql-server-5.0 sudo apt-get remove --force mysql-server-5.0 

Если это другой пакет, который сломан, попробуйте apt-get remove --forceэтот пакет.

0
Telemachus

Имеющаяся там dpkgошибка говорит о том, что проблема возникает, когда dpkgвы пытаетесь фактически удалить пакет. (В конце дня, apt-getи Synapticтому подобное, сдать фактическую работу dpkg.)

Вы пытались делать именно то, что говорится в сообщении, и сначала переустанавливать ?

apt-get install --reinstall mysql-server-5.0

Как бы глупо это не звучало, если dpkgзадыхается во время процесса удаления (потому что какой-то файл, который он должен удалить, пропал в промежутке времени), то переустановка и последующее удаление могут иногда помочь. Убедитесь, что mysqlон не запущен, прежде чем пытаться установить или удалить его, как предполагает Нагул .

0
Jaime Soriano

dpkg -r --force-remove-reinstreq <package> удаляет пакет, не проверяя, требует ли он переустановки.

После этого вы сможете переустановить пакет с вашим предпочтительным менеджером пакетов.

0
Stéphan Champagne

У меня была эта проблема с почтальоном. Удален /etc/init.d/mailman с

rm /etc/init.d/mailman 

починил это :)

Похожие вопросы