在Linux系统运维和日常使用中,确认某个软件是否已经安装是经常会遇到的操作需求,不同发行版和不同安装方式的软件,对应的查询方法各有不同,掌握多种查询方式能更高效地完成相关确认工作。

基于包管理工具的查询方法
Linux不同发行版使用不同的包管理工具,对应的软件安装记录也存储在包管理工具的数据库中,通过包管理工具查询是最准确的方式之一。
RPM系发行版查询方法
CentOS、RedHat、Fedora等使用RPM包管理的发行版,可以通过rpm命令查询软件安装情况,常用命令如下:
# 查询指定软件包是否安装,以nginx为例 rpm -qa | grep nginx # 查询软件包的详细信息,包括安装路径、版本等 rpm -qi nginx # 查看软件包安装的文件列表 rpm -ql nginx
如果rpm -qa | grep 软件名有输出结果,说明该软件已经通过RPM包的方式安装到系统中。
DPKG系发行版查询方法
Ubuntu、Debian等使用DPKG包管理的发行版,可以通过dpkg命令查询软件安装情况,常用命令如下:
# 查询指定软件包是否安装,以mysql为例 dpkg -l | grep mysql # 查询软件包的详细状态信息 dpkg -s mysql # 查看软件包安装的文件列表 dpkg -L mysql
dpkg -l的输出中,软件包状态为ii时表示软件已经正常安装,其他状态如un表示未安装,rc表示已卸载但配置文件残留。
通用命令查询方法
如果软件是通过源码编译、二进制包等方式安装,没有走系统包管理流程,可以通过查找命令路径的方式判断。
使用which命令查询
which命令会在系统的环境变量PATH指定的路径中查找可执行文件,适合查询提供了可执行命令的软件:
# 查询python命令对应的可执行文件路径 which python # 查询java命令对应的可执行文件路径 which java
如果命令返回了具体的路径,说明该软件的可执行文件已经添加到环境变量中,通常代表软件已经安装。
使用whereis命令查询
whereis命令不仅会查找可执行文件,还会查找软件的源码、帮助文档等相关文件,结果更全面:
# 查询git相关的所有文件路径 whereis git
输出结果包含可执行文件路径、配置文件路径、帮助文档路径等,若可执行文件路径存在,说明软件大概率已经安装。
通过进程判断运行中的软件
如果软件正在运行中,可以通过查看进程的方式确认其安装情况,常用命令如下:
# 查看所有进程,过滤指定软件名,以docker为例 ps -ef | grep docker # 使用pgrep命令直接查询进程ID pgrep docker
如果有对应的进程输出,说明该软件当前正在运行,必然已经安装到系统中。
不同查询方式对比
不同查询方式的适用场景和优缺点如下:
| 查询方式 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
| rpm/dpkg查询 | 通过包管理工具安装的软件 | 结果准确,能获取版本、安装文件等详细信息 | 无法查询非包管理方式安装的软件 |
| which/whereis查询 | 提供可执行命令的软件 | 通用所有发行版,操作简单 | 无法查询无可执行命令的库类软件 |
| 进程查询 | 正在运行的软件 | 能直接确认软件当前处于运行状态 | 无法查询未运行的软件 |