我正在使用 CentOS 6.5 和 Cobbler 2.4(来自 EPEL)。我正在尝试使用heredoc注释来创建一个存储库文件(可以工作)而不$basearch
被解释。发生的情况是文件被创建,但$basearch
没有被替换(例如它被删除)。
我拥有的:
%post
#raw
cat > /etc/yum.repos.d/blah.repo <<REPO
[repo]
name=repo
baseurl=http://repo.local/repo/$basearch
enabled=1
priority=99
gpgcheck=0
REPO
#end raw
%end
实际放入的内容/etc/yum.repos.d/blah.repo
($basearch
缺少):
[repo]
name=repo
baseurl=http://repo.local/repo/
enabled=1
priority=99
gpgcheck=0
我已经验证过的事情:
- 我知道它不是 Cobbler 或 Cheetah,因为
cobbler validateks
并向cobbler profile getks ...
我报告了未经修改的 kickstart 脚本(当使用#raw
和#end raw
. - 我在 Cheetah 中创建了一个模板示例,它正确地显示了未转义的字符串。
我做了一些进一步的研究并发现这,从第一个项目符号来看,它看起来像是$basearch
kickstart 中的一个特殊变量。对于如何在不使用curl
获取文件或显式定义架构的情况下解决此问题,是否有任何建议?为了简单起见,我想将其保留在 kickstart 文件中。
答案1
问题是我必须转义#raw
and#end raw
因为它是由 bash 解释的。
%post
#raw
cat > /etc/yum.repos.d/blah.repo <<REPO
[repo]
name=repo
baseurl=http://repo.local/repo/\$basearch
enabled=1
priority=99
gpgcheck=0
REPO
#end raw
%end