参考链接:

debian/ubuntu查询命令属于哪个软件包 - 简书

debian/ubuntu查询软件包有哪些命令 - 简书

dpkg-query -L <package_name> 可以查询该软件包的所有文件

dpkg-query -L <package_name>|grep "/bin/" 查询该软件包的所有可执行文件

方法一:先查询命令的具体位置,再查询所属包

  1. 先使用which whereis type查询到命令的具体位置,比如nslookup
    ~# type nslookup
    nslookup is /usr/bin/nslookup
    ~# which nslookup
    /usr/bin/nslookup
    ~# whereis nslookup
    nslookup: /usr/bin/nslookup /usr/share/man/man1/nslookup.1.gz
  2. 然后用dpkg-query查询该命令属于哪个软件包:
    ~# dpkg-query -S /usr/bin/nslookup
    dnsutils: /usr/bin/nslookup

方法二:直接使用dpkg-query命令查询

系统的/bin可能是个软链接,指向/usr/bin(同样/sbin也可能是个软链接,指向/usr/sbin),比如nano这个命令按方法1查询的话:

~# type nano
nano is /usr/bin/nano
~# whereis nano
nano: /usr/bin/nano /usr/share/nano /usr/share/man/man1/nano.1.gz /usr/share/info/nano.info.gz
~# which nano
/usr/bin/nano

但实际上nanodpkg-query中的记录是/bin/nano,如果直接使用dpkg-query -S /usr/bin/nano去查询就查不到.
所以也可以像下面这种方式(以node为例):

~# dpkg-query -S node
nodejs: /usr/bin/node
salt-common: /usr/lib/python3/dist-packages/salt/cloud/clouds/linode.py
adwaita-icon-theme: /usr/share/icons/Adwaita/48x48/mimetypes/inode-directory-symbolic.symbolic.png
libjs-extjs6: /usr/share/javascript/extjs6/packages/ux/classic/classic/resources/images/explorer/node.png
openmediavault: /var/www/openmediavault/js/omv/workspace/node/Model.js
openmediavault: /var/www/openmediavault/js/omv/workspace/node/tree/Panel.js
linux-image-4.19.0-14-amd64: /lib/modules/4.19.0-14-amd64/kernel/fs/ocfs2/cluster/ocfs2_nodemanager.ko
nodejs: /usr/share/doc/nodejs/buildinfo_amd64.gz
docker-ce-cli: /usr/share/man/man1/docker-node.1.gz
nodejs: /usr/share/doc/nodejs/copyright
linux-image-4.19.0-16-amd64: /lib/modules/4.19.0-16-amd64/kernel/drivers/media/v4l2-core/v4l2-fwnode.ko
libjs-extjs6: /usr/share/javascript/extjs6/modern/theme-triton/resources/images/pictos/nodes1.png
libjs-extjs6: /usr/share/javascript/extjs6/modern/theme-ios/resources/images/pictos/nodes2.png
libjs-extjs6: /usr/share/javascript/extjs6/modern/theme-windows/resources/images/dark/pictos/nodes1.png
bash-completion: /usr/share/bash-completion/completions/vgmknodes
libsnmp-base: /usr/share/snmp/mib2c-data/node-set.m2i
xmlstarlet: /usr/share/doc/xmlstarlet/examples/results/countnode1.out
nodejs: /usr/share/man/man1/nodejs.1.gz
......

这样查询到的会有很多,可以进行筛选:

~# dpkg-query -S node | grep /bin/
nodejs: /usr/bin/node
nodejs: /usr/bin/nodejs

总结:

1 查询到命令的具体位置

  1. which
  2.  whereis
  3.  type
  4. dpkg-query -S <命令名> | grep /bin/   #推荐

2  根据命令所在的位置,查询所属的包

  • dpkg-query -S <命令的位置>

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐