2015-01-05 2 views
4

У меня возникли проблемы при настройке шеф-повара и бродяги для моего рельса. Когда я пытаюсь:Не удалось найти «berkshelf» (> = 0) среди 90 общих драгоценных камней (Gem :: LoadError)

$ vagrant up 

Я получаю ошибку:

Bringing machine 'default' up with 'virtualbox' provider... 
The following berks command failed to execute: 

    /Users/user/.chefdk/gem/ruby/2.1.0/bin/berks --version --format json 

The stdout and stderr are shown below: 

stdout: 
stderr: /opt/chefdk/embedded/lib/ruby/site_ruby/2.1.0/rubygems/dependency.rb:313:in `to_specs':       
    Could not find 'berkshelf' (>= 0) among 90 total gem(s) (Gem::LoadError) 
    Checked in 'GEM_PATH=/Users/user/.vagrant.d/gems:/Applications/Vagrant/bin/../embedded/gems', execute `gem env` for more information 
    from /opt/chefdk/embedded/lib/ruby/site_ruby/2.1.0/rubygems/dependency.rb:322:in `to_spec' 
    from /opt/chefdk/embedded/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_gem.rb:58:in`gem' 
    from /Users/user/.chefdk/gem/ruby/2.1.0/bin/berks:22:in `<main>' 

Затем, когда я бегу gem env, я получаю:

RubyGems Environment: 
- RUBYGEMS VERSION: 2.2.0 
- RUBY VERSION: 2.1.0 (2013-12-25 patchlevel 0) [x86_64-darwin14.0] 
- INSTALLATION DIRECTORY: /Users/user/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0 
- RUBY EXECUTABLE: /Users/user/.rbenv/versions/2.1.0/bin/ruby 
- EXECUTABLE DIRECTORY: /Users/user/.rbenv/versions/2.1.0/bin 
- SPEC CACHE DIRECTORY: /Users/user/.gem/specs 
- RUBYGEMS PLATFORMS: 
- ruby 
- x86_64-darwin-14 
- GEM PATHS: 
    - /Users/user/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0 
    - /Users/user/.gem/ruby/2.1.0 
- GEM CONFIGURATION: 
    - :update_sources => true 
    - :verbose => true 
    - :backtrace => false 
    - :bulk_threshold => 1000 
    - "gem" => "--no-document" 
- REMOTE SOURCES: 
    - https://rubygems.org/ 
- SHELL PATH: 
    - /Users/user/.rbenv/versions/2.1.0/bin 
    - /usr/local/Cellar/rbenv/0.4.0/libexec 
    - /Users/user/.chefdk/gem/ruby/2.1.0/bin 
    - /opt/chefdk/bin 
    - /Users/user/.rbenv/shims 
    - /Users/user/.chefdk/gem/ruby/2.1.0/bin 
    - /opt/chefdk/bin 
    - /opt/chef/embedded/bin 
    - /usr/local/bin 
    - /Library/Frameworks/Python.framework/Versions/3.4/bin 
    - /Users/user/.rbenv/shims 
    - /Users/user/.chefdk/gem/ruby/2.1.0/bin 
    - /opt/chefdk/bin 
    - /opt/chef/embedded/bin 
    - /usr/local/bin 
    - /Library/Frameworks/Python.framework/Versions/3.4/bin 
    - /Users/user/.chefdk/gem/ruby/2.1.0/bin 
    - /opt/chefdk/bin 
    - /Users/user/.rbenv/shims 
    - /opt/chef/embedded/bin 
    - /usr/local/bin 
    - /Library/Frameworks/Python.framework/Versions/3.4/bin 
    - /Users/user/.rbenv/shims 
    - /Users/user/.rbenv/bin 
    - .git/safe/../../bin 
    - /Users/user/.rbenv/shims 
    - /Users/user/.bin 
    - /usr/local/sbin 
    - /usr/local/bin 
    - /usr/bin 
    - /bin 
    - /usr/sbin 
    - /sbin 
    - /opt/X11/bin 
    - /Users/user/Documents/AppFiles/gsutil 
    - /Applications/Postgres.app/Contents/Versions/9.3/bin 
    - /Users/user/.rvm/bin 
    - /usr/sbin 
    - /Users/user/.rvm/bin 
    - /Users/user/Documents/AppFiles/gsutil 
    - /Applications/Postgres.app/Contents/Versions/9.3/bin 
    - /Users/user/.rvm/bin 
    - /usr/sbin 
    - /Users/user/.rvm/bin 
    - /Users/user/Documents/AppFiles/gsutil 
    - /Applications/Postgres.app/Contents/Versions/9.3/bin 
    - /Users/user/.rvm/bin 
    - /usr/sbin 
    - /Users/user/.rvm/bin 

установлен Berkshelf, а также, ChefDK. Я также не забудьте добавить:

PATH=$HOME/.chefdk/gem/ruby/2.1.0/bin:/opt/chefdk/bin:$PATH к моему .bash_profile.

Любая помощь была бы высоко оценена!

ответ

8

vagrant-berkshelf поддержка только Berkshelf установлена ​​Chef-DK.

Вам необходимо удалить шеф-повар & Berkshelf install by gem.

gem uninstall chef chef-zero berkshelf knife-solo

И установить шеф-DK с сайта повара https://downloads.getchef.com/chef-dk, новая версия содержит все эти инструменты


EDIT

Если вы используете кухня, вам нужно держать Berkshelf установить на gem следует за этим знанием: https://stackoverflow.com/a/28221417/3271231

+0

Он работал хорошо для меня под Ubuntu с Chef 0.3.6 – Pierozi

+0

что работал спасибо! –

0

Проверьте версию vagrant-berkshelf, более новые версии должны понять, как заставить его использовать берки из ChefDK немного лучше. Тем не менее, я определенно хотел бы переключиться на Test Kitchen, даже если вы все еще используете Vagrant под капотом, он включен в ChefDK и обрабатывает эту проблему гораздо более гладко.

2

Я вижу на выходе, который вы опубликовали, что вы используете RBENV, и я думаю, что это может быть причиной ваших проблем.

ChefDK поставляется со встроенным Ruby. Все драгоценности для ChefDK (chef-client, berkshelf и т. Д.) Хранятся со встроенным рубином и не отображаются в рубине системы или в любых рубинах, управляемых RBENV/RVM. Они загружаются исполняемыми файлами с использованием встроенного рубика ChefDK.

У меня были схожие проблемы с вами, и я избегаю использовать RBENV/RVM с ChefDK, где это возможно.

Если вам действительно нужен менеджер версий для других вещей, таких как несколько установок ruby ​​/ rails, у меня был успех, убедившись, что элементы пути ChefDK приходят до элементов пути, связанных с RBENV.

Для управления драгоценными камнями, связанными с ChefDK, используйте команду chef gem вместо обычной команды gem, чтобы они добавились во встроенный рубин вместо системного рубина.

Надеюсь, это поможет вам понять это.

3

Также проверьте C:\opscode\chefdk\bin перед embedded\bin в вашей ПУТЬ.Вы можете проверить с chef -v

chef -v 
WARN: C:/opscode/chefdk/embedded/bin is before C:/opscode/chefdk/bin in your Path, please reverse that order. 
WARN: consider using the correct `chef shell-init <shell>` command to setup your environment correctly. 
Chef Development Kit Version: 0.4.0 
Смежные вопросы