【问题标题】:Why are gems installed in a directory with a different Ruby version than I’m running?为什么 gem 安装在与我运行的 Ruby 版本不同的目录中?
【发布时间】:2011-06-15 02:12:35
【问题描述】:

当我安装 gem 时,它会安装在名为 1.9.1 的目录中,尽管它不是我安装的 Ruby 版本:

$ ruby -v
ruby 1.9.3p327 (2012-11-10 revision 37606) [x86_64-darwin12.2.0]

$ gem which rails
.../ruby/gems/1.9.1/gems/railties-3.2.9/lib/rails.rb

为什么会这样?我没有安装其他 Ruby 版本(当然也没有安装 v1.9.1)。

【问题讨论】:

    标签: ruby rubygems


    【解决方案1】:

    请注意,以下内容也适用于撰写本文时所有更高版本的 Ruby,而不仅仅是 1.9.2。


    根据1.9.2 release announcement

    标准库安装在/usr/local/lib/ruby/1.9.1

    此版本是“库兼容版本”。 Ruby 1.9.2 几乎与 1.9.1 兼容,因此该库安装在 1.9.1 目录中。

    即使它安装在不同编号的目录中,它使用的是 1.9.2。 RubyGems 可以通过gem env 显示它正在使用的所有目录。

    这确保了一组已安装的 gems 仅由它们可以实际运行的版本使用(尤其是由于编译的 C 扩展),并且当升级到更新但“与库兼容”的版本时,一个不会'不必重新安装所有 gem。

    【讨论】:

    • 那个链接就是我要找的。我知道我以前读过一些关于它的东西,但不记得在哪里。
    【解决方案2】:

    我相信这是因为它们共享相同的标准库。

    1.9.2 核心有一些重大升级,但我认为标准库中没有任何改变,所以它们共享相同的路径。不过,这没什么好担心的——正如你所说,一切正常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-16
      • 2014-06-07
      • 1970-01-01
      • 1970-01-01
      • 2014-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多