Question Trouver le paquet auquel un fichier appartient 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?


258
2017-07-22 19:06


origine


Même chose sur Ubuntu: askubuntu.com/questions/481/... - Ciro Santilli 新疆改造中心 六四事件 法轮功
dpkg -S /path/to/filesi vous avez le paquet installé. - Zaz


Réponses:


apt-file search filename

ou

apt-file search /path/to/file


À installer apt-file, utilisation:

sudo apt-get install apt-file

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

sudo apt-file update

210
2017-07-22 19:08



FYI: apt-file semble dépendre de Contents-amd64.gz fourni par les référentiels. Et tous les tiers ne fournissent pas ce fichier. - Jokester
Cela n'a pas fonctionné pour moi. J'ai mis à jour la base de données mais elle ne renvoie rien. dpkg -S fonctionne comme décrit ci-dessous. - Northys


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

dpkg -S /usr/bin/ls

'dpkg -S' correspond à la chaîne que vous avez   fournir, donc juste en utilisant «ls» comme un   l'argument correspond à n'importe quel fichier de n'importe quel   paquet qui a «ls» n'importe où dans le   nom de fichier. Donc, en général, c'est une bonne idée   utiliser un chemin absolu. Tu peux voir   dans le deuxième exemple que 12 000   les fichiers connus de dpkg correspondent au   chaîne nue 'ls'.


350
2017-07-22 19:13



C'est seulement si les fichiers déjà installés - John T
Contrairement à apt-file, il trouve également le package dans un fichier s'il a été installé manuellement via dpkg -i! - tanius
Si vous obtenez dpkg-query: aucun chemin trouvé motif correspondant  essaye ça: dpkg -S "$(readlink -fn "$(which rename)")". - Pablo Bianchi
Bizarre, cela n'a pas fonctionné pour moi: dpkg-query: no path found matching pattern /usr/bin/java, bien qu'il y ait un fichier à /usr/bin/java - nnyby


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 des paquets principaux qui listera les descriptions, les bugs, etc. Dans l'ensemble, un bon site Web. Pas aussi utile depuis la ligne de commande, mais toujours 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" comme mot-clé (cliquez sur "plus" dans le gestionnaire de signets avec son hilighted), donc je peux simplement taper "debfind" et cela fonctionnera. Vous pouvez changer "instable" de instable à stable ou à tester si vous voulez, pour les autres versions de la distribution.


16
2017-07-22 20:07



Cela ne fonctionne cependant pas avec les repos personnalisés. - Ctrl-C
Mauvais choix en matière d'automatisation. - Alexander Shcheblikin


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
2017-08-08 19:30



dlocate est aussi ma méthode préférée, très fiable. - Avio
@Vio dlocate ne trouve pas un package récemment installé, sauf si vous exécutez sudo update-dlocatedb premier. La commande est automatiquement exécutée quotidiennement dans /etc/cron.daily/dlocate - jarno


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 pratique qui englobe tous les avantages d'apt-get, dpkg que vous n'avez jamais voulu apprendre. .

Pour installer wajig utiliser:

apt-get install wajig

Cette commande elle-même 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 la mise à jour de wajig whixh une mise à jour d'apt-get met également à jour le cache de fichiers, mais j'espère que oui.

sudo wajig update

sudo apt-file update

(et Super Cow, Pâques egss?!)


4
2018-01-14 02:40





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


2
2017-10-28 10:40



Maintenant, si seulement Raspbian en avait un aussi :) - XTL


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

Ceci est une application pour rechercher des fichiers qui sont contenus dans différents paquets rpms / linux, et est très utile lorsque vous n'avez même pas installé les rpm sur votre machine.


0
2017-12-20 00:33



Remarque: Le lien est rompu et le lien semble être pour les paquets RPM en premier lieu. - tripleee


Le paquetage command-not-found vous donne des indications sur les commandes potentielles et le nom du paquetage debian. Il 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
2017-11-24 09:59



Cela ne fonctionne pas pour les fichiers arbitraires, comme l'OP demandé. - Michael Kjörling
Ceci est une astuce problématique si le programme fait des choses nuisibles et IS installé. Ajouter -h ou --help à la fin aiderait un peu. Si ajout -h à la fin, je le recommanderais, mais ce n’est pas un bon moyen de réaliser ce que le PO demande. - Dr Beco