it-swarm.com.de

Wie finde ich heraus, welches RPM-Paket eine gesuchte Datei enthält?

Als Beispiel suche ich nach einer mod_files.sh-Datei, die vermutlich mit dem php-devel-Paket geliefert würde. Ich vermutete, dass yum die mod_files.sh-Datei mit dem php-devel x86_64 5.1.6-23.2.el5_3-Paket installieren würde, aber die Datei scheint nicht in meinem Dateisystem installiert zu sein.

Wie finde ich heraus, welches Paket eine bestimmte Datei installiert? Ich suche, wo ich das Paket, das die gesuchte Datei enthalten kann, nicht unbedingt lokal heruntergeladen haben muss.

Ich benutze CentOS 5.

191
wherestheph

Dies ist eine alte Frage, aber die aktuellen Antworten sind falsch :)

Verwenden Sie yum whatprovides mit dem absoluten Pfad zu der gewünschten Datei (die mit einem Platzhalter versehen werden kann). Zum Beispiel:

yum whatprovides '*bin/grep'

Kehrt zurück

grep-2.5.1-55.el5.x86_64 : The GNU versions of grep pattern matching utilities.
Repo        : base
Matched from:
Filename    : /bin/grep

Sie können die Ausgabe und Geschwindigkeit des repoquery-Tools bevorzugen, das im yum-utils-Paket verfügbar ist.

Sudo yum install yum-utils
repoquery --whatprovides '*bin/grep'
grep-0:2.5.1-55.el5.x86_64
grep-0:2.5.1-55.el5.x86_64

repoquery kann andere Abfragen ausführen, z. B. Paketinhalt auflisten, Abhängigkeiten, umgekehrte Abhängigkeiten usw.

252
rjh

So kennen Sie das Paket, das eine bereits installierte Datei besitzt (oder bereitstellt):

rpm -qf myfilename

Hinweis: Dieser Befehl muss nicht als root ausgeführt werden (im Gegensatz zu Sudo yum whatprovides myfilename).

189
dj_segfault

Die beliebteste Antwort ist unvollständig:

Da diese Suche im Allgemeinen nur für Dateien aus installierten Paketen durchgeführt wird, wird yum whatprovides durch das Deaktivieren aller externen Repos blisterierend beschleunigt (das implizite Repo kann nicht deaktiviert werden).

yum --disablerepo=* whatprovides <file>
29
user93374

Es ist zwar einfach, das Paket zu finden, wenn Sie mit dem Internet verbunden sind (Repository). Wenn Sie jedoch nur Zugriff auf RPM-Pakete in Redhat oder Centos DVD haben (dies geschieht häufig, wenn ich einen Server wiederherstellen muss und eine Anwendung benötige) empfehle ich Verwenden Sie die folgenden Befehle, die völlig unabhängig von Internet und Repositorys sind. (Möglicherweise haben Sie viele deinstallierte Pakete auf einer DVD). Nehmen wir an, Sie haben den Paketordner in ~/cent_os_dvd angehängt und suchen nach einem Paket, das "semanage" enthält. Dann können Sie Folgendes ausführen:

for file in `find ~/cent_os_dvd/ -iname '*.rpm'`;  do rpm -qlp $file |grep '.*bin/semanage';  if [ $? -eq 0 ]; then echo "is in";echo $file  ; fi;  done
4
Arash

Sie gehen zu http://www.rpmfind.net und suchen nach der Datei.

Sie erhalten Ergebnisse für viele verschiedene Distributionen und Versionen, aber wahrscheinlich werden auch Fedora und/oder CentOS angezeigt, und Sie kennen den Paketnamen, den Sie mit yum installieren

3
nos

Wenn Sie nur das Dienstprogramm rpm verwenden, sollte dies in jedem Betriebssystem mit rpm funktionieren:

rpm -q --whatprovides [file name]

Ref. https://www.thegeekdiary.com/wie-findet-das-rpm-Paket-spezifische-Datei-oder-Bibliothek-in-rhel-centos/

0
Slivicon

Sie können dies hier aber auch mit Ihrem Paket tun. In meinem Fall war es lsb_release

Ausführen: yum whatprovides lsb_release

Antwort: 

redhat-lsb-core-4.1-24.el7.i686 : LSB Core module support
Repo        : rhel-7-server-rpms
Matched from:
Filename    : /usr/bin/lsb_release

redhat-lsb-core-4.1-24.el7.x86_64 : LSB Core module support
Repo        : rhel-7-server-rpms
Matched from:
Filename    : /usr/bin/lsb_release

redhat-lsb-core-4.1-27.el7.i686 : LSB Core module support
Repo        : rhel-7-server-rpms
Matched from:
Filename    : /usr/bin/lsb_release

redhat-lsb-core-4.1-27.el7.x86_64 : LSB Core module support
Repo        : rhel-7-server-rpms
Matched from:
Filename    : /usr/bin/lsb_release`

Zur Installation ausführen: yum install redhat-lsb-core 

Der Paketname SOLLTE ohne Nummer und Systemtyp sein, damit der yum Packager auswählen kann, was für ihn am besten ist.

0
matson kepson