117 votes

Comment savoir quel paquet possède un fichier ?

Comment puis-je trouver de quel paquet Debian provient un fichier ?

149voto

alexandrul Points 6775
user@host:~$ dpkg-query -S /bin/bash 
bash: /bin/bash

Où bash est le nom du paquet.

63voto

VolkA Points 10297

Pour ce faire, sans installer de paquet supplémentaire, exécutez

user@host:~$ dpkg-query -S /bin/bash 
bash: /bin/bash

où bash est le nom du paquet.


Alternativement, il y a plusieurs utilitaires dans Debian qui effectuent cette tâche ; vérifiez cette page pour une description. Je n'en mentionnerai que deux, apt-file y dlocate .

apt-file recherche dans son cache interne, ce qui vous permet de ne pas installer tous les paquets que vous souhaitez rechercher. Vous trouverez ci-dessous un guide plus détaillé.

dlocate est une alternative rapide à dpkg -L (la commande qui liste le contenu des paquets), et de ce fait, elle ne recherche que les paquets installés. La recherche est effectuée par dlocate -S file.name .

Vous pouvez également rechercher des paquets en ligne en utilisant paquets.debian.org (le Rechercher le contenu des paquets section).


Installation et utilisation apt-file

C'est une bonne idée de mettre à jour d'abord :

sudo apt-get update

Voir ce que apt-file est pour :

apt-cache show apt-file

Installez-le :

sudo apt-get install apt-file

Lire des données à partir de référentiels (cela fonctionne également sans sudo mais crée alors le cache de l'utilisateur ; avec sudo le cache est à l'échelle du système) :

sudo apt-file update

Effectuer une recherche. Dans cet exemple, nous voulons savoir dans quel package xrandr exécutable est :

apt-file search xrandr

Il répertorie de nombreux paquets avec unxrandr , lxrandr.mo o source_lxrandr.py . Pas très utile dans notre cas. Une recherche plus intelligente :

apt-file search -x /xrandr$

( $ indique la fin de la ligne). Exemple de sortie :

bash-completion: /usr/share/bash-completion/completions/xrandr
x11-xserver-utils: /usr/bin/xrandr

Le premier résultat ne ressemble pas à un exécutable, le second oui. Nous pouvons enquêter davantage. Exécuter :

apt-cache show x11-xserver-utils

Bingo ! C'est le paquet.

47voto

Gert van den Berg Points 958

Une autre alternative :

$ dpkg -S /bin/bash
bash: /bin/bash

Sur mon Ubuntu, en tout cas, les deux semblent être dans le répertoire dpkg donc pas d'avantage réel pour l'un ou l'autre...

19voto

Fichiers générés par l'installation ne sera pas trouvé par dpkg -S comme mentionné à : https://askubuntu.com/a/667227/52975

Par exemple, /bin/nc apparaît lorsque vous installez le paquet netcat-openbsd .

Mais sur :

dpkg -S /bin/nc

on obtient dpkg-query: no path found matching pattern /bin/nc .

Cela se produit parce que /bin/nc est généré par le update-alternatives dans l'appel postinst script qui est exécuté après l'installation.

Cela fonctionne ainsi parce qu'une autre version de /bin/nc est fourni par le netcat-traditional paquet.

Je ne pense pas qu'il existe un moyen général de trouver de tels fichiers générés. Dans le cas spécifique des liens symboliques alternatifs, nous pouvons simplement suivre le lien avec readlink -f :

dpkg -S "$(readlink -f /bin/nc)"

6voto

Philip Kearns Points 1005

N'étant pas familier avec Debian, j'ai été déconcerté lorsque j'ai essayé ceci :

kearnsp@xubuntuvb:~$ dpkg -S /usr/bin/vncviewer
dpkg-query: no path found matching pattern /usr/bin/vncviewer
kearnsp@xubuntuvb:~$ 

Un peu d'enquête et j'ai trouvé le paquet :

kearnsp@xubuntuvb:~$ ls -l /usr/bin/vncviewer
lrwxrwxrwx 1 root root 27 May 28 15:49 /usr/bin/vncviewer -> /etc/alternatives/vncviewer
kearnsp@xubuntuvb:~$ ls -l /etc/alternatives/vncviewer
lrwxrwxrwx 1 root root 20 May 28 15:49 /etc/alternatives/vncviewer -> /usr/bin/xvnc4viewer
kearnsp@xubuntuvb:~$ dpkg -S /usr/bin/xvnc4viewer
xvnc4viewer: /usr/bin/xvnc4viewer
kearnsp@xubuntuvb:~$

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X