【发布时间】:2016-10-11 13:37:34
【问题描述】:
我正在学习 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
任何想法为什么这会在收敛期间失败但在命令行中不会失败??
【问题讨论】:
-
我不这么认为,因为我没有使用全局 rbenv
标签: ruby bash chef-infra rbenv