rpm yang menyediakan file

11

Apa perintah untuk membuat daftar rpms apa yang bisa menyediakan file tertentu: rpm yang menyediakan file yang sudah diinstal atau rpms yang bisa menyediakan file yang tidak diinstal?

David Nehme
sumber

Jawaban:

10

Untuk file / paket yang sudah diinstal:

[jb @ smokey ~] $ rpm -qf / etc / sudoers
sudo-1.6.9p13-8.fc9.x86_64

Untuk file & paket yang belum diinstal:

[jb @ smokey ~] $ yum whatprovides "/ etc / sudoers"
sudo-1.6.9p13-8.fc9.x86_64: Mengizinkan akses root terbatas untuk pengguna tertentu
Repo: pembaruan -kunci baru
Cocok dari:
Nama file: / etc / sudoers  

sudo-1.6.9p13-4.fc9.x86_64: Mengizinkan akses root terbatas untuk pengguna tertentu
Repo: fedora
Cocok dari:
Nama file: / etc / sudoers

sudo-1.6.9p13-8.fc9.x86_64: Mengizinkan akses root terbatas untuk pengguna tertentu
Repo: diinstal
Cocok dari:
Lainnya: Menyediakan-cocok: / etc / sudoers

Perhatikan bahwa "yum whatprovides" adalah pencocokan pola, jadi jika Anda tidak yakin di mana file yang Anda cari akan tinggal di struktur direktori hanya mengelilinginya dengan tanda kutip dan tanda bintang:

yum apa yang memberikan "* foo *"

Demikian pula jika Anda yakin apa yang Anda cari adalah biner yang dapat Anda lakukan:

yum whatmenyediakan "* bin / foo"
cagenut
sumber
5

Saya tidak tahu tentang file yang belum diinstal tetapi untuk file yang sudah diinstal Anda dapat menggunakan rpm -qif:

rpm -qif / bin / ls
Nama: coreutils Relokasi: (tidak dapat dipindahkan)
Versi: 5.97 Vendor: Red Hat, Inc.
Rilis: 23.el5 Tanggal Pembuatan: Sen 13 Jul 2009 04:21:27 MDT
Tanggal Instalasi: Jum 11 Sep 2009 04:46:01 AM MDT Build Host: hs20-bc1-7.build.redhat.com
Grup: Lingkungan Sistem / Sumber Basis RPM: coreutils-5.97-23.el5.src.rpm
Ukuran: 9053874 Lisensi: GPLv2 +
Tanda tangan: DSA / SHA1, Sel 28 Jul 2009 03:42:40 MDT, Key ID 5326810137017186
Pengemas: Red Hat, Inc. 
URL:
Rangkuman: Utilitas inti GNU: seperangkat alat yang biasa digunakan dalam skrip shell
Deskripsi:
Ini adalah utilitas inti GNU. Paket ini adalah kombinasi dari
paket fileutils, sh-utils, dan textutils GNU lama.
Jika Anda memiliki RPM yang diunduh, Anda dapat meminta untuk melihat apa yang akan dipasang:
rpm -qilp ./Server/jzlib-1.0.7-4jpp.1.i386.rpm
peringatan: ./Server/jzlib-1.0.7-4jpp.1.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Nama: jzlib Relokasi: (tidak dapat dipindahkan)
Versi: 1.0.7 Vendor: Red Hat, Inc.
Rilis: 4jpp.1 Tanggal Pembuatan: Sel 08 Agu 2006 12:10:03 PM MDT
Tanggal Instalasi: (tidak diinstal) Bangun Host: hs20-bc1-6.build.redhat.com
Grup: Pengembangan / Perpustakaan / Java Source RPM: jzlib-1.0.7-4jpp.1.src.rpm
Ukuran: 280436 Lisensi: BSD-style
Tanda tangan: DSA / SHA1, Kamis 18 Jan 2007 08:49:50 MST, Key ID 5326810137017186
Pengemas: Red Hat, Inc. 
URL: 
Rangkuman: JZlib implementasi ulang zlib di Java murni
Deskripsi:
Zlib dirancang untuk menjadi bebas, bertujuan umum, tidak terbebani secara hukum
- yaitu, tidak tercakup oleh paten apa pun - kompresi data lossless
perpustakaan untuk digunakan di hampir semua perangkat keras komputer dan sistem operasi.
Zlib ditulis oleh Jean-loup Gailly (kompresi) dan Mark Adler
(dekompresi).
/usr/lib/gcj/jzlib/jzlib-1.0.7.jar.db
/usr/lib/gcj/jzlib/jzlib-1.0.7.jar.so
/usr/share/doc/jzlib-1.0.7
/usr/share/doc/jzlib-1.0.7/LICENSE.txt
/usr/share/java/jzlib-1.0.7.jar
/usr/share/java/jzlib.jar
Anda dapat menghilangkan "-i" dari opsi jika Anda tidak ingin melihat semua info tentang RPM.

salparadise
sumber
2

Dalam repositori berbasis yum, Anda dapat mencoba sesuatu seperti yum provides */filename

Angka tiga
sumber
1

afaik, itu tidak mungkin dengan rpm murni. rpm hanya menyediakan opsi ini untuk paket yang diinstal --whatprovides.

ketika Anda dapat menggunakan yum, cobalah yum provides <filename>mencari di repositori.

Kristen
sumber
1

Jika Anda tidak ingin (atau tidak bisa) menggunakan yum (mis. Pada mesin offline), Anda dapat mencari di dalam RPM yang tidak diinstal dengan melakukan

# rpm -qp --filesbypkg *rpms-to-search-in* | grep *file-to-search-for*

Ini bisa memakan waktu, jadi bersabarlah ketika mencari di antara * .rpm pada repositori besar, seperti DVD instal, misalnya. Tetapi, tidak seperti "-qpl", "-qp --filesbypkg" akan mencantumkan file dan RPM yang dimilikinya, misalnya:

# rpm -qpl p*.rpm|grep libpq.so.4
/usr/lib/libpq.so.4
/usr/lib64/libpq.so.4

# rpm -qp --filesbypkg p*.rpm|grep libpq.so.4
postgresql-libs          /usr/lib/libpq.so.4
postgresql-libs          /usr/lib64/libpq.so.4

dalam hal ini duplikat yang jelas disebabkan oleh adanya paket i386 dan x86_64 (dibuat jelas dari string "lib64").

Tulio Silva
sumber
-3

Saya khawatir saya tidak yakin bagaimana melakukannya dengan RPMS, tetapi dengan Debian dan Ubuntu Anda dapat menggunakan program ini apt-file

Rory
sumber