Se você tem dlocate
instalado, há uma maneira fácil de listar todos os comandos em um pacote instalado:
dlocate -lsbin PACKAGE-NAME
Com apenas dpkg
, você pode listar os arquivos nos diretórios PATH padrão (eles são quase todos programas executáveis, com pouquíssimas exceções):
dpkg -L PACKAGE-NAME… | sed -n 's!^\(/s\?bin\|/usr/s\?bin\|/usr/games\)/!!p' | sort -u
As exceções são alguns diretórios - do Debian wheezy, apenas dois: /usr/bin/mh
e /usr/bin/nu-mh
.
Se o pacote não estiver instalado, substitua dpkg -L
por apt-file -F list
:
apt-file -F list PACKAGE-NAME… | sed -n 's!^\(/s\?bin\|/usr/s\?bin\|/usr/games\)/!!p' | sort -u
Embora existam arquivos executáveis em outros diretórios, eles não devem ser executados diretamente, o que os torna irrelevantes aqui.
Todos estes métodos perdem um conjunto de programas: aqueles que são fornecidos através do mecanismo alternativas . Por exemplo, para o pacote ftp
, apenas netkit-ftp
e pftp
são fornecidos, mas esse pacote realmente fornece o comando ftp
, porque /usr/bin/ftp
é um link simbólico para /etc/alternatives/ftp
, que é um link simbólico para uma das implementações ftp
no sistema, potencialmente /usr/bin/netkit-ftp
. O seguinte comando (que não é um exemplo de boa programação, apenas um grande one-liner) lista os comandos fornecidos por um pacote através do mecanismo de alternativas, como atualmente configurado.
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 você quiser listar os comandos que podem ser fornecidos por meio de uma alternativa que está atualmente configurada para apontar para um pacote diferente, será necessário analisar os arquivos em /var/lib/dpkg/alternatives
.
Links simbólicos e arquivos de configuração que implementam os mecanismos alternativos não são registrados em pacotes, mas registrados automaticamente em postinst
, o que torna difícil (e tecnicamente impossível se o script de instalação de um pacote não seguir as convenções) para consultar o alternativas fornecidas por um pacote desinstalado.