在为 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) 添加到示例中