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


Nachdem ich ein Paket von yum installiert habe (mit mehreren konfigurierten Repositorys), wie kann ich herausfinden, von welchem ​​Repository es installiert wurde?

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


134
2017-09-03 15:15


Ursprung


Gute Frage! Ich habe yum-utils installiert und habe es versucht, es ist die sogenannte Repoquery, aber kein Glück. - Sean Staats
siehe auch serverfault.com/questions/90409/ ... :) - warren
@warren Ihr Link ist nicht nützlich, weil Ihr Link eine Frage über "was repo ist eine rpm gespeichert in", aber diese Frage fragt, "was Repo ist eine INSTALLED rpm from". verschiedene Fragen. - Trevor Boyd Smith
wenn du es gewöhnt bist rpm -qa|grep NAME dann kannst du tun yum list installed|grep NAME um herauszufinden, aus welchem ​​Repo die Drehzahl stammt. - Trevor Boyd Smith
@ TrevorBoydSmith - vor 7 Jahren war es eng. Heute ist immer noch ähnlich. Ich habe nie gesagt, dass es das war gleich. Nur dass es verwandt war. - warren


Antworten:


Wenn yum-utils installiert ist, liefert Repoquery die 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.

75
2018-06-21 19:16



Repoquery scheint nicht richtig zu funktionieren, ich bekomme dann verschiedene Paketversionen yum info package_nameEs scheint die Repositorys nicht in der gleichen Reihenfolge wie yum abzufragen. - Mike Miller
Gleiches hier auf einigen Servern. yum info package_name gibt anscheinend mehr Ergebnisse als Repoquery zurück. Aus diesem Grund sollte der Stack-Austausch keine Stimmen blockieren. - reflexiv
Ich fand Xiong Chiamiovs Antwort nicht korrekt. repoquery -i $pkg gibt Repo von dem a $pkg ist verfügbar, nicht das Repo von dem die $pkg wurde installiert. Ich habe diesen Befehl und rpm -qi $pkg und bekam verschiedene Versionsnummern. rpm führte zu einer früheren Versionsnummer als die von repoquery.
Es ist möglich, dass Ihre lokale Kopie veraltet ist oder dass sie mit zusätzlichen Befehlen für yum installiert wurde (z. --use-mirror). Ich denke nicht, dass es möglich ist immer bekomme die richtige Antwort. - Xiong Chiamiov


Welche Version von Yum?

Wenn in der aktuellen Version das installierte Paket die gleiche Version wie das aktuellste 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, wobei die neue Version das Repo anzeigt, von dem es verfügbar ist.


37
2017-09-03 16:25



Ich benutze yum 3.2.19 auf CentOs 5.3 und "From Repo" Zeile existiert nicht. - lg.
Yep ... Ich habe es am 3.2.21 getestet, welches diese Information nirgends hat. Als ich es auf meiner Box mit 3.2.23 getan habe, funktionierte es. - Alex
Jetzt ist dies die beste Lösung, aber nicht anwendbar für RHEL / Centos 5.3. Ich akzeptiere diese Lösung, aber ich bin bereit, eine andere Antwort zu wählen, wenn diese auch für RHEL / Centos 5.3 gilt. - lg.
Dies ist auch in CentOS 5.5 nicht möglich. - Mike Miller
"From rep" ist nicht einmal in Centos 5.8 verfügbar - sepehr


Kommen zu spät, aber (zumindest auf Fedora 15) kann man yumdb für ähnliche Abfragen verwenden:

yumdb info 'python*'

Und was ich eigentlich brauchte, um Pakete von gegebenen Repos aufzulisten:

yumdb search from_repo 'my-*-repo'

18
2017-10-26 09:01



Es funktioniert auch auf Fedora 14 - lg.
funktioniert auf RHEL 6.2 - pixelbeat


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

# 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 nur die gewünschten Informationen zu erhalten:

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

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


8
2018-05-25 04:19



+1. Aber es ist noch besser, etwas zu tun wie: for i in /var/lib/yum/yumdb/b/*bind-utils*/*; do echo $i: `cat $i` | grep -oP 'from_repo:\ \K.*'; done, die im obigen Beispiel zurückgibt: updates - viel besser lesbar! - Greg Dubicki
@GregDubicki Der Sinn des Befehls war es, mehr über den Kontext zu erfahren, was passiert und wie Dinge gespeichert werden. Es hat offensichtlich versäumt, dies zu tun: Es besteht keine Notwendigkeit grep irgendetwas hier, und Sie können sogar die Schleife fallen lassen. Ein sehr einfaches cat /var/lib/yum/yumdb/b/*bind-utils*/from_repo ist alles, was du brauchst. - Michael Hampton♦


rpm -qi packagename

Kann Ihnen den Verkäufer und den Verpacker erzählen


6
2018-02-09 14:48





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

Innerhalb dieses Verzeichnisses gibt es für jeden Repo ein Verzeichnis und darin ein Paketverzeichnis. Also würden Sie etwas tun wie:

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

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

cachedir=/var/cache/yum
keepcache=1

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

Wenn das Cache-Verzeichnis leer ist, gibt es einen alternativen Weg. Die Information, die von gelesen wird yum info [package] kommt aus /var/cache/yum/[repo]/primary.xml.gz

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

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

Allerdings auf Maschinen wo yum info [package] zeigt "From repo:" nicht an, wie von "theotherreceive" angezeigt, weil es sich nicht in der Datei primary.xml befindet. Daher wird es keine Möglichkeit geben, diese Informationen abzurufen. Wenn sich das Paket in zwei oder mehr primary.xml-Dateien befindet, müssen Sie daher die Repopriorität auf Ihrem System ermitteln.


4
2017-09-03 16:36



Diese Lösung ist vielleicht eine Option (ich stimme dafür), aber ich suche nach einer definitiven Antwort. - lg.


Um zu sehen, was von Repo Epel installiert: (Sollte unter Centos 5.5 arbeiten) beachten Sie, wenn Sie kein Repo namens Epel haben, wird es jedes installierte Gerät ausspucken.

Repoquery --Repoid = Epel -a | xargs yum-Liste installiert


4
2018-04-07 21:20



Dies scheint zu funktionieren, solange kein aktuelles Paket im Repository vorhanden ist. Sie müssen daher yum update direkt vor der Verwendung ausführen. - codewaggle


Basiert auf und beantwortet durch Swoogan
Auf RedHat und CentOS kann man machen

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

Die Ergebnisse sollten ungefähr so ​​aussehen

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

Woher repositoryname  ist das Repository, in dem Ihr Paket gefunden werden kann, und es wurde wahrscheinlich vom ersten in einer Liste installiert (siehe yum repolist)


3
2018-05-30 00:19





Werden diese Informationen überall erfasst? Das Paket enthält diese Information nicht, und yum kümmert sich nicht, nachdem es das Paket findet. Sie könnten es wahrscheinlich zusammensetzen, indem Sie herausfinden, welche Repos das Paket haben und dann bestimmen, welches die Priorität hat.


1
2017-09-03 16:19



Diese Lösung ist vielleicht eine Option (ich stimme dafür), aber nur für das zuletzt installierte Paket, weil ich das Repository und deren Priorität ändern kann. - lg.