Il s'agit d'une extension de L'excellente réponse d'Alexx Roche . J'ai essayé de faire une modification de cette réponse, mais il a été rejeté (mais pas par Alexx)
J'essayais de retrouver ce qui a installé which
sur mon système. Après un peu de travail, j'ai créé /usr/local/bin/apt-whatprovides
#!/bin/sh
#apt-whatprovides ver. 201801010101 Copyright alexx, MIT Licence
#rdfa:deps="[realpath,apt-file,grep,which,sh,echo]"
BINARY="$(realpath $(which $@) 2>/dev/null)"
[ -z "$BINARY" ] && BINARY="$@"
echo Searching for $BINARY
PACKAGE="$(apt-file search $BINARY|grep -E ":.*[^-.a-zA-Z0-9]${BINARY}$")"
echo "${PACKAGE}"
Bien que pour la plupart des choses qui sont installées, vous pouvez simplement utiliser :
apt-file search $(realpath $(which THING)) | grep 'THING$'
Pour les THING qui ne sont pas installés, vous pouvez utiliser :
apt-file search THING | grep '/THING$'
El apt-whatprovides
script fonctionne pour les fichiers qui sont et ne sont pas sur votre système. Par exemple, il manque à mon système dig
mais avait ping
et c'est ce qui en a résulté :
pi@raspberrypi:~ $ apt-whatprovides ping
Searching for /bin/ping
inetutils-ping: /bin/ping
iputils-ping: /bin/ping
pi@raspberrypi:~ $ apt-whatprovides dig
Searching for dig
dnsutils: /usr/bin/dig
epic4: /usr/share/epic4/script/dig
epic4-help: /usr/share/epic4/help/8_Scripts/dig
knot-dnsutils: /usr/bin/dig
Remarquez que Searching for
est un chemin complet pour ping
(installé) et juste le nom binaire pour dig
non installé. Cela m'a permis de découvrir que je devais installer dnsutils
sans avoir besoin d'aller chercher https://packages.ubuntu.com/#search_contents
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 commemailx
osendmail
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/