Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 伯克斯拒绝更新_Ruby_Berkshelf - Fatal编程技术网

Ruby 伯克斯拒绝更新

Ruby 伯克斯拒绝更新,ruby,berkshelf,Ruby,Berkshelf,我可以很好地安装Berk Shelf: $ gem install berkshelf Successfully installed berkshelf-3.2.0 Parsing documentation for berkshelf-3.2.0 Done installing documentation for berkshelf after 1 seco

我可以很好地安装Berk Shelf:

$ 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
我在debian stable(wheezy)上使用ruby 2.1.4:

我认为我的道路是正确的:

$ echo $PATH
/home/rubyUser/.rvm/gems/ruby-2.1.4/bin:/home/rubyUser/.rvm/gems/ruby-2.1.4@global/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
但是给出调用berks的完整路径并不影响版本。看看
提供的伯克斯,它揭示了它只是从其他地方调用gem,我如何找到它的来源

$ 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)

我所在的目录中有一个错误的Gemfile.lock。它被锁定到2.0版本


对于我的问题,一个更深层次的答案是使用一个适当的耙铲,在必要时适当地清理这些东西

从我看来,它并没有拒绝更新。它更新得很好,但使用的是旧版本。您可以尝试卸载旧版本。卸载导致此
$berks版本找不到正确版本的Berkshellf(2.0.18)在任何源代码中,运行
bundle install`来安装缺少的gems。`这让我找到了下面的答案,当您安装Ruby时,Wrvm补充道,这可能是导致您出现问题的原因。我已经从我的系统中删除了它。
$ 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)