Si tu as dlocate
installé, il existe un moyen simple de répertorier toutes les commandes d'un package installé:
dlocate -lsbin PACKAGE-NAME
Avec juste dpkg
, vous pouvez lister les fichiers dans les répertoires PATH standard (ce sont presque tous des programmes exécutables, à quelques exceptions près):
dpkg -L PACKAGE-NAME… | sed -n 's!^\(/s\?bin\|/usr/s\?bin\|/usr/games\)/!!p' | sort -u
Les exceptions sont quelques répertoires - à partir de Debian Wheezy, seulement deux: /usr/bin/mh
et /usr/bin/nu-mh
.
Si le package n'est pas installé, remplacez dpkg -L
par apt-file -F list
:
apt-file -F list PACKAGE-NAME… | sed -n 's!^\(/s\?bin\|/usr/s\?bin\|/usr/games\)/!!p' | sort -u
Bien qu'il existe des fichiers exécutables dans d'autres répertoires, ils ne sont pas destinés à être exécutés directement, ce qui les rend non pertinents ici.
Ces méthodes manquent toutes un ensemble de programmes: ceux qui sont fournis via le mécanisme alternatif . Par exemple, pour le ftp
package, seuls netkit-ftp
et pftp
sont fournis, mais ce package fournit en fait la ftp
commande, car il /usr/bin/ftp
s'agit d'un lien symbolique vers /etc/alternatives/ftp
lequel est ftp
potentiellement un lien symbolique vers l'une des implémentations du système /usr/bin/netkit-ftp
. La commande suivante (qui n'est pas un exemple de bonne programmation, juste un gros one-liner) répertorie les commandes fournies par un package via le mécanisme alternatif, tel qu'il est actuellement configuré.
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 vous souhaitez répertorier les commandes qui pourraient être fournies via une alternative actuellement configurée pour pointer vers un autre package, vous devez analyser les fichiers dans /var/lib/dpkg/alternatives
.
Les liens symboliques et les fichiers de configuration qui implémentent les mécanismes alternatifs ne sont pas enregistrés dans les packages mais enregistrés automatiquement dans postinst
, ce qui rend difficile (et en fait techniquement impossible si le script d'installation d'un package ne respecte pas les conventions) d'interroger les alternatives fournies par un package désinstallé .