如何覆盖 anaconda/kickstart 包排序?

如何覆盖 anaconda/kickstart 包排序?

我正在构建一个可引导 ISO,用于安装 Linux 映像(Oracle Linux,5.8)。这是使用 anaconda 和 kickstart 文件来选择要加载的包。其中一些包因 %post 部分的依赖性问题而失败。

例如,安装完成后在 /root/install.log 中可以看到:

Installing thirdparty-tools-1.00-09.noarch
/var/tmp/rpm-tmp.97891: line 1: ln: command not found
/var/tmp/rpm-tmp.97891: line 2: ln: command not found
/var/tmp/rpm-tmp.97891: line 3: ln: command not found
/var/tmp/rpm-tmp.97891: line 4: ln: command not found
error: %post(thirdparty-tools-1.00-09.noarch) scriptlet failed, exit status 127

我试图找出是否可以控制/覆盖包裹订购,无需编辑任何 RPM 即可添加依赖项。我一直在浏览 anaconda / kickstart 文档(https://fedoraproject.org/wiki/Anaconda/Kickstart#Chapter_3._Package_Selection),并在其他地方进行广泛搜索,所以我认为答案实际上是“不,你不能这样做”,这将是一种耻辱。

问题是我试图包括各种第三者RPM,不受我的控制,并且已经过数字签名。其中包括 %post 部分中的一些处理。此处理需要一些标准的 Linux 命令,例如“ln”、“touch”等,这些命令在 coreutils 包中提供。第三方包当前不包含对 coreutils 包的依赖,尽管显然它确实应该包含在内。 Anaconda使用自己的偏序算法来选择以什么顺序安装这些包,并且正在安装第三方包coreutils 包。显然,正确的解决方案是让第三方修复这些 RPM;然而,这可能需要很长时间。

我希望它们可能是 kickstart 文件的一些隐藏/未记录的选项,这可以添加额外的依赖项。理想情况下,我希望能够将这样的内容添加到 %packages 部分:

%packages
@admin-tools
@base
@core
@system-tools
thirdparty-tools

# We would like to add some magic command to indicate a missing dependency
thirdparty-tools dependson coreutils

所以,我的问题是:是否可以在不编辑任何 RPM 来添加依赖项的情况下控制或覆盖包排序?

[在我意识到这个 Unix StackExchange 站点存在之前,我在 StackOverflow 主站点上问了同样的问题,但尚未收到答案;向任何两次看到此内容的人致歉。 ]

答案1

在 %packages 部分中,不,这是不可能的。在 kickstart 文件中,您可以将安装命令添加到第三方工具的 %post 部分,以确保仅在安装 %packages 部分中的所有包和依赖项后才安装它们。

相关内容