Comment savoir à quel paquet Debian (non installé) appartient un fichier?

41

Sur les systèmes Debian (et dérivés):

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

Autrement dit, le fichier /bin/lsappartient au paquet Debian nommé coreutils.

Mais cela ne fonctionne que si le paquet est installé. Et si ce n'est pas le cas?

Tshepang
la source

Réponses:

58

apt-file

apt-filefournit la fonctionnalité de recherche d’un paquet fournissant un binaire (comme Debian ou Ubuntu ), il n’est pas installé par défaut mais dans les référentiels.

apt-file search <path-to-file>

Vous voudrez peut-être mettre à jour une fois avant de chercher ...

apt-file update 

Par exemple, recherchons le binaire non installé mysqldump:

$ apt-file search /usr/bin/mysqldump

mysql-client-5.1: /usr/bin/mysqldump
mysql-client-5.1: /usr/bin/mysqldumpslow
mysql-cluster-client-5.1: /usr/bin/mysqldump
mysql-cluster-client-5.1: /usr/bin/mysqldumpslow

Il est également possible de lister le contenu d'un paquet (non installé):

$ apt-file list mysql-client-5.1

mysql-client-5.1: /usr/bin/innochecksum
mysql-client-5.1: /usr/bin/innotop
mysql-client-5.1: /usr/bin/myisam_ftdump
mysql-client-5.1: /usr/bin/mysql_client_test
...

Miam

yumaccepte la commande whatprovides(ou provides) pour rechercher les fichiers binaires installés ou non installés:

yum whatprovides <path-to-file>

Encore une fois, le pas installé mysqldump:

$ yum whatprovides /usr/bin/mysqldump

mysql-5.1.51-2.fc14.i686 : MySQL client programs and shared libraries
Repo        : fedora
Matched from: 
Filename    : /usr/bin/mysqldump

mysql-5.1.51-1.fc14.i686 : MySQL client programs and shared libraries
Repo        : fedora
Matched from: 
Filename    : /usr/bin/mysqldump

zypper

zypperLa searchcommande de peut vérifier les listes de fichiers lorsqu'elle est utilisée avec l' -foption.

zypper se -f /bin/mksh
Loading repository data...
Reading installed packages...

S | Name | Summary           | Type   
--+------+-------------------+--------
  | mksh | MirBSD Korn Shell | package

Webpin fournit une solution Web , il existe même un script pour la ligne de commande.

pkgfile

Disponible comme pkgtoolspour les pacmansystèmes basés. Fournit une fonction de recherche similaire à celle décrite ci-dessus:

$ pkgfile -si /usr/bin/mysqldump

Name      : mysql-clients
Version   : 5.1.54-1
Url       : http://www.mysql.com/
License   : GPL
Depends   : libmysqlclient
...
remuer
la source
apt-file search protocpar exemple, donne plus de six mille résultats. Cependant , les résultats se terminent par le nom du fichier, donc avec grep vous pouvez réellement trouver le nom de fichier que vous recherchez: apt-file search protoc | grep 'protoc$'. Cela fonctionne car il filtre tout ce qui se termine par "protoc". Bien sûr, vous devez remplacer "protoc" par tout ce que vous recherchez.
Luc
5

L'outil standard pour cela est apt-file . Exécuter apt-file updatepour télécharger le fichier d'index. Voici la sortie:

Downloading complete file ftp://ftp.is.co.za/debian/dists/squeeze/Contents-i386.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 16.6M  100 16.6M    0     0  33191      0  0:08:47  0:08:47 --:--:-- 38951

Après ça, cours apt-file search search_term.

Tshepang
la source
3

Si vous n'avez pas accès à la machine ou ne pouvez pas utiliser les commandes données dans les réponses précédentes, vous pouvez également le trouver à l'aide du moteur de recherche basé sur le Web des paquets Debian (le second formulaire, " Rechercher dans le contenu des paquets "). )

Bruno
la source