it-swarm.com.de

Wie liste ich den Inhalt eines Pakets mit YUM auf?

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

294
Lorin Hochstein

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

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

In einem Beispiel kombiniert:

$ 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 gibt repoquery -l rpm nichts aus.

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


DNF Update:

Verwenden Sie den folgenden Befehl, um dnf anstelle von yum-utils zu verwenden:

$ 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
416
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 keine yum-utils installieren oder den Speicherort der rpm-Datei kennen.

143
Levit
$ yum install -y yum-utils

$ repoquery -l packagename
74

Ich glaube nicht, dass Sie den Inhalt eines Pakets mit yum auflisten können. Wenn Sie jedoch die .rpm-Datei auf Ihrem lokalen System haben (wie es für alle installierten Pakete der Fall ist), können Sie den rpm-Befehl zum Auflisten verwenden Der Inhalt dieses Pakets ist so:

rpm -qlp /path/to/fileToList.rpm

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

rpm -ql packageName
28
Thomi

Hier gibt es mehrere gute Antworten, also 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
3
barrycarter

Yum hat keinen eigenen Pakettyp. Yum betreibt und verwaltet RPMs. Daher können Sie mit yum die verfügbaren RPMs auflisten und anschließend den Befehl rpm -qlp ausführen, um den Inhalt dieses Pakets anzuzeigen.

0
Haabda

derzeit ist reopquery in dnf und yum integriert. Geben Sie also Folgendes ein:

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 dnf-utils- oder yum-utils-Pakets für die Funktionalität nicht mehr erforderlich ist, da es jetzt nativ unterstützt wird.


zum Auflisten von installierten oder local (*.rpm-Dateien) Paketen gibt es rpm -ql

ich glaube nicht, dass es mit yum org dnf möglich ist (nicht repoquery Unterbefehl)

bitte korrigieren Sie mich, wenn ich falsch liege

0
w17t