【问题标题】:What is the point of installing the same version of Ruby through RVM as the system Ruby?通过 RVM 安装与系统 Ruby 相同版本的 Ruby 有什么意义?
【发布时间】:2012-01-11 06:14:03
【问题描述】:

我一直在为几个 rails 项目使用没有 RVM 的默认系统 ruby​​ 版本 1.8.7,并且没有遇到任何问题。我刚刚安装了 RVM,在运行 rvm requirements 之后,我得到了这个输出:

To use an RVM installed Ruby as default, instead of the system ruby:

    rvm install 1.8.7 # installs patch 357: closest supported version
    rvm system ; rvm gemset export system.gems ; rvm 1.8.7 ; rvm gemset import system.gems # migrate your gems
    rvm alias create default 1.8.7

我相信这些命令的作用是在 RVM 安装的 ruby​​ 下安装已使用系统 ruby​​ 安装的相同 gem。

我的问题是,我对这些命令的作用是否正确?如果我是对的,为什么这样做很重要,因为如果我想使用 RVM 安装的不同版本的 Ruby,如 1.9.2,它不会已经将该版本中的 gem 与系统的 ruby​​ 分开了吗?

【问题讨论】:

    标签: ruby rubygems installation gem rvm


    【解决方案1】:

    想到的一件事是,如果您使用系统 Ruby,您使用它的方式会与 RVM 的 Ruby 略有不同——例如,您可能需要使用 sudo 来安装 gems。此外,您将无法通过系统 Ruby 使用 RVM 的许多功能,例如 gemsets。

    【讨论】:

      【解决方案2】:

      我能想到的一个原因是,即使系统 ruby​​ 更新了,您也不想担心系统无法正常工作。

      【讨论】:

        【解决方案3】:

        我的问题是,我对这些命令的作用是否正确?

        他们所做的事情你是对的。第一个命令安装 Ruby 1.8.7,第二个命令在新的 RVM Ruby 1.8.7 安装中安装当前安装在系统 Ruby 安装中的所有 gem,第三个命令将 Ruby 的默认版本设置为 RVM Ruby 1.8。 7.

        如果我是对的,为什么这样做很重要,因为如果我想使用安装了 RVM 的不同版本的 Ruby,比如 1.9.2,它不会已经将该版本中的 gem 与系统的 ruby​​ 分开了吗? ?

        第二个命令实际上更多是为了方便而不是必要。是的,RVM 1.8.7 中安装的 gem 将与 Ruby 系统版本中安装的完全分开;但是,如果您没有运行第二个命令,那么您的 RVM 1.8.7 开始时几乎没有 gem(只有默认值)。这意味着您需要通过并手动安装启动和运行项目所需的 gem。而不是这样做,第二个命令允许您将已在 Ruby 系统版本中安装的相同 gem 安装到 RVM 1.8.7 版本 - 它不会迁移它们,它只是制作它们的副本。在第二个命令之后,有两组完全相同的 gem:一组在系统 Ruby 中,一组在 RVM 1.8.7 Ruby 中。因此,如果您要更新任一 Rubies 中的 gem,它们会得到更新,但另一个版本的 gem 不会受到影响。

        希望这有助于回答您的问题。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-05-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-07-11
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多