通过RVM安装相同版本的Ruby与系统Ruby有什么关系?

时间:2012-01-11 06:14:04

标签: ruby rubygems installation gem rvm

我一直在使用没有RVM的默认系统ruby版本1.8.7用于一些rails项目,并且没有遇到任何问题。我刚刚安装了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),它不会将该版本中的宝石与系统的ruby分开吗?

3 个答案:

答案 0 :(得分:3)

首先想到的是,如果你使用系统Ruby,你将使用它与RVM的Rubies略有不同 - 例如,你可能需要使用sudo来安装宝石。此外,您将无法在系统Ruby中使用许多RVM的功能,例如gemsets。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

  

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

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

  

如果我是对的,为什么这样做很重要,因为如果我想使用RVM安装不同版本的Ruby(如1.9.2),那么它不会将该版本中的宝石与系统的ruby分开?

第二个命令实际上更多是关于方便性而非必要性。是的,RVM 1.8.7中的gems安装将与系统版本的Ruby中安装的gems完全分开;但是,如果你没有运行第二个命令,你就是RVM 1.8.7几乎没有任何宝石(只有默认值)。这意味着您需要通过并手动安装启动和运行项目所需的宝石。而不是这样做,第二个命令允许您只是将已经安装在系统版本的Ruby中的相同gem安装到RVM 1.8.7版本 - 它不会迁移它们,它只是复制它们。在第二个命令之后,有两组完全相同的宝石:一个在系统Ruby中,一个在RVM 1.8.7 Ruby中。所以,如果你要更新任何一个红宝石中的宝石,它们会更新,但其他版本的宝石不会受到影响。

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