GNU/Linux >> Tutoriels Linux >  >> Linux

Comment trouver le package qui fournit un fichier spécifique sous Linux

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 '', nécessaire à ''. Arrêtez." . Vous ne savez peut-être pas exactement quels packages fournissent le fichier manquant. Dans de tels cas, vous pouvez facilement trouver les packages qui fournissent ces fichiers manquants et les installer dans votre machine Linux comme décrit dans ce guide.

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.


Linux
  1. Comment utiliser la commande Tar sous Linux

  2. Comment trouver un fichier sous Linux

  3. Comment trouver une version de package sous Linux

  4. Comment lister les dépendances d'un paquet sous Linux

  5. Comment installer un fichier .dsc sous Linux

Comment utiliser la commande Linux head

Comment utiliser la commande Linux diff

Comment trouver la version de Redhat Linux installée

Comment trouver une chaîne dans un fichier sous Linux

Autorisations Linux - Comment trouver les autorisations d'un fichier

Comment trouver des fichiers contenant une chaîne de texte spécifique sous Linux