如何提取 rpm 规范文件提供的指令

Mic*_*elt 2 rpm rpmbuild

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

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

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

理想情况下,答案是一个命令 - 但如果它必须是多个命令,那就是 c'est la vie。

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

谢谢你。

Anu*_*nha 5

是的,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)
Run Code Online (Sandbox Code Playgroud)

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

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

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