我正在学习 Chef 并构建一本 Recipe ,其中包含安装 rbenv
和 ruby-build
的方法。 ruby-build
配方安装程序,然后尝试使用 rbenv
安装 Ruby 2.3.1。但是,每次我运行 chef-client
收敛时,最后一步都会失败并出现错误 rbenv: no such command 'install'
even though 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
知道为什么这会在收敛过程中失败但在命令行中不会失败吗?
最佳答案
尝试在 shell 环境中设置 $HOME
:
environment({
"PATH" => "#{node['rbenv']['bin']}:#{node['rbenv']['root']}/shims:#{ENV['PATH']}",
"HOME" => node["user"]["home"],
})
关于ruby - Chef + rbenv : "rbenv: no such command ' install'"despite ruby-build being installed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37750715/