【问题标题】:Ruby install brokenRuby 安装损坏
【发布时间】:2015-04-18 13:52:17
【问题描述】:

我有一台运行 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>'

我遇到了这种情况,试图修复 openssl 错误。无论如何,错误消息是正确的,我在这些路径中没有捆绑器 gem。我只是不明白为什么我所拥有的路径在那里。我没有这条路:

 /Users/cici/.gem/ruby/2.2.0

相反,它是:

/Users/cici/.gem/ruby/2.0.0

我使用 rbenv 安装了 2.2.2,所以我不确定 a) 为什么 GEM_PATH 上是 2.2.0 和 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 安装和卸载。

谢谢!

【问题讨论】:

    标签: ruby macos


    【解决方案1】:

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

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

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

    【讨论】:

    • $ 哪个捆绑 /usr/local/bin/bundle
    • 成功了!然而,我又回到了让我陷入这个兔子洞的最初错误。 Gem::Ext::BuildError: 错误: 无法构建 gem 原生扩展。 /usr/local/opt/ruby/bin/ruby -r ./siteconf20150418-14037-1q9v0rr.rb extconf.rb 检查 pg_config... 否 没有 pg_config... 无论如何都要尝试。如果构建失败,请再试一次 --with-pg-config=/path/to/pg_config 检查 libpq-fe.h... 否 Can't find the 'libpq-fe.h header *** extconf. rb 失败 ***
    • 对...stackoverflow 上有很多关于该错误的答案,但似乎都没有解决我的问题。
    猜你喜欢
    • 2013-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    • 2016-03-17
    • 2017-04-02
    • 2012-10-11
    • 1970-01-01
    相关资源
    最近更新 更多