web-dev-qa-db-fra.com

Trouver à quel paquet appartient un fichier dans Ubuntu/Debian?

Je manque souvent un programme, une page de manuel ou un autre fichier lorsque je travaille sur mon système Ubuntu 8.04. Existe-t-il un moyen simple de rechercher quel paquet contient un fichier donné (qu'il soit déjà installé ou non)? Peut-être une option obscure pour apt ou dpkg?

286
Jay Conrod
apt-file search filename

ou

apt-file search /path/to/file


Pour installer apt-file , utilisez:

Sudo apt-get install apt-file

Vous devrez mettre à jour sa base de données avant de pouvoir l'utiliser:

Sudo apt-file update
235
John T

(Debian/Ubuntu) Découvrez à quel paquet appartient un fichier :

dpkg -S /usr/bin/ls

'dpkg -S' correspond simplement à la chaîne que vous avez fournie, utilisez donc simplement 'ls' comme argument pour faire correspondre tout fichier d'un paquet contenant un 'ls' n'importe où dans le nom du fichier. C'est donc généralement une bonne idée d'utiliser un chemin absolu. Vous pouvez voir dans le deuxième exemple que 12 000 fichiers connus de dpkg correspondent à la chaîne nue 'ls'.

387
splattne

packages.debian.org est ce que j’utilise toujours pour accomplir cette tâche. Il est supérieur à apt-file car il peut également trouver des parties de noms de fichiers. Il est également lié à la liste principale des packages, qui répertorie les descriptions, les bogues, etc. En résumé, un bon site Web. Pas aussi utile en ligne de commande, mais quand même très utile.

Pour plus de rapidité, j'ai mis en favori l'URL:

http://packages.debian.org/search?searchon=contents&keywords=%s&mode=filename&suite=unstable&Arch=any

dans Firefox, et ajouté "debfind" en tant que mot clé (cliquez sur "plus" dans le gestionnaire de favoris avec ce titre en hilighted), je peux donc simplement taper "debfind" et cela fonctionnera. Vous pouvez changer de «suite» d'Unstable à stable ou à tester, si vous préférez, pour d'autres versions de la distribution.

18
jamuraa

Vous pouvez également utiliser dlocate. De la page de manuel;

$ dlocate [ PATTERN ]
List all records where either the package name or the filename matches PATTERN.
11
jeremiah

J'ai trouvé Wajig ...

wajig whichpackage /path/to/file 

par exemple.

wajig whichpackage /etc/apt/sources.list

Wajig est un outil de ligne de commande ou de console très pratique qui englobe tous les bienfaits d'apt-get, dpkg, que vous n'avez jamais voulu apprendre. .

Pour installer wajig, utilisez:

apt-get install wajig

Cette commande 'quel paquet' dépend de apt-file

vous aurez toujours besoin de mettre à jour sa base de données avant de pouvoir l'utiliser: - Je ne sais pas encore si wajig update qui effectue une mise à jour d'apt-get met également à jour le cache de fichiers, mais je suppose que c'est possible.

Sudo wajig update

Sudo apt-file update

(et super vache, Pâques?!)

4
pete_m

Simmilar à la réponse de jamuraa pour Debian, vous pouvez aussi aller à http://packages.ubuntu.com/ pour Ubuntu. Vous devrez faire défiler un peu vers le bas pour trouver le "Rechercher le contenu des paquets" zone de recherche où vous pouvez entrer le chemin d'un fichier.

2
kiri

Essayez de chercher des fichiers en utilisant http://www.kodkast.com/applications/find-which-package-file-belongs-to

Il s'agit d'une application permettant de rechercher des fichiers contenus dans différents packages rpms/linux. Elle est très utile lorsque vous n'avez même pas installé le rpm sur votre machine.

0
Ravi Agarwal

Le paquet commande-non-trouvé vous donne des conseils sur les commandes potentielles et le nom du paquet debian. Cela fonctionne en tapant la commande dans le shell bash et en regardant sa sortie.

Par exemple, si le nom de la commande est connu:

zer@ivy:~ 10:45 $ zsh5
The program 'zsh5' is currently not installed.  To run 'zsh5' please ask
your administrator to install the package 'zsh'
zsh5: command not found

et si la commande n'est pas connue, certaines suppositions sont appliquées:

zer@ivy:~ 09:46 $ zsh
No command 'zsh' found, did you mean:
 Command 'lsh' from package 'lsh-client' (main)
 Command 'osh' from package 'omake' (main)
 Command 'ysh' from package 'libyaml-Shell-Perl' (main)
 Command 'ssh' from package 'openssh-client' (main)
 Command 'vsh' from package 'crystalspace' (main)
 Command 'dsh' from package 'dsh' (main)
 Command 'ash' from package 'ash' (main)
 Command 'msh' from package 'nmh' (main)
 Command 'zssh' from package 'zssh' (main)
 Command 'qsh' from package 'gridengine-client' (main)
 Command 'sh' from package 'dash' (main)
 Command 'bsh' from package 'bsh' (main)
zsh: command not found
0
erwing