4

Ruby 1.9.1がインストールされたchef 11.4.4があります。berkshelf をインストールしたいのですが、Ruby 1.9.2 以降が必要です。ruby 2.0.0-p247 (最新の安定版) を rvm でインストールしました。ナイフコマンドを実行すると...

# 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 バージョンの ruby​​ で動作するようにするだけでも素晴らしいでしょう。ありがとう!

4

3 に答える 3

11

rvm で ruby​​ を使用する必要があります。

rvm use 2.0.0-p247

これにより、そのルビーを使用する環境がセットアップされます。新しいシェル/セッションのデフォルトに設定できます。

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

新しい ruby​​ に切り替えるときに、gem を再度インストールする必要もあります。

gem install chef
于 2013-07-04T05:11:40.587 に答える
5

これは Chef 11.4.4 のせいでも Ruby 2.0.0 のせいでもなく、rubygems 2.0.x のせいです;-)

=> CHEF-3933を参照

回避策はrubygems、古いバージョンの ruby​​gems をインストールすることです。たとえば 1.8.25 などの古いバージョンの ruby​​gems をインストールするgem update --system 1.8.25か、当分の間切り替え1.9.3-p448てください。

chef-soloとにかく実行の問題を解決しました。

より詳しい情報:

于 2013-07-06T12:22:58.713 に答える