Как удалить только ранее удаленные пакеты? [дубликат]

На этот вопрос уже есть ответ здесь:

У меня есть список пакетов в моей системе, которые были установлены и удалены снова, но не очищены, т.е. все еще есть много файлов и т. д., лежащих вокруг.

Вывод dpkg --get-selections | grep deinstall перечисляет около 85 различных пакетов, которые мне не нужны и которые я хочу полностью удалить.

Итак, мой короткий вопрос, который я решил наконец задать после экспериментов, привел к этой проблеме :

Как полностью очистить ранее установленные пакеты, которые являются уже удален?

Повторная установка и последующая очистка, конечно, не вариант.

18
задан 13 April 2017 в 05:24

5 ответов

Я просто нашел следующую команду, которая работала:

sudo apt-get purge $(dpkg -l | grep '^rc' | awk '{print $2}')
28
ответ дан 23 November 2019 в 02:05

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
15
ответ дан 23 November 2019 в 02:05

Если Вы просто хотите произвести чистку целого списка, Вы можете использовать эту команду; это выполнит пробный прогон, в случае, если существенные пакеты будут удаленными, который Вы, вероятно, не хотите происходить:

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
3
ответ дан 23 November 2019 в 02:05

Мои пятьдесят центов, простая острота:

Первый тест с

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]
2
ответ дан 23 November 2019 в 02:05

Я спросил это сам несколько дней назад. Придумал

apt-get purge $(dpkg -l | awk 'BEGIN{ORS=" "} /^rc/{ print $2}')

, удаленные, но не очищенные пакеты появляются в продукции dpkg -l с rc вначале. awk выбирает вторую колонку иначе название пакета и печатает их разделенный пробелом.

1
ответ дан 23 November 2019 в 02:05

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

Похожие вопросы: