Ошибка удалить пакет, который не установлен

Я всегда получаю уведомление, что: Ubuntu столкнулся с внутренней ошибкой. После проверки оказывается, что пакет не полностью установлен или удален libapache2-mod-wsgi-py3,

Когда я бегу: sudo apt-get upgrade Я получил:

dpkg: error processing package libapache2-mod-wsgi-py3 (--configure):
 subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
 libapache2-mod-wsgi-py3
E: Sub-process /usr/bin/dpkg returned an error code (1)

Я пытался использовать sudo apt autoremove, Но не полностью удалил это, я также сделал: sudo dpkg --remove libapache-mod-wsgi-py3Когда я пытаюсь удалить пакет, я получаю это:

dpkg: warning: ignoring request to remove libapache-mod-wsgi-py3 which isn't installed

Но все еще с той же ошибкой. Как это исправить??

1 ответ

Решение

Шаг 1: Остановить запуск службы apache2

Перед удалением введите эту команду в Терминал / другой CLI:

sudo systemctl stop apache2.service

Шаг 2. Удалите двоичные файлы пакета, общесистемные файлы конфигурации и потерянные зависимости

Чтобы полностью удалить сам пакет, а также его общесистемные файлы конфигурации и все зависимости, которые требовались пакету, но больше не нужны, выполните:

sudo apt-get purge --auto-remove <packagename>

Объяснение: purge делает то же самое, что и apt-get remove --purge; он избавляется от самого пакета и связанных файлов конфигурации. Это как на шаг выше apt-get remove, который удаляет только двоичные файлы. --auto-remove делает то же самое, что и apt-get autoremove; это избавляет от осиротевших зависимостей.

Извините, я не дал вам эту конкретную команду для использования в комментариях, но совершенно нормально делать все, используя отдельные команды, а не одну команду, поскольку выполняются те же действия. В вашем конкретном случае, так как вы уже сделали remove --purge, вы можете просто выполнить автоматическое удаление с помощью sudo apt autoremove и это должно позаботиться о том, что удалить --purge не удалил. Способ однократной записи немного быстрее.

Кроме того, если вы хотите быть избирательными в отношении того, какие зависимости удаляются, вы можете избавиться от --auto-remove флаг (выполнение sudo apt-get purge <packagename>) и следуйте инструкциям, которые я нашел в этом удивительном ответе, чтобы легко создать своего рода деинсталлятор зависимости. Следующая команда сначала выводит список всех зависимостей пакета, а затем передает этот список по отдельным apt-get remove Команды, которые все отправляются в сценарий оболочки, который вы можете открыть в текстовом редакторе и изменить при необходимости. Затем вы просто запускаете сценарий оболочки, как только вы довольны им. Команда:

apt-cache depends <packagename>|awk '{print "sudo apt-get remove "$NF}' >pg_remove.sh

Файл pg_remove.sh сохраняется в вашем домашнем каталоге (очевидно, вы можете добавить путь перед именем выходного файла, если хотите сохранить его в другом месте). Для запуска скрипта выполните bash pg_remove.sh (опять же, если ваш выходной файл не находится в вашем домашнем каталоге, измените эту команду, указав путь к его местоположению).

Шаг 3: Удалить пользовательские файлы конфигурации

Затем вы должны вручную удалить пользовательские файлы конфигурации, хранящиеся в вашем домашнем каталоге. Они могут находиться в их собственном каталоге и / или в ~/.config, ~/.cache, ~/.local.

Сначала найдите файлы, которые содержат имя пакета в ~/.config и удали их. Ты можешь использовать ls -a ~/.config или же ls -A ~/.config чтобы увидеть все содержимое вашего дома, в том числе скрытые файлы / папки. Если вы используете Nautilus для этого, убедитесь, что вы включили опцию для просмотра скрытых файлов (View>Show Hidden Files). Затем удалите их, используя rm или Nautilus.

Также найдите в своей домашней папке каталог с именем пакета (или что-то похожее на имя пакета - оно может не совпадать). Вероятно, он будет скрыт по умолчанию и, вероятно, начнется с "."- если он существует. Я не очень разбираюсь в apache, поэтому не уверен, будет ли там этот каталог или как он будет выглядеть. В любом случае, если он существует, удалите его тоже!

Дополнительно, проверьте в ~/.cache а также ~/.local/share для каталога, названного в честь пакета.

Ссылки на шаги 2 и 3: Как вы можете полностью удалить пакет? Как правильно полностью удалить приложение? Как удалить файлы конфигурации полностью

Возможная будущая переустановка

Этот пакет может иметь библиотеки, которые вам действительно нужны в будущем, и вам может потребоваться переустановить его. Ubuntu поставляется с установленной libapache2-mod-wsgi-py3, которая похожа на версию по умолчанию, поэтому я предполагаю, что она не может хорошо работать с любой версией Python, которую вы использовали. Если вы хотите узнать больше, проверьте вывод which python а также ps -fA | grep python... Если конфликт с версией Python действительно был проблемой, то этот вопрос и этот вопрос касаются того, как правильно установить mod-wgsi через pip (пакет pip installs - это нечто, называемое mod_wgsi).

Другие вопросы по тегам