Wie finde ich heraus, zu welchem ​​Paket ein bestimmter Befehl unter CentOS gehört?

18

Zum Beispiel kann ich leicht feststellen, dass der Befehl locate zum Paket mlocate.i386 gehört.

yum search locate
mlocate.i386 : An utility for finding files by name
[mirror@home /]$ rpm -qa | grep locate
mlocate-0.15-1.el5.1

yum search updatedb
Loaded plugins: fastestmirror, protectbase
0 packages excluded due to repository protections
=========================================== Matched: updatedb ===========================================
mlocate.i386 : An utility for finding files by name

Es ist jedoch nicht so einfach zu ermitteln, zu welchem ​​paketfreien Befehl Folgendes gehört:

yum search free   // this command just returns too much informationy 
rpm -qa | grep free
freetype-2.2.1-31.el5_8.1   // obviously not the package by which free command is installed

Gibt es also eine sichere Methode, um herauszufinden, zu welchem ​​Paket ein bestimmter Befehl unter Linux gehört? Zum Beispiel CentOS oder andere Distributionen

hugemeow
quelle

Antworten:

17

Fragen Sie die rpmdb ab.

rpm -qf $(which free)
Ignacio Vazquez-Abrams
quelle
warum nicht rpm -qf verwenden which free?
Hugemeow
Beides ist in Ordnung. $(...)ist Gewohnheit für mich.
Ignacio Vazquez-Abrams
Die Pipe Waywhich free | xargs rpm -qf
Eido95
24

Ubuntu / Debian- Beispiel, um das Paket des freeBefehls zu überprüfen :

dpkg -S $(which free)
Jeroen Vermeulen - MageHost
quelle
Dies funktioniert nur für installierte Pakete. Ich habe hier etwas gefunden , das für nicht installierte Pakete $ dpkg -S */free$*
funktioniert
@bobrobbob Ich fürchte, das ist nicht richtig. Ich habe getestet, dpkg -S */firefox$*womit auf einem Server, auf dem Firefox installiert ist, mehrere Ergebnisse erzielt werden, auf einem Server ohne Firefox jedoch keine. Ich denke, es kann nicht funktionieren, weil dpkgein Befehl für die lokal installierten Pakete ausgeführt wird. Nicht installierte Pakete finden Sie unter packages.ubuntu.com/…
Jeroen Vermeulen - MageHost
Oh mein. du hast recht, sorry dafür
Bobrobbob
1
Wenn Sie erhalten dpkg-query: gefunden kein Pfad Pattern - Matching dies versuchen : dpkg -S "$(readlink -fn "$(which free)")".
Pablo A
6

Wie sieht es bei CentOS mit yum aus?

Verwenden

which free 

herauszufinden, wo es ist

Für mich ist es bei

/ usr / bin / free

Dann kannst du rennen

yum provides /usr/bin/free

und es wird Ihnen sagen, welches Paket es hat

Kennzeichen
quelle
1

Für alle Red Hat-basierten Distributionen können Sie das Dienstprogramm yum package management verwenden

yum provides `which free`

Das Argument offers gibt an, welches Paket bestimmte Funktionen oder Dateien bereitstellt.

LoveWithMaths
quelle