Comment puis-je obtenir une liste de tous les packages RPM installés sur mon système à partir d'un dépôt particulier (par exemple, "epel")?
Comment puis-je obtenir une liste de tous les packages RPM installés sur mon système à partir d'un dépôt particulier (par exemple, "epel")?
Réponses:
yum list installed | grep @epel
dnf list installed | grep @epel
A partir de RHEL6, comme suggéré dans cette réponse stackoverflow , il existe une méthode plus complète pour ce faire avec yumdb
:
yumdb search from_repo REPOID*
Le repoid prend des cartes sauvages.
Si nous devons tricher et rediriger la sortie, nous pouvons également obtenir un effet de joli imprimé. En voici une qui utiliseawk
yumdb search from_repo REPOID* |awk -F"\n" '{ RS=""; print $1 }'
Utiliser egrep
ougrep -e
yumdb search from_repo REPOID* |egrep -v '(from_repo|^$)'
Pour répertorier tous les packages disponibles dans un référentiel spécifié, procédez comme suit:
repoquery -a --repoid=REPONAME
repoquery -qa --repoid=REPONAME
repoquery -a --repoid=REPONAME
car, selon l' -q
option de la page de manuel, la compatibilité avec rpmquery ne fait rien.
-qa
échoue réellement. Je ne peux pas voter le commentaire à cause de la suppression de la votation précédente :( J'actualise la réponse pour refléter cela.
dnf repo-pkgs <repoid> list installed
La commande ci-dessus utilise DNF pour répertorier les packages installés à partir du <repoid>
. Note repo-pkgs
est juste un alias de repository-packages
.
Des man
pages:
man dnf | grep "repository-packages.*list.*installed" -A 1
Lectures complémentaires:
man dnf
La production de Grepping yum est le moyen le plus évident:
yum list installed | grep @epel
Cependant, vous ne pouvez pas afficher de propriétés de packages supplémentaires et il est difficile d'analyser avec un script. L'outil repoquery
du package yum-utils
est l'outil, mais il n'est pas installé par défaut.
repoquery -a --installed --qf "%{ui_from_repo} %{name}" | grep '^@epel'
et un exemple plus complexe:
repoquery -a --installed --qf "%-20{ui_from_repo} %-30{name} %-7{arch} %{epoch}:%-12{version} %-4{release}" | grep '^@epel'
yum repo-pkgs <repoid> list installed
peut être utilisé pour récupérer les mêmes informations que yumdb search from_repo <repoid>
, mais dans un format différent.
# yum help repo-pkgs
repo-pkgs <repoid> <list|info|install|remove|upgrade|reinstall*|remove-or-*> [pkg(s)]
Treat a repo. as a group of packages, so we can install/remove all of them
aliases: repo-packages, repository-pkgs, repository-packages
Exemples de epel
sortie:
# yumdb search from_repo epel
htop-2.2.0-1.el7.x86_64
from_repo = epel
supervisor-3.1.4-1.el7.noarch
from_repo = epel
# yum repo-pkgs epel list installed
Installed Packages
htop.x86_64 2.2.0-1.el7 @epel
supervisor.noarch 3.1.4-1.el7 @epel
Vous pouvez vérifier l'en- Vendor
tête des RPM installés.
Cet exemple répertorie tous les packages du référentiel VideoLAN :
rpm -q -a --qf "%{Name}:%{Vendor}\n" \
| grep -F ":VideoLAN Project (http://www.videolan.org)"
De toute évidence, vous devez déterminer si l'en- Vendor
tête de votre référentiel est unique parmi les différents référentiels.
Pour les personnes qui veulent juste trouver les référentiels manquants:
yum list installed | awk '{print $3}' | sort | uniq
Cela devrait renvoyer tous les référentiels sur lesquels vous avez installé les paquets.