Comment trouver à quel package appartient une certaine commande sur CentOS?

19

Par exemple, je peux facilement trouver que la commande Locate appartient au package 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

Mais ce n'est pas si facile de trouver à quelle commande package free appartient:

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-t-il un moyen efficace de savoir à quel package appartient une commande spécifique sous Linux? Par exemple CentOS ou d'autres distributions

hugemeow
la source

Réponses:

17

Recherchez le rpmdb.

rpm -qf $(which free)
Ignacio Vazquez-Abrams
la source
pourquoi ne pas utiliser rpm -qf which free?
hugemeow
N'importe quel. $(...)c'est l'habitude pour moi.
Ignacio Vazquez-Abrams
The pipe waywhich free | xargs rpm -qf
Eido95
24

Exemple Ubuntu / Debian pour vérifier le paquet de la freecommande:

dpkg -S $(which free)
Jeroen Vermeulen - MageHost
la source
cela ne fonctionne que pour les packages installés. j'ai trouvé ici quelque chose qui fonctionne pour les paquets non installés$ dpkg -S */free$*
bobrobbob
@bobrobbob J'ai bien peur que ce ne soit pas correct. J'ai testé avec dpkg -S */firefox$*qui donne plusieurs résultats sur un serveur sur lequel Firefox est installé, aucun sur un serveur sans Firefox. Je pense que cela ne peut pas fonctionner car dpkgc'est une commande opérant sur les packages installés localement. Pour trouver des packages non installés, vous pouvez aller sur packages.ubuntu.com/…
Jeroen Vermeulen - MageHost
Oh mon. vous avez raison, désolé pour cela
bobrobbob
1
Si vous obtenez dpkg-requête: aucun chemin trouvé modèle correspondant à essayer cette : dpkg -S "$(readlink -fn "$(which free)")".
Pablo A du
7

Pour CentOS, qu'en est-il de yum?

Utilisation

which free 

pour savoir où il se trouve

Pour moi, c'est à

/ usr / bin / gratuit

Alors vous pouvez exécuter

yum provides /usr/bin/free

et il vous dira quel paquet l'a

marque
la source
Si the commandn'était pas installé ou disponible dans vos centos, vous pourriez utiliser yum provides <command>, car which <command>reviendranot <command> in ...
Lane Ouyang
1

Pour toutes les distributions basées sur Red Hat, vous pouvez utiliser l'utilitaire de gestion de paquets yum

yum provides `which free`

fournit l'argument spécifie quel package fournit certaines fonctionnalités ou certains fichiers.

LoveWithMaths
la source