我正在学习Chef,并构建一个食谱,其中包含安装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
有什么想法,为什么在收敛过程中会失败,但在命令行中不会?