362 votes

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

Il me 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 savoir quel paquet contient un fichier donné (qu'il soit déjà installé ou non) ? Peut-être une option obscure pour apt ou dpkg ?

1 votes

Même chose sur Ubuntu : askubuntu.com/questions/481/

56 votes

dpkg -S /path/to/file si vous avez installé le paquet.

1 votes

Réponse acceptée, mieux que de dépendre de apt-file

494voto

Jemus42 Points 169

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

dpkg -S /usr/bin/ls

dpkg -S' correspond juste à la chaîne de caractères que vous avez utilisée dans la chaîne de caractères que vous lui fournissez. correspond à n'importe quel fichier de n'importe quel paquet ayant 'ls' n'importe où dans le nom de nom de fichier. Donc, en général, c'est une bonne idée d'utiliser un chemin absolu. Vous pouvez voir dans le second exemple que 12 000 fichiers qui sont connus de dpkg correspondent à la la chaîne de caractères 'ls'.

37 votes

C'est seulement si les fichiers déjà installés

24 votes

Contrairement à apt-file ce qui permet également de retrouver le paquet dans un fichier s'il a été installé manuellement par le biais de l'option dpkg -i ¡!

5 votes

Si vous obtenez dpkg-query : aucun chemin trouvé correspondant au motif essayez ceci : dpkg -S "$(readlink -fn "$(which rename)")" .

296voto

Dalroth Points 2468
apt-file search filename

ou

apt-file search /path/to/file

Pour installer apt-file utiliser :

sudo apt-get install apt-file

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

sudo apt-file update

8 votes

FYI : apt-file semble dépendre de Contents-amd64.gz fourni par les dépôts. Et tous les dépôts tiers ne fournissent pas ce fichier.

3 votes

Cela n'a pas fonctionné pour moi. J'ai mis à jour la base de données mais cela ne renvoie rien. dpkg -S fonctionne comme décrit ci-dessous.

1 votes

Dans la plupart des cas, vous n'aurez pas besoin d'installer un paquetage non standard (apt-file) et vous vous en sortirez en utilisant celui qui est préinstallé (dpkg). Voir la réponse la plus votée.

22voto

Rob Hunter Points 1387

paquets.debian.org est ce que j'utilise toujours pour accomplir cette tâche. Il est supérieur à apt-file car il peut aussi trouver des parties de noms de fichiers. Il est également lié à la liste principale des paquets qui contient les descriptions, les bogues, etc. Dans l'ensemble, un bon site web. Pas aussi utile en ligne de commande, mais tout de même assez utile.

Pour plus de rapidité, j'ai mis l'url en signet :

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

dans Firefox, et j'ai ajouté "debfind" comme mot-clé (cliquez sur "plus" dans le gestionnaire de signets avec le mot-clé en surbrillance), de sorte que je peux simplement taper "debfind" et cela fonctionnera. Vous pouvez changer la "suite" d'instable à stable ou testing si vous le souhaitez, pour d'autres versions de la distribution.

1 votes

Cela ne fonctionne pas avec les dépôts personnalisés.

1 votes

Mauvais choix en matière d'automatisation.

11voto

freddiefujiwara Points 7522

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.

1 votes

dlocate est aussi ma méthode préférée, très fiable.

2 votes

@Avio dlocate ne trouve pas de paquetage récemment installé, sauf si vous exécutez sudo update-dlocatedb premier. La commande est exécutée automatiquement chaque jour dans /etc/cron.daily/dlocate

5voto

pete_m Points 59

J'ai trouvé Wajig...

wajig whichpackage /path/to/file 

eg.

wajig whichpackage /etc/apt/sources.list

Wajig est un outil pratique en ligne de commande ou en console qui englobe toutes les fonctionnalités d'apt-get et de dpkg que vous n'avez jamais voulu apprendre. .

Pour installer wajig, utilisez :

apt-get install wajig

La commande 'whichpackage' dépend elle-même d'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 fait un apt-get update met aussi à jour le cache des fichiers, mais je pense que c'est possible.

sudo wajig update

sudo apt-file update

( et Super Cow, Easter egss ? ! )

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X