我想测试一些食谱的变化,所以我做了我以前做过的事,但结果远非正常:
$ ../gem-sucks/bin/kitchen converge -----> Starting Kitchen (v1.2.1) !!!!!! The `berkshelf' gem is missing and must be installed or cannot be properly activated. Run `gem install berkshelf` or add the following to your Gemfile if you are using Bundler: `gem 'berkshelf'`. >>>>>> ------Exception------- >>>>>> Class: Kitchen::UserError >>>>>> Message: Could not load or activate Berkshelf (can't activate json-1.8.0, already activated json-1.8.1) >>>>>> ---------------------- >>>>>> Please see .kitchen/logs/kitchen.log for more details >>>>>> Also try running `kitchen diagnose --all` for configuration $ gem list | grep berkshelf berkshelf (3.2.1, 3.1.4, 2.0.10, 2.0.9) berkshelf-api-client (1.2.0) $ gem list | grep json json (1.8.1, 1.8.0) multi_json (1.10.1, 1.7.9)
机器正在运行debian Jessie,自从我最后触及这本食谱以来,已经更新了很多软件包(我不知道是否有任何与ruby相关的内容)。
如何让厨房再次工作?
答案 0 :(得分:4)
确保chefdk位于您的路径前方。
PATH=/opt/chefdk/bin:/Users/sowen/.rvm/gems/ruby-2.2.0/bin:/Users/sowen/.rvm/gems/ruby-2.2.0@global/bin:/Users/sowen/.rvm/rubies/ruby-2.2.0/bin:/opt/chefdk/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/sowen/go/bin:/Users/sowen/.rvm/bin:/Users/sowen/.rvm/bin:/Users/sowen/go/bin
我遇到了同样的问题,直到我调整并重新发送了我的bash_profile
答案 1 :(得分:0)
如果您正在使用ChefDk,那么您可以通过删除GEM_HOME
(在我的情况下为/home/username/.chefdk
)中安装的宝石来解决问题。
如果这不起作用,请尝试使用bundle exec kitchen converge
中的包,这应该允许您在列表中使用已安装的gem。
答案 2 :(得分:0)
我遇到了类似的问题,但是在GEM_HOME中没有安装json,我最终不得不运行以下命令来解决我的问题。
gem uninstall -i /opt/chefdk/embedded/lib/ruby/gems/2.1.0 json
答案 3 :(得分:0)
查看此问题https://github.com/test-kitchen/kitchen-vagrant/pull/126
你需要通过gem重新安装berkshelf,然后应用patch kitchen-vagrant
安装上游kitchen-vagrant
git clone https://github.com/test-kitchen/kitchen-vagrant.git
cd kitchen-vagrant
gem build kitchen-vagrant.gemspec
gem install kitchen-vagrant-0.15.0.gem
重新安装旧的Berkshelf
gem install berkshelf