LINUX.ORG.RU

Dpkg


6

1

Всего сообщений: 1

Удаление deb-пакетов с некорректными pre- и post-скриптами

Иногда возникает ситуация (особенно на машине разработчика/мейнтейнера), когда deb-пакет нельзя ни корректно доустановить, ни удалить, поскольку сценарий prerm (postrm, preinst, postinst) содержит ошибки. Ключи в apt и dpkg, посвящённые сломанным пакетам (--force-remove-*, -f) тоже могут не помочь, поскольку в первую очередь разруливают битые зависимости между пакетами.

В этом случае эффективным может оказаться «лечение» на низком уровне. Наиболее радикальный метод предлагался на опеннете: просто зайти в /var/lib/dpkg/info и удалить все файлы package-name.*, после чего удалить упоминания о пакете из /var/lib/dpkg/status (подробности по ссылке). Однако в этом случае удалится лишь метаинформация о пакете, а вот хвосты в /usr, /etc и др. останутся, как отмечали в комментариях.

Мне помог похожий, но чуть более тонкий способ. Надо зафиксировать, какая именно ошибка возникает в сценарии и в каком именно сценарии (для корректного удаления в первую очередь нас интересуют .prerm и .postrm).

Далее мы заходим в /var/lib/dpkg/info и просто исправляем package-name.prerm или package-name.postrm так, чтобы он отработал корректно. Например, если в .prerm удалялся несуществующий каталог без проверки на его существование, стираем или комментируем команду удаления.

После этого, как обычно, сносим пакет средствами dpkg -r.

Перемещено hobbit из development

 , ,

hobbit
()