Répertorie tous les paquetages RPM installés à partir du repo “X”

44

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")?

Lorin Hochstein
la source

Réponses:

45

CentOS / RHEL / Fedora 22 ou version antérieure

yum list installed | grep @epel

Fedora 23 ou plus tard

dnf list installed | grep @epel
David Schwartz
la source
8
Cela ne fonctionnera pas. Yum produira des lignes sur le tuyau qui seront rompues si elles deviennent trop longues. Donc, la contribution de grep consiste principalement en une ligne par paquet, mais il pourrait s'agir de deux lignes. Yum pourrait passer "whizbanger.x86_64 ___ 3.8.4-2.el6 _______________ @epel". (Imaginez les traits de soulignement sous forme d'espaces.) Le "@epel" se trouve sur la ligne suivante de l'entrée que grep voit. Donc, grep va afficher cette ligne avec rien d'autre que "@epel" mais pas la ligne précédente avec le nom du paquet.
Todd Walton
Vous devrez peut-être exécuter ces commandes en tant que root jusqu'à ce que bugzilla.redhat.com/show_bug.cgi?id=1525645 soit corrigé.
proski
la commande yum ne semble pas fonctionner si l'un des dépôts a des problèmes. J'avais besoin de cette liste pour voir si je voulais désactiver le repo avec des problèmes.
Jayen
@ Todd Watson Je sais, c'est un bidouillage, mais qu'en est-il "exportation colonnes = 999 miam ..."
Massimo
Est-ce que ça marche, Massimo? Ce serait une bonne solution de contournement. J'ai aussi trouvé cette question sur Unix StackExchange: unix.stackexchange.com/questions/308731/…
Todd Walton
17

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.

Joli imprimé

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 egrepougrep -e

yumdb search from_repo REPOID* |egrep -v '(from_repo|^$)'

list_ALL_AVAILABLE_from_repo

Pour répertorier tous les packages disponibles dans un référentiel spécifié, procédez comme suit:

repoquery -a --repoid=REPONAME
ILMostro_7
la source
Juste une note de côté: Pour lister tous les paquets d'un repoquery -qa --repoid=REPONAME
dépôt
2
C'est aussi une excellente réponse. La sortie est plus longue que la réponse acceptée, mais elle est formatée de manière plus agréable.
Routhinator
Peut être simplifié repoquery -a --repoid=REPONAMEcar, selon l' -qoption de la page de manuel, la compatibilité avec rpmquery ne fait rien.
Rockallite
@Rockallite a raison; pour DNF, le -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.
ILMostro_7
11
dnf repo-pkgs <repoid> list installed

Remarques

La commande ci-dessus utilise DNF pour répertorier les packages installés à partir du <repoid>. Note repo-pkgsest juste un alias de repository-packages.

Des manpages:

man dnf | grep "repository-packages.*list.*installed" -A 1

Lectures complémentaires:

man dnf
Peque
la source
3

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 repoquerydu package yum-utilsest 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'
Franklin Piat
la source
2

RHEL Server 7.5 (Maipo)

yum repo-pkgs <repoid> list installedpeut ê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 epelsortie:

# 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
alexandrul
la source
1

Vous pouvez vérifier l'en- Vendortê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- Vendortête de votre référentiel est unique parmi les différents référentiels.

Andcoz
la source
3
Il n'y a pas de mappage univoque entre le fournisseur et le dépôt, et dans certains cas, la chaîne du fournisseur est vide.
Lorin Hochstein
1

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.

derberlinersmurf
la source