Questa è un'estensione dell'ottima risposta di Alexx Roche . Ho provato a fare una modifica a quella risposta, ma è stata respinta (anche se non da Alexx)
Stavo cercando di rintracciare ciò che è installato which
sul mio sistema. Dopo un po 'di lavoro ho creato/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}"
Sebbene per la maggior parte delle COSE installate puoi semplicemente usare:
apt-file search $(realpath $(which THING)) | grep 'THING$'
Per COSE che non sono installate, puoi usare:
apt-file search THING | grep '/THING$'
Lo apt-whatprovides
script funziona per i file che si trovano e non si trovano sul tuo sistema. Ad esempio, il mio sistema mancava dig
ma aveva ping
quindi questo che ne è risultato:
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
Si noti che Searching for
è un percorso completo per ping
(installato) e solo il nome binario per dig
non installato. Questo mi ha aiutato a scoprire che dovevo installare dnsutils
senza dover cercare https://packages.ubuntu.com/#search_contents