gpt4 book ai didi

linux - 如何覆盖 anaconda/kickstart 包排序?

转载 作者:太空狗 更新时间:2023-10-29 11:09:40 24 4
gpt4 key购买 nike

我正在构建一个可引导的 ISO 以用于安装 Linux 镜像(Oracle Linux,5.8)。这是使用带有 kickstart 文件的 anaconda 来选择要加载的包。其中一些软件包因 %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 以添加依赖项的情况下控制或覆盖包顺序?

非常感谢您的帮助。

最佳答案

如果您无法获得源 RPM,您可以使用 rpmrebuild 重新创建 RPM:

rpmrebuild -e -n -d . -p thirdparty-tools-1.00-09.noarch

这将在您的默认编辑器中打开一个重新创建的规范文件,您可以在其中更改需求行。此外,您可能还想更改包名称,以便您重新构建的版本与上游供应商的版本有所区别(我通常在包名称后附加“-local”)。

关于linux - 如何覆盖 anaconda/kickstart 包排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17807650/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com