Если у вас установлен dlocate
, есть простой способ перечислить все команды в установленном пакете:
dlocate -lsbin PACKAGE-NAME
С помощью всего dpkg
вы можете перечислите файлы в стандартных каталогах PATH (это почти все исполняемые программы, за очень немногими исключениями):
dpkg -L PACKAGE-NAME… | sed -n 's!^\(/s\?bin\|/usr/s\?bin\|/usr/games\)/!!p' | sort -u
Исключения составляют несколько каталогов - в Debian wheezy только два: / usr / bin / mh
и / usr / bin / nu-mh
.
Если пакет не установлен, замените dpkg -L
на apt-file -F list
:
apt-file -F list PACKAGE-NAME… | sed -n 's!^\(/s\?bin\|/usr/s\?bin\|/usr/games\)/!!p' | sort -u
Хотя в других каталогах есть исполняемые файлы, их нет предназначены для непосредственного выполнения, что делает их здесь неуместными.
Во всех этих методах отсутствует набор программ: те, которые предоставляются через механизм альтернатив . Например, для пакета ftp
предоставляются только netkit-ftp
и pftp
, но этот пакет фактически предоставляет команду ftp
, потому что / usr / bin / ftp
- это символическая ссылка на / etc / alternatives / ftp
, которая является символической ссылкой на одну из реализаций ftp
в системе , потенциально / usr / bin / netkit-ftp
. Следующая команда (которая не является примером хорошего программирования, а просто большой однострочник) перечисляет команды, предоставляемые пакетом через механизм альтернатив, как в настоящее время настроено.
perl -lwe 'foreach (`dpkg -L @ARGV`) {chomp; ++$p{$_}} foreach () {$e = readlink; next unless defined $e and $e =~ m!^/etc/alternatives/!; $t = readlink $e; print if $p{$t}}' PACKAGE_NAME…
Если вы хотите перечислить команды, которые могут быть предоставлены через альтернативу, которая в настоящее время настроена так, чтобы указывать на другой пакет, вам необходимо проанализировать файлы в / var / lib / dpkg / alternatives
.
Символические ссылки и файлы конфигурации, реализующие альтернативные механизмы, не регистрируются в пакетах, а регистрируются автоматически в postinst
, что затрудняет (и фактически делает технически невозможным, если сценарий установки пакета не следует соглашениям) ), чтобы запросить альтернативы, предоставляемые неустановленным пакетом.
Точно такая же проблема с qtcreator и Ubuntu по умолчанию здесь. Эта ошибка, связанная с мусорным сервером x11 --, продолжается не менее шести лет.https://bugzilla.redhat.com/show_bug.cgi?id=981149
Это окончательно исправлено здесь:https://gitlab.gnome.org/GNOME/gnome-shell/issues/273. Обновление оболочки gnome -до версии 3.30+ должно помочь.