厨房/ berkshelf想要旧宝石?

时间:2014-12-11 14:17:14

标签: ruby gem berkshelf test-kitchen

我想测试一些食谱的变化,所以我做了我以前做过的事,但结果远非正常:

$ ../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相关的内容)。

如何让厨房再次工作?

4 个答案:

答案 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