На этот вопрос уже есть ответ здесь:
У меня есть список пакетов в моей системе, которые были установлены и удалены снова, но не очищены, т.е. все еще есть много файлов и т. д., лежащих вокруг.
Вывод dpkg --get-selections | grep deinstall
перечисляет около 85 различных пакетов, которые мне не нужны и которые я хочу полностью удалить.
Итак, мой короткий вопрос, который я решил наконец задать после экспериментов, привел к этой проблеме :
Как полностью очистить ранее установленные пакеты, которые являются уже удален?
Повторная установка и последующая очистка, конечно, не вариант.
Я просто нашел следующую команду, которая работала:
sudo apt-get purge $(dpkg -l | grep '^rc' | awk '{print $2}')
dpkg --get-selections | grep deinstall
создает список имен пакета с Word «115»:
$ dpkg --get-selections | grep deinstall
account-plugin-windows-live deinstall
debarchiver deinstall
flashplugin-installer deinstall
...
, прося awk
печатать только первую область мы добираемся:
$ dpkg --get-selections | awk '$2 == "deinstall" {print $1}'
account-plugin-windows-live
debarchiver
flashplugin-installer
...
Теперь, когда у нас есть список пакетов, xargs
, позволит нам накормить список пакетов к команде (или команды, если список будет достаточно длинен):
dpkg --get-selections | awk '$2 == "deinstall" {print $1}' | xargs sudo apt-get purge --dry-run
, Когда Вы будете довольны моделируемыми результатами, удалите --dry-run
из эти apt-get
команда.
Рид:
for i in awk xargs apt-get ; do
man $i
done
Если Вы просто хотите произвести чистку целого списка, Вы можете использовать эту команду; это выполнит пробный прогон, в случае, если существенные пакеты будут удаленными, который Вы, вероятно, не хотите происходить:
dpkg --get-selections | sed -n 's/\tdeinstall$//p' | xargs sudo apt-get --dry-run purge
, Если никакой существенный пакет не будет удаленным, безопасно управлять фактической командой:
dpkg --get-selections | sed -n 's/\tdeinstall$//p' | xargs sudo apt-get --yes purge
sed -n 's/\tdeinstall$//p'
: отпечатки только выравнивают в stdin
, куда табулирование, сопровождаемое deinstall
последовательность, могло быть удалено из конца линии; это имеет эффект печати только линий, содержащих табулирование, сопровождаемое deinstall
последовательность в конце линии без фактического табулирования, сопровождаемого эти deinstall
последовательность в конце линии xargs sudo apt-get --yes purge
: проходы каждая линия в stdin
как аргумент sudo apt-get --yes purge
Мои пятьдесят центов, простая острота:
Первый тест с
dpkg --get-selections | awk '$2=="deinstall" {system("sudo apt-get --dry-run purge "$1)}'
и до свидания
dpkg --get-selections | awk '$2=="deinstall" {system("sudo apt-get -y purge "$1)}'
<час> Пример
% dpkg --get-selections | grep deinstall
nginx-common deinstall
% dpkg --get-selections | awk '$2=="deinstall" {system("sudo apt-get -y purge "$1)}'
% dpkg --get-selections | grep deinstall
[no output]
Я спросил это сам несколько дней назад. Придумал
apt-get purge $(dpkg -l | awk 'BEGIN{ORS=" "} /^rc/{ print $2}')
, удаленные, но не очищенные пакеты появляются в продукции dpkg -l
с rc
вначале. awk
выбирает вторую колонку иначе название пакета и печатает их разделенный пробелом.