首页/系统/Linux 运维命令速查/盘点已安装软件包清单

盘点已安装软件包清单

资产与合规视角的包清单:rpm -qa / dpkg -l 导出,配合装机基线比对差异;升级/迁移前的基础数据。

Linux 运维命令速查系统更新于 2026-10-13

为什么要有已安装清单

盘点已安装的软件包是资产管理与合规检查的基础数据:RHEL 系用 rpm -qa 或 dnf list installed,Debian 系用 dpkg-query -W 配合输出格式。把结果排序导出成基线文件,日后与现状比对就能看出机器漂移了哪些包。升级、迁移、审计与安全事件复盘时,这份清单是最直接的依据。

基本信息

适用平台RHEL/CentOS/Rocky 与 Debian/Ubuntu
常用命令rpm -qa、dnf list installed、dpkg-query -W、apt list --installed
产出排序后的清单文件,建议带主机名与日期
比对方式sort 配合 comm 或 diff
权限要求普通用户即可查询

典型使用场景

  • 建立装机基线与现状比对,发现意外安装的软件
  • 迁移前清点目标机需要哪些包
  • 安全事件复盘时确认是否装了受影响版本的组件
  • 合规审计需要提交已安装软件清单
  • 版本升级前评估影响范围

导出与比对

导出与比对
rpm -qa | sort > /tmp/pkgs-$(hostname)-$(date +%F).txt    # RHEL 系清单
dnf list installed | tail -n +2 | wc -l                   # 数量概览
dpkg-query -W -f='${Package} ${Version}\n' | sort > /tmp/pkg-deb.txt   # Debian 系带版本
apt list --installed 2>/dev/null | tail -n +2 | wc -l     # Debian 系数量概览
comm -3 <(sort base.txt) <(rpm -qa | sort) | head -n 40   # 与基线比对差异
dnf repoquery --installed --qf '%{name} %{version}' | head -n 5   # 需要更细字段时

两系命令对照

目的RHEL 系Debian 系
全部包名rpm -qa / dnf list installeddpkg-query -W / apt list --installed
带版本导出dnf repoquery 指定 qf 字段dpkg-query -W -f 指定格式
查某个包是否安装rpm -q 包名dpkg -l 包名
与基线比对sort 后 comm 或 diff同样适用
按大小排序定位大包rpm 查询配合排序dpkg-query 指定格式后排序
长期漂移的机器直接比对基线会全红:先把现状导出确认为新基线,再逐项收敛,否则比对结果没有指导意义。
rpm -qa 只覆盖 RPM 世界:源码安装、snap、语言级包管理器(pip、npm)以及容器镜像内的软件都不在清单里,安全审计时这些要分别清点。
导出字段建议固定为包名加版本:只存包名会在安全比对时丢掉关键信息,例如同一个包从受影响版本升级到修复版本,清单上看起来毫无变化。
清单本身可能带敏感信息(自研包名会暴露内部架构):对外提交审计材料前先脱敏,去掉自研包前缀或与安全团队确认提交范围。

易错点

  • 把包清单当成全部软件资产:源码安装、语言级包管理器与容器镜像都不在其中
  • 长期漂移后直接比对旧基线:差异巨大且无参考价值,先重建当前基线
  • 导出时不排序或字段格式不统一:后续比对出现大量无意义差异,导出时应统一排序与格式
  • 只对比包名不对比版本:安全修复往往只升版本号,忽略版本差异会漏掉关键信息

数据来源与参考

  • man 8 rpm(-qa)
  • man 1 dpkg-query
  • man 8 dnf(list installed)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌