rpm -ql 包名用于列出已安装rpm包的所有文件路径,仅对已安装包有效;需用准确包名(不含.rpm后缀),可配合grep或less过滤输出;未安装时会报错,此时应改用rpm -qpl查看.rpm文件内容。

rpm -ql 包名:查已安装 RPM 包的文件列表
直接运行 rpm -ql 包名 即可列出该包在系统中安装的所有文件路径。这个命令只对「已安装」的 RPM 包有效,如果包没装过,会报错 package is not installed。
常见使用场景包括:确认配置文件位置、找二进制路径、验证是否安装了 man 文档或示例配置。
- 包名必须准确,不能带
.rpm后缀,也不能用全名(如nginx-1.20.1-1.el7.x86_64)——只写nginx就行 - 输出可能很长,建议配合
less或grep过滤,例如:rpm -ql httpd | grep conf - 若提示“command not found”,说明你不在 root 或普通用户环境里执行失败,但
rpm -ql本身不需要 root 权限,只要包已安装即可查询
rpm -qc / -qd:只看配置文件或文档文件
很多 RPM 包会把配置文件和文档分开归类。rpm -qc 包名 只显示被标记为配置文件(config files)的路径,rpm -qd 包名 则只列文档(doc files),比如 README、LICENSE、man 手册等。
这两个子命令比 -ql 更聚焦,适合快速定位关键内容,避免翻一堆日志目录或脚本。
-
rpm -qc nginx通常只返回/etc/nginx/nginx.conf和/etc/nginx/conf.d/下的文件 -
rpm -qd python3可能列出/usr/share/doc/python3-*/下的 HTML 或文本说明 - 注意:不是所有包都定义了
%config或%doc宏,所以有些包执行-qc可能无输出
查不到文件?先确认包名和安装状态
执行 rpm -ql 报错最常见原因是包根本没装,或者你用错了包名。RPM 的包名和命令名经常不一致(比如 which nginx 出来的是命令,但包名可能是 nginx-all-modules 或 nginx-core)。
- 用
rpm -qa | grep 关键词模糊查找已安装包,例如:rpm -qa | grep -i nginx - 用
which 命令名找到可执行文件路径,再用rpm -qf /path/to/file反查归属包,例如:which httpd→rpm -qf /usr/sbin/httpd - 某些软件是通过源码编译安装(
make install)或容器部署的,它们不会出现在 RPM 数据库里,rpm -ql自然查不到
对比未安装的 .rpm 文件内容
如果你手里有一个还没装的 .rpm 文件,想提前知道它会释放哪些文件,不能用 -ql,得换成 -qpl(注意多一个 p):
运行 rpm -qpl 路径/xxx.rpm,就能看到该包在安装前包含的所有文件路径。这个操作不依赖系统是否已装该包,但要求你有对应架构的 RPM 文件(比如 x86_64 包不能在 aarch64 系统上用 -qpl 查,会报错)。
-
rpm -qpl nginx-1.20.1-1.el7.x86_64.rpm输出和rpm -ql nginx高度接近,但不完全等价(实际安装时可能因 %post 脚本或条件宏增删文件) - 若提示
error: Failed dependencies,不是依赖问题,而是你用了错误的选项(比如误写成rpm -ql xxx.rpm) -
-qpl不校验签名,也不检查平台兼容性,纯读取包内 metadata,所以速度很快
rpm -ql 显示的只是构建时记录的路径,不代表这些文件当前一定存在(比如被手动删过、被 rpm -V 检测出修改过、或被其他工具覆盖)。需要确认文件现状,得配合 ls -l 或 stat 实际检查。











