Как удалить все пакеты, которые соответствуют определенному шаблону?

Я хочу удалить libreoffice. Эта программа состоит из около трех десятков модулей. В идеале их можно удалить с помощью:

aptitude remove libreoffice3.6* libreoffice-debian-menus libobasis3.6-*

, но это не с

Couldn't find any package whose name or description matched "libreoffice3.6*"

и т. Д.

Как мне удалить набор пакетов по шаблону?

PS: я доволен ответами с использованием dpkg или apt, тоже

26
задан 31 March 2014 в 06:36

4 ответа

  1. Использовать apt-get, нет aptitude, и используйте регулярные выражения.

  2. В регулярном выражении, . имейте в виду любой символ, и * нуль средств или больше раз. Так выражение libreoffice.* соответствия любое имя пакета, содержащее строку libreoffice, сопровождаемый любым количеством символов.

  3. Окружите регулярное выражение одинарными кавычками для предотвращения оболочки, интерпретирующей звездочку. (Если Вам назвали файл libreoffice.example например, в Вашем текущем каталоге, оболочка заменила бы libreoffice.* с libreoffice.example, таким образом, необходимо использовать одинарные кавычки для остановки этого поведения.)

Результат:

sudo apt-get remove 'libreoffice.*'
26
ответ дан 31 March 2014 в 06:36

Альтернатива:

dpkg -l | grep libreoffice | awk '{print $2}' | xargs -n1 echo

Это перечислит все пакеты, соответствующие libreoffice. Когда вы подтвердите, что это все, от кого вы хотите избавиться, выполните следующую команду ... с осторожностью :

dpkg -l | grep libreoffice | awk '{print $2}' | xargs -n1 sudo apt-get purge -y

  1. Получите в системе список всех установленных пакетов.
  2. . Фильтр покажет только те из них, которые соответствуют libreoffice
  3. .
  4. Запустите команду очистки для каждого из этих пакетов
0
ответ дан 31 March 2014 в 06:36

Aptitude поддерживает глобальные шаблоны, и еще одно довольно классное совпадение выглядит так:

aptitude remove '?and(?name(libreoffice), name(3.6), ~i)' libreoffice-debian-menus

Это будет соответствовать любому пакету с его именами libreoffice и 3.6, а также установленному (это что означает ~i.

0
ответ дан 31 March 2014 в 06:36

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

sudo apt remove libreoffice-l10n-{bg,ca,cs,da,de,en-za,es,fr,hu,id,ja,ko,nb,nl,pl,pt,ru,sv,th,tr,uk,vi,zh-cn,zh-tw}

Я использовал эту команду, чтобы удалить все языковые пакеты, которые я никогда не использую. Да, с помощью регулярного выражения вы можете указать, какое из них оставить, а остальные удалить. В любом случае, мне это нравится, потому что его легко запомнить, и он также работает со многими командами bash.

0
ответ дан 25 October 2020 в 19:03

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

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