4

我有安装了 ruby​​ 1.9.1 的厨师 11.4.4。我想安装 berkshelf 但它需要 ruby​​ 1.9.2 或更高版本。我用 rvm 安装了 ruby​​ 2.0.0-p247(最新稳定版)。当我运行刀命令时,我得到...

# knife help 
/opt/chef/embedded/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:247:in `to_specs': Could not find chef (>= 0) amongst [rake-10.1.0, rvm-1.11.3.8] (Gem::LoadError)
from /opt/chef/embedded/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:256:in `to_spec'
from /opt/chef/embedded/lib/ruby/site_ruby/1.9.1/rubygems.rb:1231:in `gem'
from /usr/bin/knife:22:in `<main>'

如果我将它切换回系统版本,即嵌入厨师的 ruby​​ 版本,它会再次工作。

# rvm use system
Now using system ruby.
# knife help
Usage: knife SUBCOMMAND (options)
.
.
.

我在谷歌上搜索了将 ruby​​ 升级到 2.0.0x for chef 的方法,但没有运气。我喜欢如此轻松地切换 ruby​​ 版本的能力。如果厨师也能做到这一点,那就太好了,但让它与最新的稳定版甚至 1.9.2 版的 ruby​​ 一起工作会很棒。谢谢!

4

3 回答 3

11

您需要使用带有 rvm 的 ruby​​:

rvm use 2.0.0-p247

这将设置使用该 ruby​​ 的环境,您可以将其设置为新 shell/会话的默认值:

rvm alias create default 2.0.0 #OR:
rvm use 2.0.0 --default

当您切换到新的 ruby​​ 时,还需要再次安装 gems:

gem install chef
于 2013-07-04T05:11:40.587 回答
5

这既不是 Chef 11.4.4 也不是 Ruby 2.0.0 的错,而是 ruby​​gems 2.0.x;-)

见 => CHEF-3933

解决方法是安装旧版本rubygems尝试安装旧版本的rubygems,例如1.8.25gem update --system 1.8.25或暂时切换到1.9.3-p448

chef-solo无论如何,我解决了运行问题。

更多信息:

于 2013-07-06T12:22:58.713 回答
3

rvm reset应该解决问题。

当您切换 ruby​​ 版本时,rvm use您需要rvm reset再次切换。

于 2014-03-11T16:41:34.940 回答