web-dev-qa-db-fra.com

Comment trouver quel paquet RPM fournit le fichier que je cherche?

Par exemple, je cherche un fichier mod_files.sh qui viendrait probablement avec le package php-devel. J'ai deviné que yum installerait le fichier mod_files.sh avec le paquetage php-devel x86_64 5.1.6-23.2.el5_3, mais le fichier ne semble pas être installé sur mon système de fichiers.

Comment savoir quel paquet installe un fichier spécifique? Je cherche où je n'ai pas nécessairement déjà téléchargé localement le paquet qui peut contenir le fichier que je cherche.

J'utilise CentOS 5.

191
wherestheph

C'est une vieille question, mais les réponses actuelles sont incorrectes :)

Utilisez yum whatprovides , avec le chemin absolu du fichier souhaité (qui peut comporter des caractères génériques). Par exemple:

yum whatprovides '*bin/grep'

Résultats

grep-2.5.1-55.el5.x86_64 : The GNU versions of grep pattern matching utilities.
Repo        : base
Matched from:
Filename    : /bin/grep

Vous préférerez peut-être la sortie et la vitesse de l'outil repoquery, disponible dans le package yum-utils.

Sudo yum install yum-utils
repoquery --whatprovides '*bin/grep'
grep-0:2.5.1-55.el5.x86_64
grep-0:2.5.1-55.el5.x86_64

repoquery peut effectuer d'autres requêtes telles que lister le contenu du paquet, les dépendances, les dépendances inverses, etc.

252
rjh

Pour connaître le package possédant (ou fournissant) un fichier déjà installé:

rpm -qf myfilename

Remarque: cette commande n'a pas besoin d'être exécutée en tant que root (contrairement à Sudo yum whatprovides myfilename)

189
dj_segfault

La réponse la plus populaire est incomplète:

Etant donné que cette recherche sera généralement effectuée uniquement pour les fichiers des packages installés, yum ce qui fournit est rendu extrêmement rapide en désactivant tous les dépôts externes (le référentiel "installé" implicite ne peut pas être désactivé).

yum --disablerepo=* whatprovides <file>
29
user93374

Bien trouver le paquet lorsque vous êtes connecté à Internet (référentiel) est facile, mais lorsque vous n’avez accès qu’aux paquetages RPM dans le DVD Redhat ou Centos (cela m’arrive fréquemment lorsque je dois restaurer un serveur et que j’ai besoin d’une application). Je le recommande. en utilisant les commandes ci-dessous qui sont complètement indépendantes d'Internet et des référentiels. (supposons que vous ayez beaucoup de paquets désinstallés sur un DVD). Supposons que vous ayez monté le dossier Package dans ~/cent_os_dvd et que vous recherchiez un package fournissant "semanage". Vous pouvez ensuite exécuter:

for file in `find ~/cent_os_dvd/ -iname '*.rpm'`;  do rpm -qlp $file |grep '.*bin/semanage';  if [ $? -eq 0 ]; then echo "is in";echo $file  ; fi;  done
4
Arash

Vous allez sur http://www.rpmfind.net et recherchez le fichier.

Vous obtiendrez des résultats pour un grand nombre de distributions et de versions différentes, mais il est fort probable que Fedora et/ou CentOS apparaîtront également et vous connaîtrez le nom du paquet à installer avec yum.

3
nos

En utilisant uniquement l'utilitaire rpm, cela devrait fonctionner dans tout système d'exploitation disposant de rpm:

rpm -q --whatprovides [file name]

Réf. https://www.thegeekdiary.com/how-to-find-which-rpm-package-provides-a-specific-file-or-library-in-rhel-centos/

0
Slivicon

Vous pouvez faire la même chose ici mais avec votre paquet. Dans mon cas, c'était lsb_release

Exécuter: yum whatprovides lsb_release

Réponse: 

redhat-lsb-core-4.1-24.el7.i686 : LSB Core module support
Repo        : rhel-7-server-rpms
Matched from:
Filename    : /usr/bin/lsb_release

redhat-lsb-core-4.1-24.el7.x86_64 : LSB Core module support
Repo        : rhel-7-server-rpms
Matched from:
Filename    : /usr/bin/lsb_release

redhat-lsb-core-4.1-27.el7.i686 : LSB Core module support
Repo        : rhel-7-server-rpms
Matched from:
Filename    : /usr/bin/lsb_release

redhat-lsb-core-4.1-27.el7.x86_64 : LSB Core module support
Repo        : rhel-7-server-rpms
Matched from:
Filename    : /usr/bin/lsb_release`

Exécuter pour installer: yum install redhat-lsb-core 

Le nom du paquet DEVRAIT être sans numéro ni type de système afin que le conditionneur yum puisse choisir ce qui lui convient le mieux.

0
matson kepson