Als Beispiel suche ich eine mod_files.sh
Datei, die vermutlich mit dem php-devel
Paket geliefert wird. Ich vermutete, dass yum
die mod_files.sh
Datei mit dem php-devel x86_64 5.1.6-23.2.el5_3
Paket installiert werden würde , aber die Datei scheint nicht auf meinem Dateisystem installiert zu sein.
Wie finde ich heraus, welches Paket eine bestimmte Datei installiert? Ich suche, wo ich das Paket, das möglicherweise die gesuchte Datei enthält, nicht unbedingt bereits lokal heruntergeladen habe.
Ich benutze CentOS 5.
rpm
, sondern müssen es verwendenyum
.Antworten:
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 möglicherweise mit einem Platzhalter versehen ist). Beispielsweise:
Kehrt zurück
Möglicherweise bevorzugen Sie die Ausgabe und Geschwindigkeit des
repoquery
Werkzeugs, die imyum-utils
Paket enthalten sind.repoquery
kann andere Abfragen ausführen, z. B. das Auflisten von Paketinhalten, Abhängigkeiten, umgekehrten Abhängigkeiten usw.quelle
So kennen Sie das Paket, das eine bereits installierte Datei besitzt (oder bereitstellt):
quelle
rpm -qf <filename>
am besten geeignet zu sein, um zu bestimmen, welches Paket eine installierte Anwendung bereitstellt (da es sich möglicherweise von dem unterscheidet, was sich im aktuellen Yum-Repository-Cache befindet), und esyum whatprovides <filename>
ist am besten geeignet, um zu bestimmen, welches Paket eine noch zu installierende Anwendung bereitstellt Anwendung. Jeder hat seinen eigenen Zweck.yum whatprovides ...
root nur erforderlich, wenn die Anwendung ein Root-Paket ist (dh sich in befindet/sbin
).rpm -qf ...
Benötigt jedoch auch root, um RPMs von zu lesen/sbin
. Daher schlage ich vor, dass die Root-Anforderungen für beide Methoden funktional äquivalent sind.Die beliebteste Antwort ist unvollständig:
Da diese Suche im Allgemeinen nur nach Dateien aus installierten Paketen durchgeführt wird, wird yum whatprovides durch Deaktivieren aller externen Repos unglaublich schnell gemacht (das implizite "installierte" Repo kann nicht deaktiviert werden).
quelle
--disablerepo=*
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, der mit yum installiert werden soll
quelle
Das Paket zu finden, wenn Sie mit dem Internet (Repository) verbunden sind, ist jedoch einfach, wenn Sie nur Zugriff auf RPM-Pakete in Redhat oder Centos DVD haben (dies passiert mir häufig, wenn ich einen Server wiederherstellen muss und eine Anwendung benötige). Ich empfehle Verwenden Sie die folgenden Befehle, die völlig unabhängig von Internet und Repositorys sind. (Vermutlich haben Sie viele deinstallierte Pakete auf einer DVD). Angenommen, Sie haben den Paketordner in ~ / cent_os_dvd gemountet und suchen nach einem Paket, das "semanage" bereitstellt. Dann können Sie Folgendes ausführen:
quelle
Wenn Sie nur das RPM-Dienstprogramm verwenden, sollte dies in jedem Betriebssystem mit RPM funktionieren:
Ref. https://www.thegeekdiary.com/how-to-find-which-rpm-package-provides-a-specific-file-or-library-in-rhel-centos/
quelle
Sie können dies hier genauso tun, aber mit Ihrem Paket. In meinem Fall war es
lsb_release
Lauf:
yum whatprovides lsb_release
Antwort:
Zum Installieren ausführen:
yum install redhat-lsb-core
Der Paketname sollte ohne Nummer und Systemtyp sein, damit Ihr Packager auswählen kann, was für ihn am besten ist.
quelle