2013-07-04 3 views
4

У меня есть шеф-повар 11.4.4, у которого установлен рубин 1.9.1. Я хочу установить berkshelf, но для этого требуется ruby ​​1.9.2 или новее. Я установил ruby ​​2.0.0-p247 (последняя стабильная) с rvm. Когда я запускаю команду ножа я получаю ...переключение рубин с rvm breaks chef 11.4.4 команда ножа

# 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>' 

Если переключить его обратно в версию системы, которая является версией рубина внедренного с шефом-поваром, он снова работает.

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

Я искал пути для обновления рубина до 2.0.0x для шеф-повара, но не повезло. Мне нравится легко переключаться на рубиновые версии. Было бы здорово, если бы шеф-повар мог сделать то же самое, но просто заставить его работать с последней стабильной версией или даже версией версии 1,9.2 было бы здорово. Благодаря!

+0

У шеф-повара 11.4.4 были проблемы с Ruby 2.0 (rubygems 2.0.x фактически с изменением формата). Попробуйте установить старую версию rubygem, например 1.8.25 'gem update --system 1.8.25' или переключиться на 1.9.3-p448. Таким образом, я решил проблему с шеф-поваром. –

+0

Спасибо. Это помогло. Я переключился на 1.9.3 и установил драгоценный камень шеф-повара, и он сработал. –

+0

Я сделаю ответ и добавлю дополнительную информацию. Это должно быть полезно для многих других, сталкивающихся с тем же вопросом, пожалуйста, проголосуйте за него позже :-) –

ответ

5

Это ни Chef 11,4. 4, ни Руби 2.0.0 виноват, но RubyGems 2.0.x ;-)

См =>CHEF-3933

Обход является установить более старую версию rubygems Try установить старую версию RubyGems, например, 1.8. 25 gem update --system 1.8.25 или переключиться на: 1.9.3-p448.

В любом случае я решил проблему с запуском chef-solo.

Подробнее:

+0

Я вижу. Спасибо за ссылку. Я не рассматривал третий кусок, рубигемы. Это выглядит довольно прямолинейно. Прежде чем переключить ruby ​​обратно на 2.0.x и установите rubygems на 1.8.25, следует ли мне беспокоиться о том, существует ли большой разрыв между ruby ​​и rubygems? Разве я не хочу держать эти 2 относительно близко? Благодарю. –

+0

Я думаю, что не стоит беспокоиться. После того, как 'Chef' исправляет проблему в новых версиях, мы должны быть в состоянии остаться на последних Ruby + rubygems ;-) –

+0

Установка старой версии rubygems работала для меня после того, как я также установил более старую версию json' gem install json -v 1.7.7'. –

11

Вы должны использовать рубин с РВМ:

rvm use 2.0.0-p247 

это будет создана среда использовать этот рубин, вы можете установить его по умолчанию для новых снарядов/сессий с:

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

Это также требуется, чтобы снова установить драгоценные камни, как переключиться на новый рубин:

gem install chef 
+0

Спасибо за подсказку. Я выполнил команды по вашему списку, но последняя команда не удалась: # gem install chef ^ @ ERROR: Не удалось найти действительный gem 'chef' (> = 0), вот почему: Невозможно загрузить данные из https : //rubygems.org/ - Errno :: ETIMEDOUT: время ожидания подключения - соединение (2) (https://rubygems.org/latest_specs.4.8.gz) ОШИБКА: Возможные альтернативы: шеф-повар –

+0

продолжение ... После этого не работает, я переключился на 1.9.3, как было предложено @Terry wang, затем повторили команды, которые вы дали, и это сработало! Спасибо. –

+0

часть, где нам нужно установить шеф-повара снова, имеет больше смысла! – ufdeveloper

3

rvm reset должны решить эту проблему.

При переключении рубиновой версии с rvm use вам нужно еще rvm reset.