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

Я хочу удалить 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
задан 18.05.2020, 07:58

3 ответа

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

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

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

  4. [1113 ]

    Результат:

    sudo apt-get remove 'libreoffice.*'
    
26
ответ дан 18.05.2020, 07:59

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

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

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

5
ответ дан 18.05.2020, 07:59

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

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. Запустите команду очистки для каждого из этих пакетов
6
ответ дан 18.05.2020, 08:00
  • 1
    Я думаю эти -n1, хорошо для echo, но необходимо удалить его из чистки; иначе порядок зависимости (зависеть от b, попытки удалить b сначала) мог бы повредить чистку. – acdx 18.05.2020, 08:00
  • 2
    Я могу дать Вам +1 теперь, Вы сделали его более безопасным:) – Aprillion 18.05.2020, 08:01
  • 3
    возможно, Вы могли предложить добавить -p опция так, чтобы xargs запросил подтверждение прежде, чем выполнить каждую команду, созданную, или сначала свериться echo вместо sudo apt-get purge – Ian Clelland 18.05.2020, 08:01
  • 4
    @Zanna -p помог бы, но это wouldn' t быть командой с одним выстрелом. Я действительно использовал echos для тестирования то, что я получал прежде, чем выполнить команду, таким образом, that' s стоящий рекомендации. – jathanism 18.05.2020, 08:02
  • 5
    Вашим решением является лучший I' ve найден до сих пор, спасибо. – johnharris85 18.05.2020, 08:02

Теги

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