Question Comment savoir quel paquet possède un fichier?


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


79
2017-08-23 10:23


origine




Réponses:


Il y a plusieurs utilitaires dans Debian qui effectuent cette tâche; vérifier cette page pour une description. Je vais en mentionner deux, apt-file et dlocate.

apt-file recherche 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 comme tel, elle recherche uniquement les paquetages installés. La recherche est effectuée par dlocate -S file.name.

Aussi, vous pouvez rechercher des paquets en ligne en utilisant packages.debian.org serveur (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 quoi apt-file est pour:

apt-cache show apt-file

Installez-le:

sudo apt-get install apt-file

Lisez les données des référentiels (cela fonctionne aussi 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

Effectuez une recherche Dans cet exemple, nous voulons savoir dans quel paquet xrandr l'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$

($ dénote la fin de 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 le fait. Nous pouvons enquêter davantage. Courir:

apt-cache show x11-xserver-utils

Bingo! Ceci est le package.


38



Le premier lien dans cette réponse (debianhelp.co.uk/findfile.htm) semble être maintenant disparu. - rogpeppe


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

Où bash est le nom du paquet.


86





Une autre alternative:

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

Sur mon Ubuntu au moins, les deux semblent être dans le dpkg paquet, donc pas de réel avantage pour un spécifique ...


31





Fichiers d'installation générés 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 package netcat-openbsd.

Mais sur:

dpkg -S /bin/nc

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

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

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

Je ne pense pas qu'il existe une manière générale 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)"

9





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'investigation 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:~$ 

1