我正在学习厨师并制作一本食谱,其中包含用于安装rbenv
和ruby-build
的食谱。 ruby-build
配方安装程序,然后尝试使用rbenv
安装Ruby 2.3.1。但是,每次运行chef-client
以进行收敛时,即使 rbenv: no such command 'install'
的安装成功完成,最后一步也会失败并显示错误ruby-build
。
bash "initialize rbenv and install ruby 2.3.1" do
user "david"
cwd node["user"]["home"]
environment({
"PATH" => "#{node['rbenv']['bin']}:#{node['rbenv']['root']}/shims:#{ENV['PATH']}"
})
# code "eval \"$(rbenv init -)\" && rbenv install 2.3.1"
code <<-EOF
eval "$(rbenv init -)"
rbenv install 2.3.1
EOF
end
我已经评论过我尝试过的单行方式。在这两种情况下,尽管程序在那里,它仍然会遗漏install
。
事实上,我可以手动进入机器并运行这些命令:
[root@myserver ~]# su david
[david@myserver root]$ cd
[david@myserver ~]$ eval "$(.rbenv/bin/rbenv init -)"
[david@myserver ~]$ .rbenv/bin/rbenv install 2.3.1
Downloading ruby-2.3.1.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.1.tar.bz2
任何想法为什么会在收敛期间失败而不是在命令行?
答案 0 :(得分:1)
尝试在shell环境中设置$HOME
:
environment({
"PATH" => "#{node['rbenv']['bin']}:#{node['rbenv']['root']}/shims:#{ENV['PATH']}",
"HOME" => node["user"]["home"],
})