用rvm切换红宝石打破厨师11.4.4刀命令

时间:2013-07-04 00:17:02

标签: ruby rvm chef berkshelf

我有厨师11.4.4,安装了ruby 1.9.1。我想安装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)
.
.
.

我已经搜索了将红宝石升级到2.0.0x的方法,但没有运气。我喜欢这么容易切换ruby版本的能力。如果厨师可以做同样的事情会很好,但只是让它与最新的稳定甚至1.9.2版本的红宝石一起工作会很棒。谢谢!

3 个答案:

答案 0 :(得分: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

当你切换到新的红宝石时,还需要再次安装宝石:

gem install chef

答案 1 :(得分:5)

它既不是Chef 11.4.4也不是Ruby 2.0.0的错,但是rubygems 2.0.x; - )

参见=&gt; CHEF-3933

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

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

更多信息:

答案 2 :(得分:3)

rvm reset应解决问题。

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