Chef + rbenv:" rbenv:没有这样的命令'安装'"尽管安装了ruby-build

时间:2016-06-10 14:25:19

标签: ruby bash chef rbenv

我正在学习厨师并制作一本食谱,其中包含用于安装rbenvruby-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

任何想法为什么会在收敛期间失败而不是在命令行?

1 个答案:

答案 0 :(得分:1)

尝试在shell环境中设置$HOME

environment({
    "PATH" => "#{node['rbenv']['bin']}:#{node['rbenv']['root']}/shims:#{ENV['PATH']}",
    "HOME" => node["user"]["home"],
  })