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

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

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

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

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'

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

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.


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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.