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?
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
(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'.
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.
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.
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?!)
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.
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.
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