Jak znaleźć pakiet, do którego należy określone polecenie w CentOS?

19

Na przykład mogę łatwo znaleźć polecenie zlokalizowania należy do pakietu mlocate.i386.

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

Ale nie jest tak łatwo znaleźć, do której komendy free paczka należy:

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

Czy istnieje jakiś przekonujący sposób, aby dowiedzieć się, do którego pakietu należy określone polecenie w systemie Linux? Na przykład CentOS lub niektóre inne dystrybucje

hugemeow
źródło

Odpowiedzi:

17

Zapytanie o rpmdb.

rpm -qf $(which free)
Ignacio Vazquez-Abrams
źródło
dlaczego nie użyć rpm -qf which free?
hugemeow
Albo jedno jest w porządku. $(...)jest dla mnie nawykiem.
Ignacio Vazquez-Abrams
Rurociągwhich free | xargs rpm -qf
Eido95
24

Przykład Ubuntu / Debian, aby sprawdzić pakiet freepolecenia:

dpkg -S $(which free)
Jeroen Vermeulen - MageHost
źródło
działa to tylko w przypadku zainstalowanych pakietów. znalazłem tutaj coś, co działa dla niezainstalowanych pakietów$ dpkg -S */free$*
bobrobbob
@ bobrobbob Obawiam się, że to nie jest poprawne. Testowałem, z dpkg -S */firefox$*którym daje wiele wyników na serwerze z zainstalowanym Firefoksem, żaden na serwerze bez Firefoksa. Myślę, że to nie działa, ponieważ dpkgjest to polecenie działające na lokalnie zainstalowane pakiety. Aby znaleźć non zainstalowane pakiety można przejść do packages.ubuntu.com/...
Jeroen Vermeulen - MageHost
o mój. masz rację, przepraszam za to
bobrobbob
1
Jeśli masz dpkg-zapytanie: nie znaleziono ścieżki dopasowania wzorca spróbuj tego : dpkg -S "$(readlink -fn "$(which free)")".
Pablo A,
7

W przypadku CentOS, co powiesz na yum?

Posługiwać się

which free 

aby dowiedzieć się, gdzie to jest

Dla mnie to o

/ usr / bin / free

Więc możesz biegać

yum provides /usr/bin/free

i powie ci, która paczka ma to

znak
źródło
Jeśli the commandnie został zainstalowany lub dostępny w twoich centach, możesz użyć yum provides <command>, ponieważ which <command>powrócinot <command> in ...
Lane Ouyang
1

Dla wszystkich dystrybucji opartych na red-hat możesz użyć narzędzia do zarządzania pakietami yum

yum provides `which free`

Argument zapewnia określa, który pakiet zapewnia określoną funkcję lub plik.

LoveWithMaths
źródło