Nếu bạn đã dlocate
cài đặt, có một cách dễ dàng để liệt kê tất cả các lệnh trong gói đã cài đặt:
dlocate -lsbin PACKAGE-NAME
Chỉ với dpkg
, bạn có thể liệt kê các tệp trong các thư mục PATH tiêu chuẩn (chúng hầu như đều là các chương trình thực thi, với rất ít ngoại lệ):
dpkg -L PACKAGE-NAME… | sed -n 's!^\(/s\?bin\|/usr/s\?bin\|/usr/games\)/!!p' | sort -u
Các ngoại lệ là một vài thư mục - như Debian wheezy, chỉ hai: /usr/bin/mh
và /usr/bin/nu-mh
.
Nếu gói không được cài đặt, thay thế dpkg -L
bằng apt-file -F list
:
apt-file -F list PACKAGE-NAME… | sed -n 's!^\(/s\?bin\|/usr/s\?bin\|/usr/games\)/!!p' | sort -u
Mặc dù có các tệp thực thi trong các thư mục khác, nhưng chúng không có nghĩa là được thực thi trực tiếp, điều này làm cho chúng không liên quan ở đây.
Các phương thức này đều bỏ lỡ một bộ chương trình: những phương thức được cung cấp thông qua cơ chế thay thế . Ví dụ, đối với ftp
gói, chỉ netkit-ftp
và pftp
được cung cấp, nhưng gói này thực sự cung cấp ftp
lệnh, bởi vì đây /usr/bin/ftp
là một liên kết tượng trưng /etc/alternatives/ftp
là liên kết tượng trưng đến một trong những ftp
triển khai trên hệ thống /usr/bin/netkit-ftp
. Lệnh sau (không phải là một ví dụ về lập trình tốt, chỉ là một lệnh lớn) liệt kê các lệnh được cung cấp bởi một gói thông qua cơ chế thay thế, như được cấu hình hiện tại.
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…
Nếu bạn muốn liệt kê các lệnh có thể được cung cấp thông qua một giải pháp thay thế hiện đang được cấu hình để trỏ đến một gói khác, bạn cần phân tích các tệp trong đó /var/lib/dpkg/alternatives
.
Các liên kết tượng trưng và các tệp cấu hình thực hiện các cơ chế thay thế không được đăng ký trong các gói mà được đăng ký tự động postinst
, điều này gây khó khăn (và trên thực tế là không thể nếu tập lệnh cài đặt của gói không tuân theo các quy ước) để truy vấn các lựa chọn thay thế được cung cấp bởi gói đã gỡ cài đặt .