rpm, das eine Datei bereitstellt

rpm, das eine Datei bereitstellt

Wie lautet der Befehl, um aufzulisten, welche RPMs eine bestimmte Datei bereitstellen könnten: die RPMs, die bereits installierte Dateien bereitstellen, oder die RPMs, die nicht installierte Dateien bereitstellen könnten?

Antwort1

Für bereits installierte Dateien/Pakete:

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

Für noch nicht installierte Dateien und Pakete:

[jb@smokey ~]$ yum was bietet "/etc/sudoers"
sudo-1.6.9p13-8.fc9.x86_64: Ermöglicht eingeschränkten Root-Zugriff für angegebene Benutzer
Repo: Updates-neuer Schlüssel
Passend dazu von:
Dateiname: /etc/sudoers  

sudo-1.6.9p13-4.fc9.x86_64: Ermöglicht eingeschränkten Root-Zugriff für angegebene Benutzer
Repo: Fedora
Passend dazu von:
Dateiname: /etc/sudoers

sudo-1.6.9p13-8.fc9.x86_64: Ermöglicht eingeschränkten Root-Zugriff für angegebene Benutzer
Repo: installiert
Passend dazu von:
Andere: Bietet Übereinstimmung: /etc/sudoers

Beachten Sie, dass es sich bei „yum whatprovides“ um eine Musterübereinstimmung handelt. Wenn Sie also nicht sicher sind, wo in der Verzeichnisstruktur die gesuchte Datei zu finden ist, setzen Sie sie einfach in Anführungszeichen und Sternchen:

yum was bietet "*foo*"

Wenn Sie sicher sind, dass es sich bei dem gesuchten Binärcode um eine Binärdatei handelt, können Sie Folgendes tun:

yum whatprovides "*bin/foo"

Antwort2

Ich weiß nichts über Dateien, die noch nicht installiert sind, aber für eine bereits installierte Datei können Sie rpm -qif verwenden:

rpm -qif /bin/ls
Name: coreutils. Umzüge: (nicht umzugsfähig).
Version: 5.97. Anbieter: Red Hat, Inc.
Version: 23.el5 Erstellungsdatum: Montag, 13. Juli 2009, 04:21:27 Uhr MDT
Installationsdatum: Freitag, 11. September 2009, 04:46:01 Uhr MDT Build-Host: hs20-bc1-7.build.redhat.com
Gruppe: Systemumgebung/Basisquelle RPM: coreutils-5.97-23.el5.src.rpm
Größe: 9053874 Lizenz: GPLv2+
Signatur: DSA/SHA1, Dienstag, 28. Juli 2009, 03:42:40 Uhr MDT, Schlüssel-ID 5326810137017186
Paketierer: Red Hat, Inc.
URL:
Zusammenfassung: Die GNU-Kernprogramme: eine Reihe von Tools, die häufig in Shell-Skripten verwendet werden
Beschreibung :
Dies sind die GNU-Kernprogramme. Dieses Paket ist die Kombination aus
die alten GNU Fileutils-, Sh-Utils- und Textutils-Pakete.
Wenn Sie das RPM heruntergeladen haben, können Sie eine Abfrage durchführen, um zu sehen, was installiert wird:
rpm -qilp ./Server/jzlib-1.0.7-4jpp.1.i386.rpm
Warnung: ./Server/jzlib-1.0.7-4jpp.1.i386.rpm: Header V3 DSA-Signatur: NOKEY, Schlüssel-ID 37017186
Name: jzlib. Umzüge: (nicht umzugsfähig).
Version: 1.0.7. Anbieter: Red Hat, Inc.
Version: 4jpp.1 Erstellungsdatum: Dienstag, 8. August 2006, 12:10:03 Uhr MDT
Installationsdatum: (nicht installiert) Build-Host: hs20-bc1-6.build.redhat.com
Gruppe: Entwicklung/Bibliotheken/Java Quelle RPM: jzlib-1.0.7-4jpp.1.src.rpm
Größe: 280436 Lizenz: BSD-Stil
Signatur: DSA/SHA1, Do 18 Jan 2007 08:49:50 AM MST, Schlüssel-ID 5326810137017186
Paketierer: Red Hat, Inc.
URL:
Zusammenfassung: JZlib-Neuimplementierung von zlib in reinem Java
Beschreibung :
Die zlib ist als freie, universelle, rechtlich unbelastete
-- das heißt, nicht durch Patente abgedeckt -- verlustfreie Datenkompression
Bibliothek zur Verwendung auf praktisch jeder Computerhardware und jedem Betriebssystem.
Die zlib wurde von Jean-loup Gailly (Komprimierung) und Mark Adler geschrieben
(Dekompression).
/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
Sie können das „-i“ in den Optionen weglassen, wenn Sie nicht alle Informationen zum RPM sehen möchten.

Antwort3

In Yum-basierten Repositories könnten Sie etwas wie yum provides */filename

Antwort4

Wenn Sie yum nicht verwenden möchten (oder können) (z. B. auf einem Offline-Rechner), können Sie in nicht installierten RPMs suchen, indem Sie

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

Dies kann einige Zeit dauern, also haben Sie Geduld, wenn Sie in einem großen Repository, wie z. B. einer Installations-DVD, zwischen *.rpm suchen. Im Gegensatz zu „-qpl“ listet „-qp --filesbypkg“ jedoch sowohl die Datei als auch das RPM auf, zu dem sie gehört, z. B.:

# 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

in diesem Fall ist das scheinbare Duplikat auf das Vorhandensein von i386- und x86_64-Paketen zurückzuführen (erkennbar an der Zeichenfolge „lib64“).

verwandte Informationen