RHEL 10 SBOM:没有 package-manifest 插件时怎么出清单
RHEL 9 的 dnf package-manifest 能直接输出 JSON 清单;到 RHEL 10.2,这个插件不在仓库里。要做 SBOM/包清单,只能回到 rpm 与 dnf repoquery,并自己定义字段。
在 PVE 390 rhel10-lab(RHEL 10.2)执行:
dnf package-manifestsudo dnf install 'dnf-command(package-manifest)'rpm -qa | wc -lrpm -qa | grep -c gpg-pubkeydnf -q repoquery --installed | wc -lrpm -qa --qf '%{NAME}\t%{VERSION}-%{RELEASE}\t%{ARCH}\n' | headrpm -Va | wc -lE3 记录:plans/content-expansion/evidence/rhel/rhel-sbom/run.json(5 步,含插件缺失与计数)。
先给结论:插件不在
Section titled “先给结论:插件不在”$ dnf package-manifestNo such command: package-manifest.It could be a DNF plugin command, try: "dnf install 'dnf-command(package-manifest)'"
$ sudo dnf install 'dnf-command(package-manifest)'Error: Unable to find a match: dnf-command(package-manifest)RHEL 10 仓库没有 package-manifest,这不是“没启用仓库”,而是包不存在。不要照搬 RHEL 9 的 dnf package-manifest > manifest.json。
RPM 清单
Section titled “RPM 清单”$ rpm -qa | wc -l727$ rpm -qa | grep -c gpg-pubkey3$ dnf -q repoquery --installed | wc -l724差值 3 就是 gpg-pubkey-* 伪包:它们出现在 RPM 数据库里,但不是可安装的软件包,repoquery 不列。
审计时建议两个数都记:RPM 数据库 727(含 3 个公钥)、可查询包 724。
生成 TSV
Section titled “生成 TSV”rpm -qa --qf '%{NAME}\t%{VERSION}-%{RELEASE}\t%{ARCH}\n' \ | sort > /tmp/packages.tsvlibgcc 14.3.1-4.4.el10 x86_64linux-firmware-whence 20260130-22.el10 noarchtzdata 2026a-1.el10 noarch需要更多字段就加 %{VENDOR}、%{SIGPGP:pgpsig}、%{INSTALLTIME:date};注意不同 RPM 版本的 queryformat 支持不同标签。
rpm -Va 不是清单
Section titled “rpm -Va 不是清单”$ rpm -Va | wc -l1585-Va 校验文件大小/权限/校验和,输出的是“与包内元数据不一致的文件”,包括正常的配置文件修改、日志、缓存。它不能回答“装了什么包”,也不能单独作为完整性结论。
SBOM 去哪
Section titled “SBOM 去哪”- 包清单:
rpm -qa --qf(本文); - 仓库来源:
dnf repoquery --installed --qf '%{name} %{repoid}'; - 安装历史:
dnf history; - 签名/证书:
rpm -qi、rpm -q --qf '%{SIGPGP:pgpsig}'; - 企业级 SBOM:Red Hat Lightspeed/Insights 的清单与 CVE 关联(需接入,另页)。
- 确认目标版本有没有
package-manifest; - 同时记录 rpm 与 repoquery 计数;
- 排除 gpg-pubkey 伪包;
- 固定 queryformat 字段与排序;
- 记录采集时间/主机/仓库;
- 不把
rpm -Va当包清单。
未实测与边界
Section titled “未实测与边界”- 未测试 Red Hat Insights SBOM 导出;
- 未测试
syft/cdxgen等第三方工具; - 未测试容器镜像 SBOM;
- 未测试签名标签在所有包上的可用性。
- RHEL 10 采用评估 — 版本与清单
- RHEL 10 包回滚与版本锁定 — dnf history
- 官方:Managing software with the DNF tool