fragen stichworte

Woher weiß man, aus welchem ​​yum-Repository ein Paket installiert wurde?

Wie kann ich nach der Installation eines Pakets von yum (mit konfigurierten mehreren Repositorys) herausfinden, von welchem ​​Repository es installiert wurde?

Wenn ich yum info package-name (oder yum list package-name) starte, kann ich nur sehen, dass das Paket "installiert" ist.

antworten

Wenn yum-utils installiert ist, liefert repoquery die von Ihnen gesuchten Informationen (hier ist 'epel' das Repository).

└─[$]> repoquery -i cherokee

Name        : cherokee
Version     : 0.99.49
Release     : 1.el5
Architecture: i386
Size        : 8495964
Packager    : Fedora Project
Group       : Applications/Internet
URL         : http://www.cherokee-project.com/
Repository  : epel
Summary     : Flexible and Fast Webserver
Description :
Cherokee is a very fast, flexible and easy to configure Web Server. It supports
the widespread technologies nowadays: FastCGI, SCGI, PHP, CGI, TLS and SSL
encrypted connections, Virtual hosts, Authentication, on the fly encoding,
Apache compatible log files, and much more.

Welche Version von Yum?

Wenn bei der aktuellen Version das installierte Paket mit der neuesten Version identisch ist, wird das Repo angezeigt, von dem es installiert wurde.

$ yum info irssi
Installed Packages
Name       : irssi
Arch       : i586
Version    : 0.8.14
Release    : 1.fc11
Size       : 2.3 M
Repo       : installed
From repo  : updates
Summary    : Modular text mode IRC client with Perl scripting
URL        : http://irssi.org/
License    : GPLv2+
Description: Irssi is a modular IRC client with Perl scripting. Only text-mode
           : frontend is currently supported. The GTK/GNOME frontend is no
           : longer being maintained.

$ yum --version
3.2.23

Wenn ein neueres Paket verfügbar ist, wird es separat angezeigt. Die neue Version zeigt das Repo, von dem es verfügbar ist.

Zu spät kommen, aber (zumindest bei Fedora 15) kann yumdb für ähnliche Abfragen verwendet werden:

yumdb info 'python*'

Und was ich eigentlich brauchte, um Pakete aus den angegebenen Repo (s) aufzulisten:

yumdb search from_repo 'my-*-repo'

Wenn alles andere fehlschlägt, können Sie das Yumdb manuell überprüfen. Es befindet sich in /var/lib/yum/yumdb und enthält detaillierte Informationen zu jedem installierten Paket. Sie interessieren sich besonders für from_repo. Zum Beispiel für das Paket bind-utils:

# for i in/var/lib/yum/yumdb/b/*bind-utils*/*; do echo $i: `cat $i`; done
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/checksum_data: 39f7840f93d3d76825a9e8da79cfe0366f7fad68f018a273477aee62cccfa3f4
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/checksum_type: sha256
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/command_line: install bind-utils
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/from_repo: updates
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/from_repo_revision: 1397654451
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/from_repo_timestamp: 1397654759
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/installed_by: 0
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/reason: user
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/releasever: 6

Um genau die gewünschten Informationen zu erhalten:

# cat/var/lib/yum/yumdb/b/*bind-utils*/from_repo
updates

Spätere Versionen liefern noch mehr Daten. In EL 7 wird beispielsweise der genaue Spiegel und die URL, von der das Paket heruntergeladen wurde, hier gespeichert.

rpm -qi packagename

Informiert Sie den Hersteller und den Verpacker

Um zu sehen, was von Repo Epel installiert wurde: (Sollte unter Centos 5.5 funktionieren) Hinweis: Wenn Sie kein Repo namens Epel haben, spuckt es alles aus, was installiert ist.

Repoquery --repoid = epel -a \ | xargs yum list installiert

Wenn das Paket kürzlich installiert wurde, können Sie in/var/cache/yum suchen.

In diesem Verzeichnis befindet sich für jedes Repo ein Verzeichnis und in diesem ein Paketverzeichnis. Also würden Sie so etwas tun:

find/var/cache/yum -name [package-name]*

Der Cache muss jedoch in Ihrer Datei/etc/yum.conf aktiviert sein:

cachedir=/var/cache/yum
keepcache=1

Beachten Sie, dass ein yum clean [packages|all] das Cache-Verzeichnis löscht.

Wenn das Cache-Verzeichnis leer ist, gibt es einen alternativen Weg. Die Informationen, die von yum info [package] gelesen werden, stammen von/var/cache/yum/[repo(/primary.xml.gz

)

Sie können die Datei anzeigen, indem Sie Folgendes eingeben:

gunzip -d -c/var/cache/yum/[repo]/primary.xml.gz | grep '<name>[package]'

Auf Computern, auf denen yum info [package] nicht "From repo:" anzeigt, wie durch "theotherreceive" angegeben, liegt dies daran, dass es sich nicht in der Datei primary.xml befindet, so dass diese Informationen nicht abgerufen werden können . Wenn sich das Paket in zwei oder mehr primary.xml-Dateien befindet, müssen Sie daher die Repo-Priorität auf Ihrem System ermitteln.

Basierend auf und Antwort von Swoogan
Auf RedHat und CentOS kann man

machen
sudo grep -ir PACKAGE_NAME/var/cache/yum/

Die Ergebnisse sollten ungefähr so ​​aussehen wie

Binary file/var/cache/yum/REPOSITORY_NAME/primary.xml.gz.sqlite matches

Wobei Repository-Name das Repository ist, in dem Ihr Paket gefunden werden kann, und es wurde wahrscheinlich vom ersten in einer Liste installiert (siehe Yum-Repoliste)

Sie können das ausführliche Flag zu "yum info" hinzufügen:

yum info -v <package_name>

Das Installations-Repository befindet sich unter der Ausgabe "Von Repo".

Werden diese Informationen irgendwo erfasst? Das Paket verfügt nicht über diese Informationen und Yum kümmert sich nicht darum, nachdem es das Paket gefunden hat. Sie könnten es wahrscheinlich zusammensetzen, indem Sie herausfinden, welche Repos das Paket haben, und dann bestimmen, welche Priorität hat.

Keine großartige Lösung, aber ich habe herausgefunden, dass die Liste der verfügbaren Yum Ihnen zeigt, wo die aktuellste Version jedes Pakets verfügbar ist, z. B.

yum-Liste verfügbar \ | grep gstreamer

PackageKit-gstreamer-plugin.x86_64 0.3.16-1.fc10          updates               

bluez-gstreamer.i386 4.30-2.fc10-Updates
gstreamer.i386 0.10.21-2.fc10 fedora
gstreamer-devel.i386 0.10.21-2.fc10 fedora
gstreamer-devel.x86_64 0.10.21-2.fc10 fedora
gstreamer-plugins-bad-devel.i386 0.10.9-1.fc10 rpmfusionsfrei
gstreamer-plugins-bad-devel.x86_64 0.10.9-1.fc10 rpmfusionsfrei

Sie können also eine Yum-Liste für Ihr Paket erstellen, die installierte Version mit der installierten Yum-Liste vergleichen und eine gute Vorstellung davon haben, aus welchem ​​Repo es stammt, wenn die Versionen übereinstimmen.

Also ich weiß, das ist eine etwas alte Frage - aber es kommt auf der Google-Suche nach dem, was ich gesucht habe.

Es gibt auch eine Methode, um eine eindeutige Liste der verwendeten Repos zu erhalten:

# repoquery -ai | grep 'Repository  : ' | sort | uniq

Damit werden die Repositorys aufgelistet, von denen Pakete installiert wurden.

Der einfachste und geradlinigste Ansatz, ohne zusätzliche Tools zu installieren, überflüssige Informationen zu erzeugen oder auszugeben, ist einfach:

yum list installed [package name]

Die dritte Spalte enthält die ID des Repositorys, von dem das Paket installiert wurde.

Dies wurde in einem Kommentar zu der ursprünglichen Frage mit grep erwähnt, aber das ist nicht notwendig. Sie können den Paketnamen direkt an yum übergeben, um ihn zu filtern.