Chef + rbenv:"rbenv: no such command 'install'" 尽管安装了 ruby-build

Chef + rbenv: "rbenv: no such command 'install'" despite ruby-build being installed

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

知道为什么这会在收敛过程中失败而不是在命令行中失败吗??

尝试在 shell 环境中设置 $HOME

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