Recherche de site Web

Comment savoir quel paquet fournit une commande sous Linux


Sur les systèmes Linux, les commandes sont généralement fournies par des paquets installés depuis les dépôts de distribution. Pour identifier quel paquet fournit une commande particulière, vous pouvez utiliser les outils de gestion de paquets spécifiques à votre distribution Linux. Cela peut être utile pour installer des commandes manquantes ou résoudre les dépendances des paquets.

Trouver quel paquet fournit une commande spécifique sous Linux

Pour savoir quel paquet fournit une certaine commande sur différentes distributions Linux, vous utilisez généralement le système de gestion de paquets (par exemple Apk, Apt, DNF, Pacman, Zypper, etc.) spécifique à votre distribution.

Voici comment vous pouvez le faire pour certaines des distributions Linux les plus courantes :

1. Identifier le paquet possédant une commande Linux dans Alpine Linux

Dans Alpine Linux, vous pouvez utiliser le gestionnaire de paquets apk pour savoir quel paquet fournit une commande spécifique.

# apk search -e pstree
pstree-2.40-r1

Trouver quel paquet fournit la commande donnée dans Alpine Linux

Cette commande recherche des paquets dans le dépôt de paquets d'Alpine Linux qui sont liés à la commande pstree.

Voici une répartition de la commande :

  • apk est l'utilitaire de gestion de paquets pour Alpine Linux, similaire à apt pour les distributions basées sur Debian ou à yum pour les distributions basées sur Red Hat.
  • search est la commande pour rechercher des paquets dans les dépôts.
  • -e ou --exact est une option qui indique à apk de rechercher un nom de paquet exact, plutôt que d'effectuer une recherche par sous-chaîne.
  • pstree est le nom du paquet ou de la commande que vous recherchez.

En exécutant apk search -e pstree, Alpine Linux recherchera dans ses dépôts de paquets tous les paquets qui fournissent la commande pstree ou qui sont nommés exactement « pstree ».

Cela peut vous aider à trouver et à installer le paquet contenant l'utilitaire pstree s'il n'est pas déjà installé sur votre système Alpine Linux.

2. Trouver la source du paquet d'une commande Linux sur Arch Linux, EndeavourOS et Manjaro Linux

Sur Arch Linux et ses variantes comme EndeavourOS et Manjaro Linux, vous pouvez utiliser la commande pacman avec les options -F ou -Qo pour rechercher le fichier (ou la commande) dans les paquets.

Par exemple, la commande suivante affichera les paquets qui contiennent la commande grep :

$ pacman -F grep

La commande pacman -F grep est utilisée pour trouver quel(s) paquet(s) fournit(ent) un fichier ou une commande spécifique.

Voici ce que signifient les différentes parties de la commande :

  • pacman : C'est le gestionnaire de paquets pour Arch Linux.
  • -F (ou --files) : Cette option indique à pacman de rechercher des paquets contenant un fichier spécifique.
  • grep : Ceci est le fichier ou la commande que vous recherchez. Dans ce cas, c'est la commande grep.

Lorsque vous exécutez pacman -F grep, le gestionnaire de paquets recherche dans ses bases de données de paquets et liste tous les paquets installés qui contiennent un fichier ou un exécutable nommé grep.

La sortie de cette commande affichera généralement le(s) nom(s) du paquet et le(s) chemin(s) complet(s) du(des) fichier(s) correspondant(s) à grep. Par exemple, la sortie pourrait ressembler à ceci :

core/grep 3.11-1
    usr/bin/grep
[...]

Cela indique que la commande grep est fournie par le paquet grep du dépôt core, et que le fichier exécutable se trouve à /usr/bin/grep.

Si plusieurs paquets fournissent des fichiers correspondant à grep, ils seront tous listés. En revanche, si aucun paquet ne fournit un fichier nommé grep, la commande ne retournera aucun résultat.

Vous pouvez également utiliser la commande pacman -Qo pour trouver quel paquet possède ou fournit un fichier ou une commande spécifique.

$ pacman -Qo grep

Voici ce que signifient les différentes parties de la commande :

  • pacman : C'est le gestionnaire de paquets pour Arch Linux.
  • -Q : Cette option indique à pacman d'interroger la base de données locale des paquets.
  • -o (ou --owns) : Cette option spécifie que vous voulez rechercher le paquet qui possède un fichier particulier.
  • grep : Ceci est le fichier ou la commande que vous recherchez. Dans ce cas, c'est la commande grep.

Lorsque vous exécutez pacman -Qo grep, pacman recherchera dans tous les paquets installés sur votre système et trouvera le ou les paquets qui contiennent ou fournissent le fichier ou l'exécutable nommé grep.

La sortie de cette commande affichera généralement le ou les noms des packages possédant le ou les fichiers correspondant à grep. Par exemple, la sortie pourrait ressembler à ceci :

/usr/bin/grep is owned by grep 3.11-1

Cela indique que la commande grep (située à /usr/bin/grep) est fournie par le paquet grep.

Si plusieurs paquets fournissent des fichiers correspondant à grep, ils seront tous listés. Si aucun paquet ne possède un fichier nommé grep, la commande ne renverra aucun résultat.

Cette commande est utile lorsque vous devez savoir à quel paquet appartient un fichier ou une commande spécifique sur votre système Arch Linux. Elle peut vous aider à résoudre des problèmes de fichiers ou de dépendances manquants, ou à réinstaller sélectivement des paquets qui fournissent des composants spécifiques.

La principale différence entre pacman -F grep et pacman -Qo grep est que -F recherche dans les bases de données de paquets les paquets qui contiennent un fichier spécifique, tandis que -Qo recherche les fichiers déjà installés sur votre système et trouve quels paquets les possèdent.

3. Localiser le paquet pour une commande Linux dans Debian, Ubuntu et leurs dérivés

Sur les systèmes basés sur Debian (comme Ubuntu), vous pouvez utiliser la commande dpkg avec l'option -S pour rechercher le paquet qui a installé un fichier spécifique.

Cependant, si le fichier n'est pas déjà installé, vous voudrez utiliser la commande apt-file. Tout d'abord, assurez-vous que apt-file est installé et que sa base de données est à jour :

$ sudo apt update
$ sudo apt install apt-file
$ sudo apt-file update

Ensuite, recherchez le paquet qui fournit une commande spécifique, par exemple la commande pstree, en utilisant la commande suivante :

$ apt-file search pstree

Exemple de sortie :

criu: /usr/lib/python3/dist-packages/pycriu/images/pstree_pb2.py
manpages-ja: /usr/share/man/ja/man1/pstree.1.gz
psmisc: /usr/bin/pstree
psmisc: /usr/bin/pstree.x11
psmisc: /usr/share/man/de/man1/pstree.1.gz
psmisc: /usr/share/man/fr/man1/pstree.1.gz
psmisc: /usr/share/man/man1/pstree.1.gz
psmisc: /usr/share/man/man1/pstree.x11.1.gz
psmisc: /usr/share/man/pt_BR/man1/pstree.1.gz
psmisc: /usr/share/man/ru/man1/pstree.1.gz
psmisc: /usr/share/man/uk/man1/pstree.1.gz
psmisc: /usr/share/pixmaps/pstree16.xpm
psmisc: /usr/share/pixmaps/pstree32.xpm
python-psutil-doc: /usr/share/doc/python-psutil-doc/examples/pstree.py
recap: /usr/lib/recap/core/pstree
systemtap-doc: /usr/share/systemtap/examples/process/pstree.meta
systemtap-doc: /usr/share/systemtap/examples/process/pstree.stp
tomoyo-tools: /usr/sbin/tomoyo-pstree
tomoyo-tools: /usr/share/man/man8/tomoyo-pstree.8.gz

Trouver quel paquet fournit une commande spécifique sous Linux

Comme vous l'avez remarqué dans la sortie ci-dessus, le paquet psmisc fournit la commande pstree. Cette approche vous permet d'identifier le paquet nécessaire à installer ou de vous assurer que pstree est disponible sur votre système.

Ou, si vous avez déjà pstree installé et que vous voulez juste vérifier que pstree provient de ce paquet, vous pouvez utiliser :

$ dpkg -S pstree

4. Découvrir le paquet pour une commande spécifique dans Fedora, CentOS, RHEL et leurs dérivés

Sur Fedora et d'autres systèmes basés sur RPM (comme AlmaLinux, CentOS, RHEL et Rocky Linux), vous pouvez utiliser la commande dnf. Sur les anciens systèmes, vous pourriez avoir besoin d'utiliser yum.

Par exemple, pour rechercher des paquets qui fournissent des fichiers correspondant au motif */pstree, vous exécuteriez :

$ dnf provides */pstree

Voici une répartition de ce que fait la commande :

  • dnf : Il s'agit de la commande du gestionnaire de paquets DNF.
  • fournit : Cette sous-commande indique à DNF de rechercher les paquets qui fournissent un fichier ou une capacité spécifique.
  • */pstree : Il s'agit d'un motif global qui correspond à tout fichier nommé pstree. La partie * signifie « n'importe quels caractères » avant le nom du fichier.

Lorsque vous exécutez cette commande, DNF recherchera dans ses bases de données de paquets et listera tous les paquets disponibles contenant un fichier nommé pstree. Ce fichier est généralement l'exécutable de l'utilitaire pstree, qui affiche un arbre de processus.

La sortie de cette commande affichera les noms des paquets et les numéros de version qui fournissent le fichier pstree. Par exemple, la sortie pourrait ressembler à ceci :

psmisc-23.6-4.fc39.x86_64 : Utilities for managing processes on your system
Repo        : fedora
Matched from:
Provide    : /usr/bin/pstree

Cela indique que le fichier pstree (situé à /usr/bin/pstree) est principalement fourni par le paquet psmisc, version 23.6-4, depuis le dépôt Fedora.

En utilisant la commande dnf provides, vous pouvez trouver quel(s) paquet(s) vous devez installer pour obtenir un fichier ou un utilitaire spécifique sur votre système.

5. Identifier le paquet associé à une commande Linux dans SUSE, openSUSE

Sur SUSE et openSUSE, vous pouvez utiliser la commande zypper se --provides pour rechercher les paquets qui fournissent le fichier ou l'exécutable spécifié.

$ zypper se --provides '/usr/bin/grep'

Voici une répartition de la commande :

  • zypper : Il s'agit de l'interface en ligne de commande pour le gestionnaire de paquets ZYpp.
  • se : Il s'agit d'une abréviation pour la sous-commande search, qui recherche des paquets.
  • --provides : Cette option demande à zypper de rechercher des paquets qui fournissent un fichier ou une capacité spécifique.
  • '/usr/bin/grep' : Il s'agit du fichier ou du chemin exécutable que vous recherchez. Dans ce cas, c'est le chemin de la commande grep, qui se trouve généralement à /usr/bin/grep.

Lorsque vous exécutez cette commande, zypper parcourra ses bases de données de paquets et listera tous les paquets disponibles qui contiennent ou fournissent le fichier /usr/bin/grep.

La sortie de cette commande affichera les noms des paquets, les versions et les informations du dépôt pour les paquets qui fournissent le fichier spécifié. Par exemple, la sortie pourrait ressembler à ceci :

Loading repository data...
Reading installed packages...

S | Name                    | Summary                                 | Type
--+-------------------------+------------------------------------------+-------
  | grep-3.11-3          | Pattern matching utilities               | package
[...]

Cette sortie indique que le fichier /usr/bin/grep est principalement fourni par le paquet grep (version 3.11-3).

6. Trouver le paquet derrière une commande Linux dans NixOS

Dans NixOS Linux, vous pouvez savoir quel paquet fournit une commande spécifique en utilisant l'utilitaire nix-env.

Par exemple, pour savoir quel paquet fournit la commande pstree, vous exécuteriez :

$ nix-env -qaP pstree

Cela va rechercher tous les paquets installés et afficher le nom du paquet et le chemin si une correspondance est trouvée.

Exemple de sortie :

nixpkgs.pstree  pstree-2.39

Indiquant que la commande pstree est fournie par le paquet pstree-2.39.

Vous pouvez également utiliser la commande nix search pour trouver le nom du paquet qui fournit une certaine commande. Bien que cette commande soit encore expérimentale, vous pouvez l'utiliser pour rechercher un paquet.

Cela peut être lent la première fois, mais les exécutions suivantes utiliseront les résultats mis en cache.

Par exemple, pour trouver le paquet contenant la commande pstree, exécutez :

$ nix --extra-experimental-features "nix-command flakes" search nixpkgs pstree

Exemple de sortie :

* legacyPackages.x86_64-linux.psmisc (23.6)
  A set of small useful utilities that use the proc filesystem (such as fuser, killall and pstree)

* legacyPackages.x86_64-linux.pstree (2.39)
  Show the set of running processes as a tree

7. Révéler les origines des commandes dans Gentoo

Nous pouvons trouver quel paquet fournit une commande spécifique en utilisant l'outil equery du paquet app-portage/gentoolkit dans Gentoo Linux.

Assurez-vous d'avoir app-portage/gentoolkit installé :

# emerge --ask app-portage/gentoolkit

Pour rechercher un paquet qui fournit une commande spécifique, utilisez equery avec l'option belongs :

equery belongs /path/to/command

Remplacez /path/to/command par le chemin complet de la commande que vous recherchez.

Si vous ne connaissez pas le chemin de la commande, vous pouvez utiliser la commande whereis pour la trouver.

# whereis pstree

Exemple de sortie :

# whereis pstree
pstree: /usr/bin/pstree /usr/share/man/man1/pstree.1.bz2

Maintenant, découvrons quel paquet fournit la commande pstree en utilisant la commande :

# equery belongs /usr/bin/pstree

Cela affichera le nom du paquet et la catégorie qui fournit la commande grep, par exemple :

 * Searching for /usr/bin/pstree ... 
sys-process/psmisc-23.6 (/usr/bin/pstree)

Indiquant que la commande pstree est fournie par le paquet sys-apps/psmisc.

Identifier quel paquet fournit une commande dans Gentoo

Si vous voulez juste rechercher un nom de commande sans spécifier le chemin complet, vous pouvez utiliser l'option hasuse à la place :

# equery hasuse search-term

Cela recherchera des paquets qui ont un flag USE spécifique ou fournissent un exécutable spécifique.

Conclusion

Les gestionnaires de paquets de la plupart des distributions Linux majeures offrent des options intégrées pour identifier le paquet qui fournit une commande ou un fichier particulier. Ils permettent de rechercher dans les bases de données de paquets et de localiser le paquet source de toute commande ou fichier donné.

Cette capacité est souvent utile pour résoudre les problèmes de dépendances manquantes, réinstaller sélectivement des paquets et s'assurer que votre système dispose des composants nécessaires installés.

Lecture Connexe : Comment Trouver Le Paquet Qui Fournit Un Fichier Spécifique Sous Linux