上一篇
Linux中,可通过命令查看软件是否安装,如
dpkg -s(Debian/Ubuntu)、
yum list installed(CentOS/Red Hat)、
apt list –installed(Debian/Ubuntu)和
rpm -q(Fedora
Linux系统中,查看软件是否安装有多种方法,以下是详细介绍:

基于包管理工具的查询方法
| 发行版类型 | 命令示例 | 说明 |
|---|---|---|
| Debian/Ubuntu(.deb包) | dpkg -s package_nameapt list --installed | grep package_name |
dpkg -s显示包详细信息;apt list列出已安装包并过滤 |
| Red Hat/CentOS(.rpm包) | rpm -q package_nameyum list installed | grep package_name |
rpm -q查询包状态;yum list结合grep筛选 |
| Fedora(.rpm包) | rpm -q package_name |
直接返回包名和版本号,未安装则报错 |
| 通用(源码编译安装) | which command_namecommand_name --version |
which检查可执行文件路径;--version查看版本信息 |
具体操作步骤及示例
使用包管理工具查询
- Debian/Ubuntu系统:
- 执行
dpkg -s vim,若已安装会显示类似以下信息:Package: vim Version: 2:8.2.3665-1ubuntu1 Status: install ok installed - 使用
apt list --installed | grep vim也可快速确认。
- 执行
- Red Hat/CentOS系统:
- 运行
rpm -q httpd,若已安装会返回httpd-2.4.6-90.el7.centos.x86_64。 - 通过
yum list installed | grep httpd同样有效。
- 运行
通用命令查询
- 检查可执行文件是否存在:
- 输入
which python3,若返回/usr/bin/python3,则表示已安装。 - 若返回空或提示“command not found”,则未安装。
- 输入
- 查看版本信息:
- 执行
java -version,若已安装会输出版本号,否则提示错误。
- 执行
高级查询需求
- 批量查询多个包:
- 在Debian/Ubuntu中,可创建文件
packages.txt,每行一个包名,执行:while read p; do dpkg -s $p || echo "$p not installed"; done < packages.txt
- 在Red Hat/CentOS中,使用
rpm -qa配合grep逐行匹配。
- 在Debian/Ubuntu中,可创建文件
- 查找文件所属包:
- 使用
rpm -qf /usr/bin/docker可识别文件归属的包。
- 使用
注意事项
- 权限问题:部分命令可能需要
root权限,建议使用sudo前缀。 - 源码编译安装的局限性:如
./configure后安装的软件,需通过which或检查/usr/local/bin目录。 - 命令兼容性:
yum在CentOS 8+被dnf取代,但核心用法一致。
常见问题(FAQs)
Q1:如何区分软件是源码安装还是包管理器安装?
A1:源码安装的软件通常位于/usr/local/bin,而包管理器安装的位于/usr/bin或/usr/sbin,可通过file $(which command)查看二进制格式差异。

Q2:如果查询结果显示包已安装,但执行时提示“command not found”怎么办?
A2:可能原因包括:

- 包安装不完整或损坏,尝试重新安装;
- 环境变量PATH未包含可执行文件路径,检查
echo $PATH; - 命令名称拼写错误或存在同名脚本干扰
