提问者:小点点

Ruby安装损坏


我有一台运行Yosemite(10.10.2)的Mac,并且我使用brew在其上安装了ruby 2.2.2(我也尝试了rbenv)。每当我运行bundle、rake或任何与ruby相关的东西时,我都会收到以下错误:

$ bundle
/usr/local/Cellar/ruby/2.2.2/lib/ruby/2.2.0/rubygems/dependency.rb:315:in `to_specs': Could not find 'bundler' (>= 0) among 9 total gem(s) (Gem::LoadError)
Checked in 'GEM_PATH=/Users/cici/.gem/ruby/2.2.0:/usr/local/lib/ruby/gems/2.2.0:/usr/local/Cellar/ruby/2.2.2/lib/ruby/gems/2.2.0', execute `gem env` for more information
from /usr/local/Cellar/ruby/2.2.2/lib/ruby/2.2.0/rubygems/dependency.rb:324:in `to_spec'
from /usr/local/Cellar/ruby/2.2.2/lib/ruby/2.2.0/rubygems/core_ext/kernel_gem.rb:64:in `gem'
from /usr/local/bin/bundle:22:in `<main>'

我在尝试修复opensslbug时遇到了这种情况。无论如何,错误消息是正确的,我在这些路径中没有捆绑器宝石。我只是不明白为什么我有的路径在那里。我没有这个路径:

 /Users/cici/.gem/ruby/2.2.0

相反,它是:

/Users/cici/.gem/ruby/2.0.0

我使用rbenv安装了2.2.2,所以我不确定a)为什么2.2.0在GEM_PATH上,b)为什么我在. gem下有2.0.0?以下是其输出:

$ which -a ruby
/usr/local/bin/ruby
/usr/local/bin/ruby
/usr/local/bin/ruby
/usr/bin/ruby
/usr/bin/ruby
/usr/local/bin//ruby

/usr/local/bin/ruby是一个符号链接 /usr/bin/ruby.我不确定最后一个条目是什么!版本返回:

$ ruby -v
ruby 2.2.2p95 (2015-04-13 revision 50295) [x86_64-darwin14]

我如何清理这一切并重新开始?我已经尝试了rbenv卸载以及使用brew安装和卸载。

谢谢!


共1个答案

匿名用户

Ruby在特定于版本的路径中查找gem,而忽略补丁版本。因此,如果您之前在Ruby 2.0. x下安装了gem,它们会进入/用户/cici/.gem/ruby/2.0.0,但现在您已经安装了Ruby 2.2.x,它会在/用户/cici/.gem/ruby/2.2.0中查找。

当您升级Ruby时,这可能是一个问题,因为您的所有gem可执行文件(例如bundle)仍在您的$PATH中,但由于新版本,它们所需的文件不再位于Ruby的加载路径中。尝试运行哪个捆绑包;我打赌它在某个路径中,例如/用户/cici/. gem/ruby/2.0.0/bin

解决方案是重新安装所有的gem,并可能更新您的$PATH以不包含旧版本的可执行文件。如果您正确设置,rbenv应该处理最后一部分。