À l'aide de zypper, comment puis-je supprimer tous les packages installés à partir d'un référentiel spécifique?

10

Supposons que j'ai ajouté un référentiel à l'aide de zypper ar. Ensuite, je suis allé installer plusieurs packages à partir de ce référentiel, mais maintenant je veux les supprimer tous.

Existe-t-il une commande qui me permet de supprimer tous les packages que j'ai installés uniquement à partir de ce référentiel spécifique?

Trent Bing
la source

Réponses:

7

Je pense qu'il n'y a pas une telle commande. Vous pouvez répertorier les packages d'un référentiel spécifique:

zypper search --installed-only --repo devel:tools

ou tous les packages orphelins si vous avez déjà supprimé ce référentiel:

zypper packages --orphaned

Ensuite, vous pouvez essayer de cutregrouper les noms à partir de la sortie et de les transmettre zypper removesi cela en vaut la peine.

marcin
la source
Mon système openSuSE 12.3 n'a pas l' --orphanedoption, mais cela pourrait fonctionner zypper packages -i -R:: il répertorie le package installé dans l'ordre inverse du référentiel.
Jeroen Wiert Pluimers
2
--orphaneda été ajouté dans zypper 1.9.2 ( github.com/openSUSE/zypper/issues/34 )
marcin
1

Vous pouvez utiliser une combinaison de zypper search, awket xargsde supprimer tous les paquets à partir d' un référentiel. Par exemple:

zypper se --repo openSUSE-Tumbleweed-Debug --installed | awk '/^i(\+|\s)/ {print $3}' | xargs sudo zypper rm
sebix
la source
awk '/^i(\+|\s)/ {print $3}'pour correspondre à tous les packages installés (i ou i +)
Mesco
@Mesco zypper lui-même ne devrait imprimer que les packages installés lors de l'utilisation --installed.
sebix
à droite, en utilisant -iou --installed-only. Mais j'ai aussi recherché i et i + au début pour sauter les premières lignes ( Loading repository data...). Il y a peut-être de meilleures méthodes, pour sauter les 5 premières lignes, mais si vous utilisez déjà l'expression régulière ...;)
Mesco
peut-être que j'utilise une version différente de zypper (1.14.4) mais son homme dit que la commande devrait être se [options] [query]pour que votre solution ne fonctionne pas.
Mesco
Ah, maintenant je comprends votre inquiétude. J'ai mis à jour la réponse. À propos de la syntaxe de recherche: je n'utilise que des options et pas de requête, donc l'ordre est correct je pense.
sebix