0

我正在尝试创建一个my-main-rpm包含 10 多个依赖项(其中大部分不是我制作的)的 RPM(),但我想先安装另一个my-rpm-prerequisite我创建的 RPM()。此my-rpm-prerequisiteRPM 创建/修改一些需要在安装其他依赖项之前完成的文件。

我希望能够使用单个命令安装整个 rpm:dnf/yum/zypper install my-main-rpm它应该安装所有依赖项。但我希望该命令首先安装my-rpm-prerequisite

有什么办法可以做到这一点吗?

或者有什么方法可以在安装依赖项之前执行脚本?

4

2 回答 2

2

Requires正如克里斯所说,这是不可能实现的。但是如果你“只”想要执行一些脚本,还有其他方法。

首先,您可以在 中指定my-rpm-prerequisite.spec

Supplements: rpm-prerequisite

这样,默认安装将安装 my-rpm-prerequisite 作为 rpm-prerequisite 的增强。

其次,您指定%pretrans脚本。它在事务开始时运行。请参阅https://docs.fedoraproject.org/en-US/packaging-guidelines/Scriptlets/#pretrans

但请注意,即使在安装基本系统时也可能会执行 %pretrans。所以系统(或chroot)上没有安装任何东西。所以应该是用Lua写的,由rpm自己解释。

于 2020-10-19T16:50:23.007 回答
0

Afaik 那是不可能的。rpm依赖系统只是确保安装每个包的依赖关系,而不是安装顺序。在您运行my-main-rpm. 在这种情况下,不可能在安装依赖项之前运行脚本,因为它们已经安装。

我看到你可以影响安装顺序的唯一方法是设置依赖项,但你只能在你自己创建的包上这样做:

  • 如果 A 依赖于 B 并且 B 依赖于 C,那么它们将按照 C -> B -> A 的顺序安装。
  • 如果A依赖B和C,那么B和C会在A之前安装,但是不能保证顺序;它可以是 C -> B -> A,也可以是 B -> C -> A。
于 2020-10-19T10:52:37.850 回答