643 votes

Comment trouver le paquet qui fournit un fichier ?

Question assez simple : existe-t-il une commande Shell (ou une méthode GUI) que je puisse utiliser qui, étant donné le chemin d'un fichier sur mon système, me dise quel paquet l'a mis là ? En supposant que le fichier provienne effectivement d'un paquet, c'est à dire.

Question supplémentaire : que se passe-t-il si c'est un fichier qui n'est pas installé sur mon système ? Existe-t-il, par exemple, un site Web qui me permette de rechercher un fichier et de voir quels paquets, le cas échéant, le fournissent ?

7 votes

Je me suis toujours posé cette question moi-même - je sais qu'avec YUM vous pouvez faire yum whatprovides <filepath>/<filename> mais je n'ai jamais vraiment trouvé une alternative à cela dans Aptitude autre que le site web Packages

0 votes

Même chose pour SU : superuser.com/questions/10997/

0 votes

Aucune des réponses ici ne couvre réellement le Provides: mécanisme. De manière plus détaillée, une commande comme mailx o sendmail n'est pas inclus en tant que binaire dans tout Au lieu de cela, les différents paquets installent leurs propres binaires et rendent certains d'entre eux disponibles sous un nom "canonique" par l'intermédiaire de l'application /etc/alternatives . Voir aussi askubuntu.com/questions/366135/

589voto

Coincoin Points 12823

Vous pouvez utiliser dpkg pour savoir quel paquet installé possède un fichier :

Desde man dpkg :

\-S, --search filename-search-pattern...
                  Search for a filename from installed packages.

Exemple :

$ dpkg -S /bin/ls
coreutils: /bin/ls

Vous pouvez effectuer une recherche avec un chemin d'accès complet ou uniquement avec le nom du fichier.

Si vous souhaitez rechercher des fichiers qui ne sont pas encore installés sur votre ordinateur, vous pouvez utiliser la commande Recherche de paquets Ubuntu o apt-file comme décrit dans un réponse différente .

7 votes

Je recommande vivement d'utiliser dlocate, qui est mis à jour quotidiennement pour des recherches plus rapides.

25 votes

Conseil : si vous ne connaissez pas le chemin complet, mais seulement le nom de la commande, utilisez which pour trouver le programme : dpkg -S `which firefox`

0 votes

Cela fonctionne également pour les bibliothèques, ce qui est particulièrement pratique si vous avez un binaire qui ne s'exécute pas car vous pouvez l'inspecter avec ldd et utiliser les chemins complets des bibliothèques pour trouver les paquets qui vous manquent.

355voto

UnkwnTech Points 21942

El apt-file peut le faire pour vous à partir de la ligne de commande. Je l'utilise fréquemment lorsque je construis des paquets à partir des sources. Pour les fichiers fournis par les paquets qui sont déjà installés sur votre système, apt-cache est un autre choix.

Pour installer apt-file , do :

sudo apt-get install apt-file

Ensuite, vous devez mettre à jour sa base de données :

sudo apt-file update

Et, enfin, recherchez le fichier :

$ apt-file find kwallet.h
kdelibs5-dev: /usr/include/kwallet.h
libkf5wallet-dev: /usr/include/KF5/KWallet/kwallet.h

Toutefois, une méthode beaucoup plus conviviale consiste à utiliser la fonction Recherche de paquets Ubuntu site web. Ils ont une option pour "rechercher le contenu des paquets" pour un nom de fichier spécifique.

31 votes

À mon avis, cela devrait être la réponse acceptée. Mais en réponse à Recherche de paquets Ubuntu Je pourrais dire qu'un programme Shell aussi simple est extrêmement convivial et facile à retenir (une fois que vous le connaissez). Si vous utilisez dpkg, apt-get ou aptitude comme outils standard, il n'y a rien de convivial à lancer Chrome pour surfer sur Internet !

5 votes

@user2097818 La raison pour laquelle ce n'est pas la réponse acceptée est que ma question principale est limitée aux fichiers sur le système et aux paquets qui sont installés. apt-file trouve souvent des faux positifs, c'est-à-dire des paquets qui ne sont pas installés. Bien entendu, cette réponse est idéale pour la "question bonus".

4 votes

Pour ceux qui sont du côté de Redhat - apt-file search <> est l'analogue le plus proche de dnf/yum whatprovides <> .

52voto

Darren Greaves Points 1500

Il y a aussi apt-file pour rechercher des fichiers dans les paquets qui ne sont pas installés. Par exemple :

apt-file list packagename

20voto

omar Points 359

Vous pouvez rechercher le contenu des paquets inclus dans les différentes versions d'Ubuntu sur la page Paquets Ubuntu site web. Regardez sous la rubrique " Rechercher le contenu des paquets ".

Par exemple, voici les résultats de la recherche de libnss3.so en focal (20.04) :

http://packages.ubuntu.com/search?searchon=contents&keywords=libnss3.so&mode=exactfilename&suite=focal&arch=any

2 votes

Cela renvoie récemment une erreur.

16voto

A.B. Points 84870

Vous voulez dire, quel paquet et non quelle application. L'application est votre gestionnaire de paquets, par ex. Software Center .

Utilisation de dpkg :

dpkg -S /usr/lib/tracker/tracker-store
dpkg -S tracker-extract
dpkg -S tracker-miner-fs

Exemple

% dpkg -S /usr/lib/tracker/tracker-store
tracker: /usr/lib/tracker/tracker-store

Utilisation de apt-file :

apt-file search /usr/lib/tracker/tracker-store

ou également possible :

apt-file search --regex /tracker-extract$
apt-file search --regex /tracker-miner-fs$

Exemple

% apt-file search /usr/lib/tracker/tracker-store
tracker: /usr/lib/tracker/tracker-store

Ou en ligne aquí dans la section Search the contents of packages .

enter image description here

Exemple

enter image description here

0 votes

Vous voulez dire, quel paquet et non quelle application. L'application est votre gestionnaire de paquets, par exemple Software Center. D'accord. Merci ! :)

0 votes

Merci pour toute l'aide apportée ! Cependant, aucune de ces suggestions ne m'a aidé à trouver quel paquet a installé cette/ces applications. Toutes les recherches ne mènent qu'à "Tracker". Je soupçonnais pourtant que c'était Canopy d'Enthoughts. Ce contrat de licence de longue durée m'a rappelé l'époque de Microsoft Windows, avec laquelle je suis heureux de ne plus être impliqué. J'ai vu que Tracker était installé hier, alors, en tant que root, je l'ai supprimé, ainsi que Canopy d'Enthoughts, et tous les problèmes sont résolus. Je vous remercie pour votre aide. C'est vraiment génial d'avoir un tel soutien. Merci encore ! Kevin

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