Я хочу удалить 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
решение1
Используйте
apt-get
orapt
, (notaptitude
) и используйте закрепленные регулярные выражения.В регулярном выражении
.
означает любой символ, а*
означает ноль или более раз. Таким образом, выражениеlibreoffice.*
соответствует любому имени пакета, содержащему строкуlibreoffice
, за которой следует любое количество символов. Вы должны привязать регулярное выражение к^
(для соответствия началу строки) или$
(для соответствия концу строки) или к обоим, в противном случае регулярное выражение не будет распознано APT.Заключите регулярное выражение в одинарные кавычки, чтобы оболочка не интерпретировала звездочку.
Пример:
Чтобы удалить все пакеты с именем, начинающимся с libreoffice
, выполните:
sudo apt remove '^libreoffice.*$'
решение2
Альтернатива:
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
Идея:
- Заставьте систему вывести список всех установленных пакетов
- Фильтр, чтобы показать только те, которые соответствуют
libreoffice
- Фильтр для отображения только столбца с названием пакета
- Запустите команду очистки для каждого из этих пакетов.
решение3
Aptitude поддерживает глобальные шаблоны и другие довольно интересные соответствия, например:
aptitude remove '?and(?name(libreoffice), name(3.6), ~i)' libreoffice-debian-menus
Это будет соответствовать любому пакету, в имени которого есть libreoffice
и 3.6
который также установлен (именно это и означает) ~i
.
решение4
Когда вам нужно удалить много файлов с одинаковым префиксом, я нахожу очень удобным раскрытие скобок:
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.