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

20

Я хочу удалить 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 , тоже

    
задан Aaron Digulla 04.04.2013 в 09:18
источник

3 ответа

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

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

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

Результат:

sudo apt-get remove 'libreoffice.*'
    
ответ дан Flimm 04.04.2013 в 10:36
источник
3

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

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

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

    
ответ дан Braiam 31.03.2014 в 04:50
3

Альтернативой является

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

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

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

Идея:

  1. Получить систему для перечисления всех установленных пакетов
  2. Фильтр, чтобы отображать только те, которые соответствуют libreoffice
  3. Фильтр для отображения только столбца с именем пакета
  4. Запустите команду очистки в каждом из этих пакетов.
ответ дан aalaap 18.10.2016 в 07:28