web-dev-qa-db-fra.com

Comment puis-je supprimer tous les paquets qui correspondent à un certain modèle?

Je veux désinstaller libreoffice. Ce programme comprend environ trois douzaines de modules. Idéalement, ils pourraient être supprimés avec:

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

mais cela échoue avec

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

etc.

Comment supprimer un ensemble de packages par modèle?

PS: Je suis heureux des réponses avec dpkg ou apt, aussi

25
Aaron Digulla
  1. Utilisez apt-get, pas aptitude, et utilisez des expressions régulières.

  2. Dans une expression régulière, . signifie n'importe quel caractère et * signifie zéro fois ou plus. Ainsi, l'expression libreoffice.* correspond à tout nom de package contenant la chaîne libreoffice, suivie d'un nombre quelconque de caractères.

  3. Entourez l'expression régulière de guillemets simples pour éviter que le shell interprète l'astérisque. (Si vous aviez un fichier nommé libreoffice.example par exemple dans votre répertoire actuel, le shell remplacerait libreoffice.* par libreoffice.example, vous devez donc utiliser des guillemets simples pour arrêter ce problème.)

Résultat:

Sudo apt-get remove 'libreoffice.*'
26
Flimm

Une alternative est:

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

Ceci listera tous les paquets correspondant à libreofficename__. Lorsque vous avez confirmé que vous souhaitez vous en débarrasser, exécutez la commande suivante ... avec prudence:

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

L'idée:

  1. Obtenez le système pour lister tous les paquets installés
  2. Filtre pour afficher uniquement ceux qui correspondent à libreofficename__
  3. Filtre pour afficher uniquement la colonne avec le nom du package
  4. Exécutez la commande de purge sur chacun de ces packages
5
aalaap

Aptitude supporte les patterns globaux, et un autre match plutôt cool ressemble à ceci:

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

Cela correspond à tous les paquets dont le nom est libreoffice and 3.6 et qui est également installé (c’est ce que signifie ~i.

5
Braiam