目录
在使用 Linux 的时候,有时需要查询某个命令属于哪个软件包,下面主要介绍下 Ubuntu(同样适用于使用 dpkg 包管理工具的 Linux) 和 CentOS(同样适用于使用 rpm 作为包管理器的 Linux)根据命令查询软件包的方法。
一、Ubuntu
1.1 步骤
1. 先使用 which 查询出命令的绝对路径;
2. 再使用 dpkg 查询出已安装的哪个包包含该路径;
单纯说步骤可能还是不太理解,下面结合实例看一下你就会明白了。
1.2 实例
(1)查询 wget 命令所在的软件包,如下所示:
root@xipeng:~# which wget
/usr/bin/wget
root@xipeng:~# dpkg -S /usr/bin/wget
wget: /usr/bin/wget
root@xipeng:~#
(2)查询 curl 命令所在的软件包,如下所示:
root@xipeng:~# which curl
/usr/bin/curl
root@xipeng:~# dpkg -S /usr/bin/curl
curl: /usr/bin/curl
root@xipeng:~#
命令 which 可以查询出当前命令的绝对路径,dpkg -S 从已安装的软件包中搜索文件名。
二、CentOS
2.1 步骤
1. 先使用 which 查询出命令的绝对路径;
2. 再使用 rpm 查询出已安装的哪个包包含该路径;
2.2 实例
(1)查询 wget 命令所在的软件包,如下所示:
[root@localhost ~]# which wget
/usr/bin/wget
[root@localhost ~]# rpm -qa --queryformat="[%{NAME} : %{INSTFILENAMES}\n]" | grep /usr/bin/wget
wget : /usr/bin/wget
[root@localhost ~]#
(2)查询 curl 命令所在的软件包,如下所示:
[root@localhost ~]# which curl
/usr/bin/curl
[root@localhost ~]# rpm -qa --queryformat="[%{NAME} : %{INSTFILENAMES}\n]" | grep /usr/bin/curl
curl : /usr/bin/curl
[root@localhost ~]#
同样适用 which 查询出命令的绝对路径,然后使用 rpm -qa --queryformat="[%{NAME} : %{INSTFILENAMES}\n]" | grep commondPath,查询出对应的软件包。
三、总结
在使用 dpkg 和 rpm 的所有 Linux 中都可以使用上面对应的方式查找命令所在的软件包,很简单吧!感觉对你有帮助就点赞支持下吧!可以一键三连哦!