Como descobrir a qual pacote determinado comando pertence no CentOS?

19

Por exemplo, posso encontrar facilmente o comando localizar pertence ao pacote 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

Mas não é tão fácil encontrar a qual comando o pacote livre pertence:

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

Existe alguma maneira conveniente de saber a qual pacote um comando específico pertence no Linux? Por exemplo, CentOS ou algumas outras distribuições

hugemeow
fonte

Respostas:

17

Consulte o rpmdb.

rpm -qf $(which free)
Ignacio Vazquez-Abrams
fonte
por que não usar rpm -qf which free?
Hugemeow #
Qualquer um serve. $(...)é um hábito para mim.
Ignacio Vazquez-Abrams
A forma de tubowhich free | xargs rpm -qf
Eido95
24

Exemplo do Ubuntu / Debian para verificar o pacote do freecomando:

dpkg -S $(which free)
Jeroen Vermeulen - MageHost
fonte
isso funciona apenas para pacotes instalados. eu encontrei aqui algo que funciona para pacotes não instalados$ dpkg -S */free$*
bobrobbob
@bobrobbob Receio que isso não esteja correto. Eu testei com o dpkg -S */firefox$*que fornece vários resultados em um servidor com o Firefox instalado, nenhum em um servidor sem o Firefox. Eu acho que não pode funcionar porque dpkgé um comando que opera nos pacotes instalados localmente. Para encontrar pacotes não instalados, você pode ir para packages.ubuntu.com/…
Jeroen Vermeulen - MageHost 2/17
Oh meu. Você está certo, desculpe por isso
bobrobbob
11
Se você receber dpkg-query: no caminho encontrado correspondência de padrão tentar este : dpkg -S "$(readlink -fn "$(which free)")".
Pablo A
7

Para o CentOS, que tal o yum fornece?

Usar

which free 

para descobrir onde fica

Para mim é no

/ usr / bin / grátis

Então você pode correr

yum provides /usr/bin/free

e ele vai te dizer qual pacote tem

Marca
fonte
Se the commandnão estava instalado ou disponível no seu centos, você poderia usá-lo yum provides <command>, porque which <command>retornaránot <command> in ...
Lane Ouyang
1

Para todas as distribuições baseadas em red hat, você pode usar o utilitário de gerenciamento de pacotes yum

yum provides `which free`

O argumento Fornece especifica qual pacote fornece determinado recurso ou arquivo.

LoveWithMaths
fonte