Как удалить все программы из пакета?

Когда вы устанавливаете такую ​​программу, как postgresql, она устанавливает несколько программ для своей последней версии.

После установки, как удалить все эти пакеты? потому что с помощью

apt-get remove postgresql

удаляет только этот головной пакет

3 ответа

Решение

Как apt-get autoremove (предложенный Аароном) удалит все "вспомогательные пакеты", от которых, кажется, больше ничего не зависит, иногда вы хотите оставить некоторые из них по той или иной причине. Так что, если это касается вас, другой возможностью будет:

$(apt-cache depends postgresql|awk '{print "sudo apt-get remove "$NF}')

Используя Bash в качестве оболочки, это в основном сделает следующее:

  1. apt-cache depends postgresql будет перечислять все пакеты, от которых зависит postgresql, включая сам postgresql. Но каждая строка будет выглядеть depends on: <package> - так что мы направляем вывод на...
  2. awk '{print "sudo apt-get remove "$NF}' который будет брать последнее слово в каждой строке (которое является именем пакета) и печатает его после того, как ему предшествует наша предполагаемая команда: sudo apt-get remove (Вы могли бы также использовать apt-get purge вместо).
  3. наконец, используя $() Конструкция, мы советуем Bash интерпретировать вывод как команду для выполнения.

В качестве альтернативы вы можете заменить 3-й шаг и вместо этого перенаправить вывод в файл:

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

Затем проверьте файл, при необходимости внесите некоторые изменения (например, закомментируйте / удалите строки, в которых вы хотите сохранить пакет) и, наконец, выполните сценарий, используя

bash pg_remove.sh

Теперь у вас есть много возможностей для выбора:)

РЕДАКТИРОВАТЬ: При проверке с более сложными метапакетами, такими как lubuntu-desktop, вышеприведенные утверждения необходимо уточнить:

apt-cache depends <packageName>|grep "Depends on"|awk '{print "sudo apt-get remove "$NF}'

grep необходимо ограничить результат зависимостями (и пропустить рекомендации и т. д.).

ВАЖНО: Вы должны использовать это только для метапакетов!!! в противном случае вы можете получить пустой диск (например, postgresql-9.1 зависит от libc6, а удаление libc6, безусловно, будет иметь неприятные последствия, так как это необходимо для многих пакетов).

Так что будьте осторожны, и лучше сначала перенаправить в файл (как объяснено) и изучить перед выполнением.

Нажмите Alt+Ctrl+T и запустите:

sudo apt-get autoremove

Эта команда удаляет пакеты, которые больше не нужны, что связано с удалением пакета (такого как postgresql), который зависит от них.

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

sudo apt-get autoremove --purge

Чтобы очистить еще дальше, используйте следующее:

sudo apt-get install deborphan sudo apt-get autoremove --purge
deborphan

Просто выполните следующие команды:

sudo apt-get install deborphan
sudo apt-get autoremove --purge postgresql
sudo apt-get autoremove --purge `deborphan`
Другие вопросы по тегам