支持
RVM 由志愿者社区维护,请将问题报告到 RVM 问题追踪器。
如果您能提供帮助或希望成为维护者之一,请开始提供帮助。您可以在 RVM Github 组织 中找到更多与 RVM 相关的项目。
赞助商
Carbon Ads

RVM 基础

想知道为什么你应该 使用 RVM 吗? 首先,RVM 不仅使安装多个 Ruby 解释器/运行时变得容易且一致,它还提供诸如 gemsets 之类的功能,这些功能通常在大多数 Ruby 安装中不受支持。

RVM 还允许您以不会弄乱现有 Ruby 安装的方式使用不同的 Ruby(除非您告诉它),以及让您在不同的终端中同时运行多个不同的 Ruby!

入门

首先,您必须确保您 安装 RVM

安装后配置

当您通过 ssh 或本地 shell 帐户登录时,RVM 将作为函数加载。如果出现问题,请使用以下链接之一作为配置终端的参考

对于非交互式 shell,RVM 将仅添加到 PATH 中,不会加载。这意味着在这种模式下无法使用 Ruby,但有一些简单的方法可以加载 Ruby

source $(rvm 1.9.3 do rvm env --path)

然后,当您登录或启动 shell 时,这将自动加载 RVM,无论 shell 类型如何。很方便,对吧?

您现在应该打开一个新的 shell 并开始使用 rvm。

关于 .bash_profile 警告的说明。在一些 Linux 发行版中,默认的 .bash_profile(偶尔是 .bashrc)包含以下行

[ -z "$PS1" ] && return

条件 [ -z "$PS1" ] 如果字符串 "$PS1" 的长度为零(非交互式 shell),则为真。rvm 需要为交互式和非交互式 shell 加载,这就是为什么强烈建议修改此文件的原因。

首先确保上一步成功,并且 rvm 正确加载。为此,并验证 RVM 是否已加载作为 shell 函数,请运行:type rvm | head -1

自动依赖安装

安装 Ruby 时,RVM 可能需要使用 sudo 来安装依赖项。请确保调用 RVM 命令(尤其是 rvm install)的用户拥有 sudo 权限。

如果您希望能够由没有 sudo 权限的用户运行 RVM 命令,则需要关闭自动依赖安装。

rvm autolibs disable

但这意味着您需要手动管理依赖项。

安装 Ruby

假设这显示了 "rvm is a function",您就可以开始了。例如,要安装并使用 Ruby 2.1.1,您可以执行以下操作

$ rvm install 2.1.1

成功使用 RVM 安装 Ruby 解释器后,您可以通过执行 use 命令来使用它。例如,对于 Ruby 2.1.1

$ rvm use 2.1.1
$ ruby -v
ruby 2.1.1p76 (2014-02-24 revision 45161) [x86_64-darwin12.0] 
$ which ruby
/Users/rys/.rvm/rubies/ruby-2.1.1/bin/ruby

注意:新用户在使用 Ruby 版本之间切换时,可能会对正确的方法感到困惑。在使用已安装的 Ruby 时,不需要包含 rvm list 输出中列出的任何内容的 "ruby-" 部分。这只是用来区分 REE Ruby、MRI Ruby 等。但是,请注意,当您在 MRI 或 Rubinus 或 REE 之间切换时,您需要使用 ree|ruby|rbx 部分。当您想要切换时,只需使用版本号和任何补丁级别。如果是 -head 版本,请使用完整的字符串,因为它不包含数字。这同样适用于设置默认 Ruby。以下是一个示例,说明我的意思

# This changes to MRI Ruby 2.1.1 and sets it as your default.
$ rvm --default use 2.1.1

# The following changes to ruby-head (MRI Ruby) but does _not_
# set it as your default Ruby.
$ rvm use ruby-head

# This changes to jruby-head and _does_ set it as
# your default ruby
$ rvm --default use jruby-head

# You use the following full form if, for example,
# you previously had a different Ruby selected (maybe JRuby)
$ rvm use ruby-2.1.1

# This changes to whatever RVM recognizes as the most current
# MRI Ruby 2.1.1, and sets it as default.
$ rvm --default use 2.1.1

注意:如果您只使用主版本号和次版本号,RVM 会检查并使用其 $rvm_path/config/db 中该主版本号和次版本号的最新补丁级别。例如,如果您只安装了 2.0.0-p451,而 2.0.0-p481 是最新版本,RVM 将尝试下载、安装并将 2.0.0-p481 设置为您的默认 2.0.0。这种行为可能符合您的预期,也可能不符合您的预期。如果不符合您的预期,请确保在指定 RVM 在设置默认值时应使用的 Ruby 时,包含补丁级别。RVM 在每次更新 RVM 时都会更新已知列表($rvm_path/config/db 和 $rvm_path/config/known),因此主版本号和次版本号的 "当前" 版本(例如,在撰写本文时为 2.1.2)可能会发生变化。由于这个原因,RVM 不以您安装的内容为准。它以这两个文件中维护的内容为准。

注意:从 Ruby 2.1.1 开始,Ruby 切换到语义版本控制方案,这可能会影响您使用 rvm 管理 Ruby 的方式。 Ruby 语义版本控制

请注意:RVM 不会干预您安装的任何系统 Ruby。要能够 "使用" 您的系统 Ruby,您可以告诉 RVM 取消它应用的环境更改,如下所示。

$ rvm use system
$ ruby -v
ruby 2.0.0p451 (2014-02-24 revision 45167) [universal.x86_64-darwin13]
$ which ruby
/usr/bin/ruby

which 命令告诉当前 shell 返回 Ruby 的位置。在本例中,您可以看到 RVM 实际上已经“隐藏”了自己,并让您重新访问系统安装的 Ruby。隐藏并不意味着 RVM 消失了,而是系统环境和相关变量被重置为系统 Ruby 预期的那样,就好像 RVM 从未安装过一样。执行另一个 $ rvm use default 命令将使 RVM 恢复服务,并加载您设置为默认 Ruby 的任何 Ruby 版本。您可以随时通过执行以下命令查看默认 Ruby 版本:$ rvm alias show default

我们不能过分强调这一点!RVM 不会控制系统 Ruby 或其 gems。只有由 RVM 安装的 Ruby 和 gems 才会受到 RVM 的控制!

下一步是什么?

有关更详细的解释,请浏览网站的其他部分。特别是,请务必查看工作流程 示例。

请记住,切换 Ruby 版本是在每个 shell 的基础上进行的。如果您想要更多关于如何在打开新 shell 时设置可用 Ruby 版本的信息,您需要阅读我们关于如何 设置默认 Ruby 解释器 的页面。

在您掌握了处理 Ruby 解释器的技巧之后,下一步是开始学习关于 RVM gemsets 的知识。

如果您想了解 RVM 在任何时候选择了哪个 Ruby 版本并将其设置为活动状态(如果有),您可以将此信息添加到您的 shell 提示符 中。

如果您在 shell 中使用 tab 补全,请参阅有关使用 shell 补全 的文档。