linux-如何重写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,这些RPM不在我的控制之下,并且已经过数字签名.这些包括%post部分中的一些处理.此处理需要coreutils软件包中提供的一些标准Linux命令,例如’ln’,’touch’等.第三方软件包目前不包括对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

这将在默认编辑器中调出一个重新创建的规范文件,您可以在其中更改require行.另外,您可能还想更改软件包名称,以便您的重建版本与上游供应商的版本有所不同(我通常在软件包名称后加上“ -local”).

上一篇:使用MySQL数据库制作Java应用程序安装程序


下一篇:Java Installer-需要帮助