it-swarm-tr.com

YUM kullanarak bir paketin içeriği nasıl listelenir?

Bir paketin içeriğini listelemek için rpm'nin nasıl kullanılacağını biliyorum (rpm -qpil package.rpm). Ancak, bu, dosya sistemindeki .rpm dosyasının konumunu bilmek gerektirir. Daha şık bir çözüm, benim durumumda YUM olan paket yöneticisini kullanmak olacaktır. Bunu başarmak için YUM nasıl kullanılabilir?

294
Lorin Hochstein

YUM'da oluşturulan ve bunu yapabilen repoquery adlı bir araç içeren yum-utils adlı bir paket var.

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

Bir örnekte birleştirilmiştir:

$ 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

En az bir RH sisteminde, rpm v4.8.0, yum v3.2.29 ve v0.0.11 repoquery ile repoquery -l rpm hiçbir şey yazdırmaz.

Bu sorunu yaşıyorsanız, --installed bayrağı eklemeyi deneyin: repoquery --installed -l rpm.


DNF Güncelleme:

yum-utils yerine dnf öğesini kullanmak için aşağıdaki komutu kullanın:

$ 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]

Örnek

# 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

Yum-utils kurmaya veya rpm dosyasının yerini bilmenize gerek yok.

143
Levit
$ yum install -y yum-utils

$ repoquery -l packagename
74

Yum kullanarak bir paketin içeriğini listeleyebileceğinizi sanmıyorum, ancak yerel sisteminizde .rpm dosyanız varsa (muhtemelen yüklü olan tüm paketler için olduğu gibi), listelemek için rpm komutunu kullanabilirsiniz. Bu paketin içeriği şöyle:

rpm -qlp /path/to/fileToList.rpm

Paket dosyanız (.rpm) sizde değilse, ancak paketi yüklüyse, şunu deneyin:

rpm -ql packageName
28
Thomi

Burada birkaç iyi cevap var, bu yüzden korkunç bir cevap vereyim:

: 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'un kendi paket tipi yok. Yum RPM’leri yönetir ve yönetir. Böylece, kullanılabilir RPM'leri listelemek için yum'ı kullanabilir ve ardından paketin içeriğini görmek için rpm -qlp komutunu çalıştırabilirsiniz.

0
Haabda

şu anda reopquerydnf ve yum içine entegre edilmiştir;

dnf repoquery -l <pkg-name>

paket içeriğini uzak bir havuzdan listeler (henüz kurulmamış paketler için bile)

ayrı bir dnf-utils veya yum-utils paketi kurmak, artık yerel olarak desteklendiğinden işlevsellik için artık gerekli değildir.


yüklü veya yerel (*.rpm dosyaları) paketlerinin içeriğini listelemek için rpm -ql vardır

yum org dnf ile mümkün olduğunu sanmıyorum (repoquery alt komutuyla değil)

yanlışım varsa lütfen düzelt

0
w17t