我可以安装需要特殊参数的 RPM 作为 Kickstart 的一部分吗?

Can I install an RPM requiring special arguments as part of Kickstart?

我有一个供应商提供的 RPM,通常要求用户接受 EULA 协议作为软件包安装的一部分。基本上,预安装脚本(如 rpm -qa --scripts 所示)如下所示:

rm -f /tmp/mypackage_EULA.txt
echo "Lots and lots of lines of EULA stuff" >> /tmp/mypackage_EULA.txt
echo "Press 'q' to continue" >> /tmp/mypackage_EULA.txt
less -X /tmp/mypackage_EULA.txt

echo "By installing this package you are agreeing to the license, &c."
echo "Press 'a' to agree"

ans=""

while [ "$ans" == "" ]
do
    read -n 1 ans
done

if [ "$ans" != "a" ]; then
    echo ""
    echo "aborting ..."
    exit 1
else
    echo ""
    echo "installing  ..."
fi

如果您不想手动接受 EULA,供应商的说明建议使用 --noscripts。

但是,我想做的是将其作为 Kickstart 的一部分进行安装,方法是将其添加到 %packages 列表中,或者将其作为我正在安装的其他软件包的先决条件自动安装。

非常不喜欢那些破坏 RPM 自动安装的供应商。 (--noscripts可以安全地用于任意包,如果使用不当,严重破坏。)

我不相信(尽管我没有具体查看)您可以为 kickstart 脚本的 %packages 部分中列出的软件包设置类似的选项。

我认为您可以做两件事来解决这个问题。

您可以在 %post 脚本中手动安装该 RPM,然后按照指示传递 --noscripts(但请注意 CentOS 7yum 版本是可能会 "yell" 对你进行一些超出其控制范围的 rpmdb 更改,尽管它应该恢复得很好)。

或者你可以看看你是否可以提供他们正在使用的任何东西来从标准输入中请求它想要的信息,然后做一些类似的事情

echo a | yum install <package>