Bien joué. Une explication pour faire comprendre la ligne de tobi1canobe:
rpm -qa : on interroge la base des rpm installés
--qf : on active le queryformat en d'autres termes on affine les options d'interrogation.
"%{NAME} %{VENDOR}\n": on ressort les valeurs des tags NAME (nom du paquetage) et VENDOR (fournisseur du paquetage)
\n: un petit saut de ligne délicat dans les sorties
| grep : le résultat de la requête précédente est passé à grep
-vE "Fedora Project|Red Hat|rpm.livna.org" : -v inverse le sens de la recherche; en d'autres termes,on va rechercher les chaînes de caractères qui ne contiennent pas "Fedora Project" ou "Red Hat" ou "rpm.livna.org". -E force grep à se comporter comme egrep c'est à dire à interpréter les paramètres passés ("Fedora .....") comme des expressions régulières. En l'occurrence, le "|" sera interprété comme un "ou" et non comme un simple caractère d'un motif à rechercher
| awk '{print $1}' : le résultat du filtre grep (qui consiste en deux chaînes de caractères par ligne soit le nom du paquetage et le fournisseur, séparées par un blanc, est passé à awk qui en extrait la première chaîne.
Ce premier enchaînement de commandes permet ainsi d'extraire de la base des rpm installés le nom de tous les rpm dont le nom du fournisseur ne correspond pas à Fedora Project ou Red Hat ou rpm.livna.org.
$(rpm -qa --qf "%{NAME} %{VENDOR}\n" | grep -vE "Fedora Project|Red Hat|rpm.livna.org" | awk '{print $1}'): on définit une variable qui stocke le résultat de cette enchaînement.
yum list $(rpm -qa --qf "%{NAME} %{VENDOR}\n" | grep -vE "Fedora Project|Red Hat|rpm.livna.org" | awk '{print $1}'): on soumet cette variable comme paramètre à yum list , qui va extraire des informations pour chacun de ces noms de paquetages
yum list $(rpm -qa --qf "%{NAME} %{VENDOR}\n" | grep -vE "Fedora Project|Red Hat|rpm.livna.org" | awk '{print $1}') | grep -v lvn : et on soumet ce résultat à grep qui va faire apparaître tous les résultats du yum list qui ne comprennent pas le motif "lvn" c'est à dire un motif qui identifie livna.
Pourquoi ce dernier filtre alors que la première recherche grep avait incorporé un motif "rpm.livna.org"? Parce que tous les paquetages livna ne comprennent pas un champ "VENDOR" rempli par le motif "rpm.livna.org". Exemple: libdca
]# rpm -q libdca --qf "%{VENDOR}\n"
(none)
Merci donc à tobi1canobe. Le format de la requête servira utilement de base de départ pour les apprentis de la ligne de commandes et pourra ainsi évoluer au gré des besoins.
Une solution plus simple, pour paresseux, consiste à utiliser l'excellent gestionnaire de dépendances avancées smart ... Mais c'est une autre affaire.