Ce bref didacticiel explique différentes manières de trouver le package qui fournit un fichier spécifique sous Linux. Cela peut être utile lorsque vous compilez et installez manuellement un package. Lorsque vous compilez un paquet à partir des sources, il est possible que vous receviez une erreur du type "Aucune règle pour créer la cible '
Trouvez le package qui fournit un fichier spécifique sous Linux
Arch Linux, Antergos, Manjaro Linux :
Sur Arch-based, il existe un petit outil de ligne de commande appelé pkgfile , qui est utilisé pour rechercher des fichiers dans des packages.
Pkgfile est pré-installé avec Arch Linux. Si ce n'est pas le cas, vous pouvez l'installer à l'aide de la commande suivante :
$ sudo pacman -S pkgfile
Ensuite, exécutez la commande suivante pour synchroniser avec la base de données pkgfile :
$ sudo pkgfile -u
Maintenant, vous pouvez trouver le package qui fournit un fichier spécifique, disons par exemple alisp.h , en utilisant la commande :
$ pkgfile alisp.h extra/alsa-lib
Comme vous le voyez dans la sortie ci-dessus, alsa-lib le paquet fournit alisp.h dossier. Et, le forfait est disponible à partir de extra dépôt. Vous pouvez maintenant installer ce package comme indiqué ci-dessous.
$ sudo pacman -S alsa-lib
Pour lister tous les fichiers fournis par le package alsa-lib, exécutez :
$ pkgfile -l alsa-lib
RHEL, CentOS, Fedora :
Dans les systèmes basés sur YUM tels que RHEL et ses clones comme CentOS, Scientific Linux, vous pouvez trouver le package qui possède un fichier particulier, en utilisant la commande suivante :
$ yum whatprovides '*filename'
Sur Fedora, utilisez plutôt la commande suivante :
$ dnf provides '*filename'
Si le fichier est déjà disponible dans votre système, dites par exemple /bin/ls , vous pouvez ensuite trouver le package propriétaire du fichier en utilisant la commande :
# rpm -qf /bin/ls coreutils-8.22-18.el7.x86_64
Vous pouvez également utiliser le repoquery commande comme suit :
$ repoquery -f /bin/ls
Si la commande repoquery n'est pas disponible sur votre système, installez yum-utils paquet.
$ sudo yum install yum-utils
Ou,
$ sudo dnf install yum-utils
Debian, Ubuntu, Linux Mint :
Dans tous les systèmes basés sur DEB, vous pouvez trouver le package qui fournit un certain fichier en utilisant apt-file outil.
Installez le fichier apt comme indiqué ci-dessous s'il n'est pas déjà installé :
$ sudo apt-get install apt-file
Si vous venez d'installer apt-file, le cache à l'échelle du système peut être vide. Vous devez exécuter 'apt-file update' en tant que root pour mettre à jour le cache. Vous pouvez également exécuter 'apt-file update' en tant qu'utilisateur normal pour utiliser un cache dans le répertoire personnel de l'utilisateur.
Mettons à jour le cache de la base de données à l'aide de la commande :
$ sudo apt-file update
Ensuite, recherchez les packages contenant un fichier spécifique, par exemple alisp.h , avec la commande :
$ apt-file find alisp.h
Ou,
$ apt-file search alisp.h
L'exemple serait :
libasound2-dev: /usr/include/alsa/alisp.h
Eh bien, libasound2-dev il est! Vous pouvez installer ce package à l'aide de la commande :
$ sudo apt-get install libasound2-dev
Si vous avez déjà le fichier et que vous souhaitez simplement savoir à quel package il appartient, vous pouvez utiliser dpkg commande comme indiqué ci-dessous.
$ dpkg -S $(which alisp.h)
Ou,
$ dpkg -S `which alisp.h`
Si vous connaissez le chemin complet du fichier, dites par exemple /bin/ls , vous pouvez rechercher les packages auxquels il appartient à l'aide de la commande suivante :
$ dpkg -S /bin/ls coreutils: /bin/ls
SUSE / openSUSE :
Sur SUSE et openSUSE, exécutez la commande suivante pour savoir à quel package appartient un certain fichier.
$ zypper wp alisp.h
Ou,
$ zypper se --provides --match-exact alisp.h
Suggestion de lecture :
- Comment répertorier les packages installés à partir d'un certain référentiel sous Linux
- Comment rechercher des dépendances pour un package particulier dans CentOS
Et c'est tout. J'espère que cela t'aides. Si vous connaissez d'autres méthodes pour trouver le paquet contenant un fichier particulier, n'hésitez pas à nous le faire savoir dans la section commentaire ci-dessous. Je vérifierai et mettrai à jour le guide en conséquence.