Esta é uma extensão da excelente resposta de Alexx Roche . Tentei fazer uma edição dessa resposta, mas ela foi rejeitada (embora não por Alexx)
Eu estava tentando rastrear o que estava instalado which
no meu sistema. Depois de um pouco de trabalho eu criei/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}"
Embora, para a maioria das coisas instaladas, você possa usar:
apt-file search $(realpath $(which THING)) | grep 'THING$'
Para as coisas que não estão instaladas, você pode usar:
apt-file search THING | grep '/THING$'
O apt-whatprovides
script funciona para arquivos que estão e não estão no seu sistema. Por exemplo, meu sistema não possuía, dig
mas tinha ping
isso que resultou:
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
Observe que esse Searching for
é um caminho completo para ping
(instalado) e apenas o nome binário de dig
não instalado. Isso me ajudou a descobrir que eu precisava instalar dnsutils
sem precisar pesquisar https://packages.ubuntu.com/#search_contents