如果 %post 包含反引号或命令替换,则日志文件为空白

如果 %post 包含反引号或命令替换,则日志文件为空白

在为 Centos6.6 构建自定义 USB 安装程序时(并不容易),我发现如果kickstart 文件的 %post 部分有反引号

  • Anaconda 运行完成,但立即退出并显示空白屏幕(无视频输出)。正常情况下,它会退出并显示一条消息,提示 Anaconda 已终止等。
  • anaconda-ks.log 和 %post 日志文件都存在,但长度为零。

这有效

%pre --log=/root/postLog.log
echo "This is the post"
ls
%end

这不管用

%pre --log=/root/postLog.log
echo "This is the post"
echo `ls`
%end

这也行不通

%pre --log=/root/postLog.log
echo "This is the post"
echo $(ls)
%end

为什么?我需要在 %post 中做很多事情,而没有命令替换/反引号支持会使这些工作变得更加困难。

有什么解决方法吗?

编辑:为什么我需要反引号?

该安装程序用于设备产品,因此需要安装基本操作系统、自定义操作系统 rpm 和产品 rpm。

因此在 %post 部分,类似这种模式非常常见:

cd $ApplicationPackageDir
RPMLIST=`ls *.rpm`
RPMCOUNT=`ls *.rpm | /usr/bin/wc -l`

for theRpm in $RPMLIST
do
    echo /bin/rpm --quiet --upgrade --nodeps --force $theRpm
done

类似模式用于一般执行某项操作任何文件存在于特定目录中。

如果 anaconda 因为文件中的反引号而出错,整个概念就无法工作。

此外,反引号是一个有效的 bash 操作符 —— kickstart 似乎对其有点麻烦。

bash 是反引号应该在 kickstart 中工作?

编辑二:将 $(ls) 添加到示例中

相关内容