Commande pour trouver le paquet source d'un binaire?

33

Je sais qu'il y a une whichcommande, qui fait écho au nom complet d'un binaire (par exemple which sh). Cependant, je suis presque sûr qu'il existe une commande qui fait écho au package qui fournit un binaire particulier. Existe-t-il une telle commande? Si oui, c'est quoi? J'aimerais pouvoir exécuter ceci:

commandName ls

et obtenir

coreutils

par exemple.

Delan Azabani
la source

Réponses:

36

Je suppose que vous recherchez la dpkg -Scommande (voir également les options fréquemment utilisées pour dpkg ).

nik
la source
4
Merci! dpkg -S `which COMMANDHERE`travaillé pour moi.
Delan Azabani
Gentoo: qfile <nom>
Sergei
dpkg -Srecherche le nom du package binaire, qui peut différer du nom du package source (code).
Tino
Juste pour être complet, -Sest la forme abrégée de l' --searchoption, qui est en fait une option de la dpkg-querycommande (mais dpkgfonctionne aussi)
waldyrious
10

Si vous souhaitez rechercher des fichiers dans un package que vous n'avez pas installé, utilisez apt-file

apt-get install -y apt-file
apt-file update

Ensuite, pour trouver quelque chose:

apt-file search /usr/bin/file

ou

apt-find search file

Où "fichier" est le nom de tout ce que vous recherchez.

Si vous n'avez pas envie de passer par là sur tous les systèmes Debian, vous pouvez utiliser ce script:

#!/bin/bash
which apt-get >/dev/null || { echo apt-get not found >&2; exit 1; }
which apt-file >/dev/null || { apt-get install -y apt-file;  apt-file update; }
unset i; IFS=$'\x0a'; select i in $( apt-file search "/$@" ); do 
    test -n "$i" || break; apt-get install "${i%% *}"; done

Je l'ai juste fouetté alors, mais cela semble bien fonctionner.

Remarque: "dpkg -S" ne trouve que les éléments que vous avez déjà installés.

Orwellophile
la source
3
L'utilisation du -yparamètre est dangereuse, elle pourrait dire oui à un certain nombre de choses. Dans le script, cela pourrait être bien, mais la première commande devrait vraiment être lue apt-get install apt-filesans le -ycar vous ne pouvez pas savoir à quoi ressemble le système de l'utilisateur.
jmiserez