web-dev-qa-db-fra.com

Comment savoir quel paquet possède un fichier?

Comment savoir de quel paquet Debian provient un fichier?

91

Plusieurs applications de Debian effectuent cette tâche. vérifiez cette page pour obtenir une description. J'en mentionnerai deux, apt-file et dlocate.

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

dlocate est une alternative rapide à dpkg -L (la commande qui répertorie le contenu du paquet) et, dans ce cas, il ne recherche que les paquets installés. La recherche est effectuée par dlocate -S file.name.

Vous pouvez aussi rechercher des paquets en ligne en utilisant packages.debian.org serveur (le ) Rechercher le contenu des paquets section).


Installation et utilisation de apt-file

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

Sudo apt-get update

Voir à quoi sert apt-file:

apt-cache show apt-file

Installez-le:

Sudo apt-get install apt-file

Lire les données des référentiels (cela fonctionne aussi sans Sudo mais crée le cache de l'utilisateur ensuite; 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 ou source_lxrandr.py. Pas très utile dans notre cas. 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 en est un. Nous pouvons enquêter plus loin. Courir:

apt-cache show x11-xserver-utils

Bingo! C'est le paquet.

42
whitequark
user@Host:~$ dpkg-query -S /bin/bash 
bash: /bin/bash

Où bash est le nom du paquet.

113

Une autre alternative:

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

Sur mon Ubuntu au moins, les deux semblent être dans le paquet dpkg, donc aucun avantage réel pour aucun en particulier ...

39
Gert van den Berg

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

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

Mais sur:

dpkg -S /bin/nc

nous obtenons dpkg-query: no path found matching pattern /bin/nc.

Cela est dû au fait que /bin/nc est généré par l'appel update-alternatives dans le script postinst exécuté après l'installation.

Cela fonctionne comme ceci car une autre version de /bin/nc est fournie par le paquetage netcat-traditional.

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 de liens symboliques alternatifs, nous pouvons simplement suivre le lien avec readlink -f:

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

N'étant pas familier avec Debian, j'ai été dérouté 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:~$ 
2
Philip Kearns