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

15

У меня 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)
spoulson
источник
Попробуйте использовать <pre> для вывода на экран, когда подсветка синтаксиса не нужна.
Джон Оксли

Ответы:

19

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

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

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
1
Я часами искал решение похожей проблемы, и это единственное, что сработало. Спасибо.
LukeGT
6

У меня была точно такая же проблема с установкой 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

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

sudo aptitude remove mysql-server-5.0
InnaM
источник
Ошибка здесь dpkg's, так что я не думаю, что aptitudeбудет обязательно лучше. Не поймите меня неправильно, я все aptitudeкончил apt-get, но в конце концов, они оба передают настоящую мелочь dpkg(которую вы будете рады услышать, изначально реализованной в Perl).
Телемах
;-) Я просто подумал, что стоит попробовать.
INMAM
0

Пытаться

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

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

Джон Оксли
источник
0

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

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

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

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

Телемах
источник
0

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

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

Хайме Сориано
источник
0

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

rm /etc/init.d/mailman

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

Стефан Шампанское
источник