2014-11-08 76 views
0

我可以安裝berkshelf就好:伯克斯拒絕更新

$ gem install berkshelf                  
Successfully installed berkshelf-3.2.0 
Parsing documentation for berkshelf-3.2.0 
Done installing documentation for berkshelf after 1 seconds 
1 gem installed 

但它沒有真正影響我的伯克斯:

$ berks version 
Berkshelf (2.0.18) 

出現正常:

$ which berks 
/home/rubyUser/.rvm/gems/ruby-2.1.4/bin/berks 

我m在Debian穩定版上使用ruby 2.1.4(wheezy):

$ rvm list 

rvm rubies 

    ruby-1.9.3-p550 [ x86_64 ] 
=* ruby-2.1.4 [ x86_64 ] 

我覺得我的路是正確的:

$ echo $PATH 
/home/rubyUser/.rvm/gems/ruby-2.1.4/bin:/home/rubyUser/.rvm/gems/[email protected]/bin:/home/rubyUser/.rvm/rubies/ruby-2.1.4/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/home/rubyUser/.rvm/bin:/home/rubyUser/.rvm/bin 

這有可能是chefdk以某種方式干擾:

$ whereis berks 
berks: /usr/bin/berks /usr/bin/X11/berks /opt/chefdk/bin/berk 

,但給人的完整路徑調用伯克斯不影響版本。看着由which提供的那個berks,它揭示了它僅僅是從其他地方呼喚這個寶石,我如何尋找它來自哪裏?

$ cat `which berks` 
#!/usr/bin/env ruby_executable_hooks 
# 
# This file was generated by RubyGems. 
# 
# The application 'berkshelf' is installed as part of a gem, and 
# this file is here to facilitate running it. 
# 

require 'rubygems' 

version = ">= 0" 

if ARGV.first 
    str = ARGV.first 
    str = str.dup.force_encoding("BINARY") if str.respond_to? :force_encoding 
    if str =~ /\A_(.*)_\z/ and Gem::Version.correct?($1) then 
    version = $1 
    ARGV.shift 
    end 
end 

gem 'berkshelf', version 
load Gem.bin_path('berkshelf', 'berks', version) 
+0

從我看到的時候,它不拒絕更新清除這些類的東西。它更新得很好,但使用舊版本。您可以嘗試卸載舊版本。 – SlySherZ 2014-11-08 15:10:44

+0

卸載導致這個'$ berks版本 在任何來源找不到合適版本的berkshelf(2.0.18) 運行'bundle install'安裝缺少的gems.'這導致我在下面的答案 – thoth 2014-11-08 16:20:29

回答

0

我有一個錯誤的Gemfile.lock放在我所在的目錄中。它鎖定了berkshelf到2.0版本。

更深刻的回答我的問題就是如何讓一個適當的Rakefile去,妥善必要

+0

RVM添加[ rubygems-bundler](https://github.com/mpapis/rubygems-bundler),這可能是你的問題。我已經從我的系統中刪除它。 – matt 2014-11-08 17:31:11