Linux命令-rpmquery(RPM包查询工具)
- 🔰简介
- 📖语法
- ⚙️选项
- 💡示例
- 示例 1:查询所有已安装包并过滤
- 示例 2:查询文件所属的 RPM 包
- 示例 3:查询包的详细信息和文件列表
- 示例 4:查询未安装的 RPM 包文件
- 示例 5:对比 rpm vs rpmquery vs yum/dnf info
- ⚠️注意
- 📝总结
- 📚相关命令
rpmquery 是 RPM 包管理器的查询前端工具,功能等同于rpm -q,用于查询已安装或未安装 RPM 包的各类信息。在 Red Hat/CentOS/Fedora 系统上是日常包管理中使用频率最高的命令之一。
🔰简介
rpmquery 属于 rpm 软件包的一部分,随rpm包一同安装。它本质上是对rpm -q命令的封装,提供更直观的查询语法。在 RHEL/CentOS/Fedora 等基于 RPM 的发行版上默认可用。
| 特性 | 说明 |
|---|---|
| 所属软件包 | rpm |
| 功能等价 | rpm -q |
| 适用发行版 | RHEL、CentOS、Fedora、openSUSE、Rocky Linux |
| 数据库路径 | /var/lib/rpm/ |
| 普通用户 | 可执行查询操作(只读) |
注意:rpmquery 和
rpm -q输出完全一致,两者可互换使用。部分发行版可能不提供 rpmquery,此时直接用rpm -q即可。
📖语法
rpmquery[选项][包名...]rpmquery[选项]-f文件路径 rpmquery[选项]-pRPM包文件⚙️选项
| 选项 | 说明 |
|---|---|
-a | 列出所有已安装的包 |
-f 文件 | 查询指定文件属于哪个包 |
-p 包文件 | 查询未安装的 RPM 包文件 |
-i | 显示包的详细信息 |
-l | 列出包安装的所有文件 |
-c | 仅列出配置文件 |
-d | 仅列出文档文件 |
-R | 列出包的依赖(Requires) |
--provides | 列出包提供的能力 |
--requires | 同 -R,列出依赖 |
--whatrequires | 列出被哪些包依赖 |
--changelog | 显示变更日志 |
--scripts | 显示安装/卸载脚本 |
--queryformat=格式 | 自定义输出格式 |
--last | 按安装时间排序 |
💡示例
示例 1:查询所有已安装包并过滤
查找系统中所有已安装的内核相关包:
# 查询所有已安装包,过滤包含 kernel 的rpmquery-a|grepkernel# 输出示例:kernel-5.14.0-284.11.1.el9_2.x86_64 kernel-5.14.0-162.6.1.el9_0.x86_64 kernel-core-5.14.0-284.11.1.el9_2.x86_64 kernel-modules-5.14.0-284.11.1.el9_2.x86_64 kernel-devel-5.14.0-284.11.1.el9_2.x86_64统计系统已安装包的总数:
rpmquery-a|wc-l# 输出示例:487按安装时间列出最近安装的 10 个包:
rpmquery-a--last|head-10# 输出示例:openssl-3.0.7-6.el9_2.x86_64 Tue Jun1015:23:012025bash-5.2.15-2.el9.x86_64 Tue Jun1015:20:452025coreutils-9.0-6.el9.x86_64 Tue Jun1015:20:302025示例 2:查询文件所属的 RPM 包
当需要知道某个命令或配置文件来自哪个包时:
# 查询 /usr/bin/vim 属于哪个包rpmquery-f/usr/bin/vim# 输出示例:vim-enhanced-9.0.1677-1.el9.x86_64# 查询某个库文件属于哪个包rpmquery-f/lib64/libc.so.6# 输出示例:glibc-2.34-60.el9.x86_64# 查询某个命令的来源包,连同版本信息rpmquery-f$(whichssh)# 输出示例:openssh-clients-8.7p1-30.el9.x86_64注意:如果文件不属于任何 RPM 包(比如手动编译安装的),rpmquery 将无输出。
示例 3:查询包的详细信息和文件列表
查看 bash 包的详细信息:
rpmquery-ibash# 输出示例:Name:bashVersion:5.2.15 Release:2.el9 Architecture: x86_64 Install Date: Tue10Jun202503:20:45 PM CST Group:Unspecified Size:9757488License:GPLv3+ Signature:RSA/SHA256, Mon 01 May202508:00:00 AM CST, Key ID 199e2f91fd431d51 Source RPM:bash-5.2.15-2.el9.src.rpm Build Date:Mon 01 May202506:12:33 AM CST Build Host:x86-01.stream9.example.com Packager:CentOS Vendor:CentOS URL:https://www.gnu.org/software/bash Summary:The GNU Bourne Again shell Description:The GNU Bourne Again shell(Bash)is a shell orcommandlanguage interpreter that is compatible with the Bourne shell(sh). Bash incorporates useful features from the Korn shell(ksh)and the C shell(csh). Mostshscripts can be run bybashwithout modification.列出 bash 包安装的所有文件:
rpmquery-lbash# 输出示例:/bin/bash /bin/sh /etc/skel/.bash_logout /etc/skel/.bash_profile /etc/skel/.bashrc /usr/bin/bashbug-64 /usr/share/doc/bash-5.2.15 /usr/share/doc/bash-5.2.15/CHANGES /usr/share/doc/bash-5.2.15/COPYING /usr/share/doc/bash-5.2.15/FAQ /usr/share/info/bash.info.gz /usr/share/man/man1/bash.1.gz仅列出配置文件:
rpmquery-cbash# 输出示例:/etc/skel/.bash_logout /etc/skel/.bash_profile /etc/skel/.bashrc查询包的依赖关系:
rpmquery-Rbash# 输出示例:/sbin/install-info libc.so.6()(64bit)libc.so.6(GLIBC_2.15)(64bit)libc.so.6(GLIBC_2.17)(64bit)libc.so.6(GLIBC_2.2.5)(64bit)libdl.so.2()(64bit)libdl.so.2(GLIBC_2.2.5)(64bit)libreadline.so.8()(64bit)libtinfo.so.6()(64bit)rtld(GNU_HASH)示例 4:查询未安装的 RPM 包文件
在安装前检查一个 RPM 包的内容:
# 查看 RPM 包文件的信息(不需要安装)rpmquery-p/tmp/nginx-1.24.0-1.el9.ngx.x86_64.rpm# 输出示例:nginx-1.24.0-1.el9.ngx.x86_64# 查看未安装包的详细描述rpmquery-ip/tmp/nginx-1.24.0-1.el9.ngx.x86_64.rpm# 输出示例:Name:nginx Version:1.24.0 Release:1.el9.ngx Architecture: x86_64...示例 5:对比 rpm vs rpmquery vs yum/dnf info
| 对比项 | rpm -q | rpmquery | yum/dnf info |
|---|---|---|---|
| 查询已安装包 | 支持 | 支持 | 支持 |
| 查询未安装包文件 | rpm -qp | rpmquery -p | 不支持 |
| 查询远程仓库包 | 不支持 | 不支持 | 支持 |
| 需要网络 | 否 | 否 | 是 |
| 输出丰富度 | 详细 | 详细 | 更详细 |
| 执行速度 | 快 | 快 | 较慢 |
# 三种方式查询已安装的包——输出等价rpm-qbashrpmquerybash# 输出均为:bash-5.2.15-2.el9.x86_64# dnf info 额外显示仓库来源和大小dnf infobash# 输出示例:Installed Packages Name:bashVersion:5.2.15 Release:2.el9 Architecture:x86_64 Size:9.3M Source:bash-5.2.15-2.el9.src.rpm Repository:@System⚠️注意
- rpmquery 查询的是本地 RPM 数据库,不需要网络连接
- 如果 RPM 数据库损坏(
/var/lib/rpm/),查询可能失败,需用rpmdb --rebuilddb修复 -f选项查询的文件必须是由 RPM 安装的,手动放置的文件无法追溯-p选项后面跟的是.rpm文件路径,不是包名- 在 Ubuntu/Debian 系统上无此命令,对应工具为
dpkg -l、dpkg -S
📝总结
rpmquery 是 RPM 体系下最常用的包查询工具,与rpm -q完全等价。掌握-a、-f、-i、-l、-R这几个核心选项,即可覆盖日常 90% 的查询场景。查询未安装包用-p,查配置文件用-c,查文档用-d,这些是排障时的利器。
📚相关命令
rpm— RPM 包管理器主命令rpmdb— RPM 数据库操作rpmverify— RPM 包完整性验证rpm2cpio— 从 RPM 包提取文件dnf/yum— 高级包管理器dpkg— Debian 系包查询工具