Se hai dlocate
installato, c'è un modo semplice per elencare tutti i comandi in un pacchetto installato:
dlocate -lsbin PACKAGE-NAME
Con just dpkg
, puoi elencare i file nelle directory PATH standard (sono quasi tutti programmi eseguibili, con pochissime eccezioni):
dpkg -L PACKAGE-NAME… | sed -n 's!^\(/s\?bin\|/usr/s\?bin\|/usr/games\)/!!p' | sort -u
Le eccezioni sono un paio di directory - a partire da Debian wheezy, solo due: /usr/bin/mh
e /usr/bin/nu-mh
.
Se il pacchetto non è installato, sostituirlo dpkg -L
con apt-file -F list
:
apt-file -F list PACKAGE-NAME… | sed -n 's!^\(/s\?bin\|/usr/s\?bin\|/usr/games\)/!!p' | sort -u
Mentre ci sono file eseguibili in altre directory, non sono pensati per essere eseguiti direttamente, il che li rende irrilevanti qui.
Tutti questi metodi mancano di una serie di programmi: quelli forniti attraverso il meccanismo delle alternative . Ad esempio, solo per il ftp
pacchetto netkit-ftp
e pftp
vengono forniti, ma questo pacchetto fornisce effettivamente il ftp
comando, poiché /usr/bin/ftp
è potenzialmente un collegamento simbolico al /etc/alternatives/ftp
quale è un collegamento simbolico a una delle ftp
implementazioni sul sistema /usr/bin/netkit-ftp
. Il seguente comando (che non è un esempio di buona programmazione, solo un grande one-liner) elenca i comandi forniti da un pacchetto tramite il meccanismo delle alternative, come attualmente configurato.
perl -lwe 'foreach (`dpkg -L @ARGV`) {chomp; ++$p{$_}} foreach (</bin/* /sbin/* /usr/bin/* /usr/sbin/*>) {$e = readlink; next unless defined $e and $e =~ m!^/etc/alternatives/!; $t = readlink $e; print if $p{$t}}' PACKAGE_NAME…
Se si desidera elencare i comandi che potrebbero essere forniti tramite un'alternativa attualmente configurata per puntare a un pacchetto diverso, è necessario analizzare i file /var/lib/dpkg/alternatives
.
I collegamenti simbolici e i file di configurazione che implementano i meccanismi alternativi non sono registrati nei pacchetti ma registrati automaticamente postinst
, il che rende difficile (e di fatto tecnicamente impossibile se lo script di installazione di un pacchetto non segue le convenzioni) per interrogare le alternative fornite da un pacchetto disinstallato .