Wie liste ich den Inhalt eines Pakets mit YUM auf?

320

Ich weiß, wie man mit RPM den Inhalt eines Pakets auflistet ( rpm -qpil package.rpm). Dies setzt jedoch voraus, dass Sie den Speicherort der RPM-Datei im Dateisystem kennen. Eine elegantere Lösung wäre die Verwendung des Paketmanagers, in meinem Fall YUM. Wie kann YUM verwendet werden, um dies zu erreichen?

Lorin Hochstein
quelle
8
Ohne -pparam ( rpm -ql packageName) müssen Sie den Speicherort der RPM- Datei nicht kennen. Es ist so ziemlich der einfachste Weg, "alle" Pfade eines Pakets zu erhalten. Für einige Beispielausgaben siehe meine Antwort .
Levite
Leider funktioniert das nur mit installierten Paketen
WallStProg

Antworten:

438

Es gibt ein Paket namens yum-utils, das auf YUM aufbaut und ein Tool namens namens enthält repoquery, das dies kann.

$ repoquery --help | grep -E "list\ files" 
  -l, --list            list files in this package/group

In einem Beispiel zusammengefasst:

$ repoquery -l time
/usr/bin/time
/usr/share/doc/time-1.7
/usr/share/doc/time-1.7/COPYING
/usr/share/doc/time-1.7/NEWS
/usr/share/doc/time-1.7/README
/usr/share/info/time.info.gz

Auf mindestens einem RH-System mit rpm v4.8.0, yum v3.2.29 und repoquery v0.0.11 wird repoquery -l rpmnichts gedruckt.

Wenn Sie dieses Problem haben, fügen Sie das --installedFlag hinzu : repoquery --installed -l rpm.


DNF Aktualisieren:

Verwenden Sie dnfstattdessen yum-utilsden folgenden Befehl:

$ dnf repoquery -l time
/usr/bin/time
/usr/share/doc/time-1.7
/usr/share/doc/time-1.7/COPYING
/usr/share/doc/time-1.7/NEWS
/usr/share/doc/time-1.7/README
/usr/share/info/time.info.gz
Thomas Vander Stichele
quelle
12
Beachten Sie, dass dieser Befehl unbemerkt fehlschlägt, wenn das genannte Paket nicht vorhanden ist.
Joshua Hoblitt
17
Um schneller nach installierten Paketen zu suchen, geben Sie die Option --installed an. zB $ repoquery -lq --installed time.
Mohsenme
Bitte beachten Sie, dass der Name des Pakets zwischen Groß- und Kleinschreibung unterscheidet
Putnik
7
Sollte als Feature von yum, IMO hinzugefügt werden.
Lqueryvg
1
Warum ein neues Paket installieren, wenn Sie es verwenden können rpm -ql $PACKAGE_NAME?
Isapir
159
rpm -ql [packageName]

Beispiel

# rpm -ql php-fpm

/etc/php-fpm.conf
/etc/php-fpm.d
/etc/php-fpm.d/www.conf
/etc/sysconfig/php-fpm
...
/run/php-fpm
/usr/lib/systemd/system/php-fpm.service
/usr/sbin/php-fpm
/usr/share/doc/php-fpm-5.6.0
/usr/share/man/man8/php-fpm.8.gz
...
/var/lib/php/sessions
/var/log/php-fpm

Sie müssen weder yum-utils installieren noch den Speicherort der RPM-Datei kennen.

Levit
quelle
4
Dies scheint das Äquivalent dpkg -Lfür alle zu sein, die kein weiteres Paket installieren möchten, nur um Dateien aufzulisten.
Dmitry Minkovsky
5
@dimadima: Die Frage war für yum (= RHEL - basierte Systeme) , die Anwendungen rpmals native Paketmanager ( R Hat ed P acket M anager). Wenn sich das OP auf einem Debian / Ubuntu / .. -System befinden dpkgwürde , wäre dies der richtige Weg, da es das Backend für apt ist .
Levite
2
@Levit: Ziemlich sicher, was dimadima zu sagen versucht, ist, dass dies die Frage nicht strikt beantwortet - Sie verwenden es nicht, yumaber rpmdas hat die Hauptaussage, dass das Paket installiert werden muss (was OP nicht ausdrücklich gesagt hat) sein Szenario). Er führte lediglich den parallelen Vergleich von rpm == dpkg / yum == apt durch, um dies zu erklären, falls jemand mit Debian-basierten Verpackungen und nicht mit RH-basierten Verpackungen vertraut war.
Der
3
^ 1 weil aus irgendeinem Grund dies funktioniert und die akzeptierte Antwort nichts zurückgibt
Izkata
2
Es scheint, dass es keine yumEntsprechung zu rpm -qlund repoquery -l(aus yum-utilsPaket-) Befehlen gibt, um lokale bzw. entfernte Dateien aufzulisten.
78
$ yum install -y yum-utils

$ repoquery -l packagename
Hüseyin Ozan TOK
quelle
31

Ich glaube nicht, dass Sie den Inhalt eines Pakets mit yum auflisten können, aber wenn Sie die RPM-Datei auf Ihrem lokalen System haben (wie dies höchstwahrscheinlich bei allen installierten Paketen der Fall ist), können Sie den Befehl rpm zum Auflisten verwenden Der Inhalt dieses Pakets ist wie folgt:

rpm -qlp /path/to/fileToList.rpm

Wenn Sie die Paketdatei (.rpm) nicht haben, aber das Paket installiert haben, versuchen Sie Folgendes:

rpm -ql packageName
Thomi
quelle
24
Wenn Sie die Paketdatei (.rpm) nicht haben, aber das Paket installiert haben, versuchen Sie es mit rpm -ql packageName
Jared Updike
1
Wenn Sie das Paket nicht haben und es nicht installiert ist, können Sie die URL des Pakets mit finden youdownload --urls.
Kamae
Das sollte seinyumdownloader --urls
Evgeni Sergeev
3

Hier gibt es mehrere gute Antworten. Lassen Sie mich eine schreckliche Antwort geben:

: you can type in anything below, doesnt have to match anything

yum whatprovides "me with a life"

: result of the above (some liberties taken with spacing):

Loaded plugins: fastestmirror
base | 3.6 kB 00:00 
extras | 3.4 kB 00:00 
updates | 3.4 kB 00:00 
(1/4): extras/7/x86_64/primary_db | 166 kB 00:00 
(2/4): base/7/x86_64/group_gz | 155 kB 00:00 
(3/4): updates/7/x86_64/primary_db | 9.1 MB 00:04 
(4/4): base/7/x86_64/primary_db | 5.3 MB 00:05 
Determining fastest mirrors
 * base: mirrors.xmission.com
 * extras: mirrors.xmission.com
 * updates: mirrors.xmission.com
base/7/x86_64/filelists_db | 6.2 MB 00:02 
extras/7/x86_64/filelists_db | 468 kB 00:00 
updates/7/x86_64/filelists_db | 5.3 MB 00:01 
No matches found

: the key result above is that "primary_db" files were downloaded

: filelists are downloaded EVEN IF you have keepcache=0 in your yum.conf

: note you can limit this to "primary_db.sqlite" if you really want

find /var/cache/yum -name '*.sqlite'

: if you download/install a new repo, run the exact same command again
: to get the databases for the new repo

: if you know sqlite you can stop reading here

: if not heres a sample command to dump the contents

echo 'SELECT packages.name, GROUP_CONCAT(files.name, ", ") AS files FROM files JOIN packages ON (files.pkgKey = packages.pkgKey) GROUP BY packages.name LIMIT 10;' | sqlite3 -line /var/cache/yum/x86_64/7/base/gen/primary_db.sqlite 

: remove "LIMIT 10" above for the whole list

: format chosen for proof-of-concept purposes, probably can be improved a lot
Barrycarter
quelle
0

Yum hat keinen eigenen Pakettyp. Yum arbeitet und hilft bei der Verwaltung von RPMs. Sie können also yum verwenden, um die verfügbaren RPMs aufzulisten, und dann den Befehl rpm -qlp ausführen, um den Inhalt dieses Pakets anzuzeigen.

Haabda
quelle
0

Derzeit reopqueryist in dnfund integriert yum, also tippen Sie:

dnf repoquery -l <pkg-name>

listet Paketinhalte aus einem Remote-Repository auf (auch für die Pakete, die noch nicht installiert sind)

Das bedeutet, dass die Installation eines separaten Pakets dnf-utilsoder yum-utilsPakets für die Funktionalität nicht mehr erforderlich ist, da es jetzt nativ unterstützt wird.


Zum Auflisten des Inhalts installierter oder lokaler ( *.rpmDateien) Pakete gibt esrpm -ql

Ich glaube nicht, dass es mit yumorg möglich ist dnf(kein repoqueryUnterbefehl)

Bitte korrigieren Sie mich, wenn ich falsch liege


quelle