Wie kann ich eine Liste aller RPM-Pakete abrufen, die von einem bestimmten Repository auf meinem System installiert wurden (z. B. "epel")?
Wie kann ich eine Liste aller RPM-Pakete abrufen, die von einem bestimmten Repository auf meinem System installiert wurden (z. B. "epel")?
Antworten:
yum list installed | grep @epel
dnf list installed | grep @epel
Ab RHEL6 gibt es, wie in dieser Stackoverflow-Antwort vorgeschlagen , eine gründlichere Methode, um dies zu tun yumdb
:
yumdb search from_repo REPOID*
Das Repoid akzeptiert Platzhalter.
Wenn wir die Ausgabe betrügen und pfeifen, können wir auch einen Pretty-Print-Effekt erzielen. Hier ist eine Verwendungawk
yumdb search from_repo REPOID* |awk -F"\n" '{ RS=""; print $1 }'
Mit egrep
odergrep -e
yumdb search from_repo REPOID* |egrep -v '(from_repo|^$)'
Zur Liste aller verfügbaren Pakete in einem bestimmten Repository zu tun:
repoquery -a --repoid=REPONAME
repoquery -qa --repoid=REPONAME
repoquery -a --repoid=REPONAME
weil laut Manpage- -q
Option für rpmquery-Kompatibilität nichts zu tun ist.
-qa
schlägt das eigentlich fehl. Ich kann den Kommentar nicht positiv bewerten, da ich ihn zuvor entfernt habe :( Ich aktualisiere die Antwort, um dies zu
dnf repo-pkgs <repoid> list installed
Der obige Befehl verwendet DNF, um die von der installierten Pakete aufzulisten <repoid>
. Hinweis repo-pkgs
ist nur ein Alias von repository-packages
.
Von den man
Seiten:
man dnf | grep "repository-packages.*list.*installed" -A 1
Weitere Lektüre:
man dnf
Die Ausgabe von "Grepping Yum" ist der offensichtlichste Weg:
yum list installed | grep @epel
Sie können jedoch keine zusätzlichen Paketeigenschaften anzeigen und es ist schwierig, sie mit einem Skript zu analysieren. Das Tool repoquery
aus dem Paket yum-utils
ist das Tool, es wird jedoch nicht standardmäßig installiert.
repoquery -a --installed --qf "%{ui_from_repo} %{name}" | grep '^@epel'
und ein komplexeres Beispiel:
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
kann verwendet werden, um die gleichen Informationen wie yumdb search from_repo <repoid>
, jedoch in einem anderen Format abzurufen .
# 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
Beispielausgaben epel
:
# 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
Sie können den Vendor
Header der installierten RPMs überprüfen.
In diesem Beispiel werden alle Pakete aus dem VideoLAN- Repository aufgelistet :
rpm -q -a --qf "%{Name}:%{Vendor}\n" \
| grep -F ":VideoLAN Project (http://www.videolan.org)"
Natürlich müssen Sie feststellen, ob der Vendor
Header Ihres Repositorys für verschiedene Repositorys eindeutig ist.
Für Leute, die nur fehlende Repositories finden wollen:
yum list installed | awk '{print $3}' | sort | uniq
Dies sollte alle Repositorys zurückgeben, von denen aus Sie Pakete installiert haben.