Si lo ha dlocate
instalado, hay una manera fácil de enumerar todos los comandos en un paquete instalado:
dlocate -lsbin PACKAGE-NAME
Con solo dpkg
, puede enumerar los archivos en los directorios PATH estándar (son casi todos programas ejecutables, con muy pocas excepciones):
dpkg -L PACKAGE-NAME… | sed -n 's!^\(/s\?bin\|/usr/s\?bin\|/usr/games\)/!!p' | sort -u
Las excepciones son un par de directorios, a partir de Debian wheezy, solo dos: /usr/bin/mh
y /usr/bin/nu-mh
.
Si el paquete no está instalado, reemplácelo 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
Si bien hay archivos ejecutables en otros directorios, no están destinados a ejecutarse directamente, lo que los hace irrelevantes aquí.
Todos estos métodos pierden un conjunto de programas: los que se proporcionan a través del mecanismo de alternativas . Por ejemplo, para el ftp
paquete, solo netkit-ftp
y pftp
se proporcionan, pero este paquete en realidad proporciona el ftp
comando, porque /usr/bin/ftp
es un enlace simbólico al /etc/alternatives/ftp
cual es un enlace simbólico a una de las ftp
implementaciones en el sistema, potencialmente /usr/bin/netkit-ftp
. El siguiente comando (que no es un ejemplo de buena programación, solo una gran línea) enumera los comandos proporcionados por un paquete a través del mecanismo de alternativas, como está configurado actualmente.
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…
Si desea enumerar los comandos que podrían proporcionarse a través de una alternativa que actualmente está configurada para apuntar a un paquete diferente, debe analizar los archivos /var/lib/dpkg/alternatives
.
Los enlaces simbólicos y los archivos de configuración que implementan los mecanismos alternativos no se registran en paquetes sino que se registran automáticamente postinst
, lo que dificulta (y de hecho técnicamente imposible si el script de instalación de un paquete no sigue las convenciones) consultar las alternativas proporcionadas por un paquete desinstalado .