如何提取 rpm 规范文件提供的说明

如何提取 rpm 规范文件提供的说明

我回顾了几个相关的问题 - 最接近的是:从 RPM 中提取规范文件——我必须补充一点,我会用同样的方式表达我的问题。但是,.spec 文件似乎不在 .rpm 文件中(当它是二进制包时)。

所以,我的问题是:如何获取源自规范文件的信息 - 至少尽可能多。

  • 我知道有一个命令可以列出 .rpm 的内容(实际上至少rpm2cpio xxx.rpm | cpio -itv有两个 - 一个
  • 其他命令来获取所需的内容
  • 特别是:使用什么命令来获取作为安装过程的一部分运行的前/后/等脚本。

理想情况下,答案是单个命令 - 但如果必须是多个命令,那就是这样。

ps 我已经检查过rpmbuild --rebuild(说它需要源 RPM)并且无法找到rpmlint

谢谢。

答案1

是的,rpm SPEC 不是打包 RPM 的一部分。但是,您可以查询 RPM 包以获取 SPEC 文件中存在的信息。

例如:

1)以下命令将为您提供安装或更新 RPM 包时执行的前/后脚本。

rpm -q --scripts (installed RPM name, this name will be without the .rpm extension)
rpm -qp --scripts (if you have a rpm file)

2)--queryformat您可以使用rpm 命令选项 查看 SPEC 文件中存在的特定信息。

rpm -q --queryformat '%{ARCH} %{NAME}\n' (RPM name, if it installed)
rpm -qp --queryformat '%{ARCH} %{NAME}\n' (if you have an RPM file)

上面将给出 RPM 设计的架构以及 RPM 的实际名称。这些信息位于 SPEC 文件的特定部分,例如名称、Arch、Requires(pre)、Requires(post)、BuildRequires 等。对于有效的查询选项,请检查此关联

答案2

除非您拥有生成该 rpm 的源 rpm,否则无法提取创建该 rpm 的构建指令。

如果有问题的 rpm 来自官方存储库,您可以在您的/etc/yum.repos.d(对于 RHEL/CentOS)文件夹中启用相应的源存储库,然后通过 yum 下载源 rpm。 (您可以对 DNF/Zypper/等执行类似操作。)

相关内容