在 CentOS 7 系统上管理和切换不同版本的 Ruby 环境,对于开发者而言是一项常见且重要的需求,RVM(Ruby Version Manager)正是为此而生的强大命令行工具,它允许用户轻松安装、管理和使用多个 Ruby 版本,并为每个项目创建独立的 gem 集合,有效避免了版本冲突,本文将详细介绍在 CentOS 7 上安装和配置 RVM 的完整流程,帮助您构建一个灵活、高效的 Ruby 开发环境。

准备工作:更新系统与安装依赖
在开始安装 RVM 之前,确保您的系统处于最新状态,并安装了所有必要的编译工具和库,这是保证 RVM 及后续 Ruby 版本能顺利编译和运行的关键。
更新您的系统软件包至最新版本:
sudo yum update -y
安装 RVM 和 Ruby 编译所需的依赖包,这些包包括用于下载 RVM 安装脚本的 curl,用于验证软件包完整性的 gnupg2,以及一系列用于编译 Ruby 源代码的开发工具和库。
您可以使用以下命令一次性安装所有必需的依赖项:
| 类别 | 包名 | 描述 |
|---|---|---|
| 核心工具 | curl, gnupg2, wget |
下载文件和验证签名 |
| 开发工具组 | Development Tools |
包含 gcc, make, autoconf 等编译器 |
| Ruby 依赖 | openssl-devel, zlib-devel, readline-devel, sqlite-devel |
Ruby 核心功能和常用扩展库的开发文件 |
执行以下命令进行安装:
sudo yum install -y curl gnupg2 wget sudo yum groupinstall -y "Development Tools" sudo yum install -y openssl-devel zlib-devel readline-devel sqlite-devel
完成这些准备工作后,您的系统环境就已经为安装 RVM 做好了充分的准备。
安装 RVM (Ruby Version Manager)
RVM 的安装过程非常便捷,官方提供了一个一键安装脚本,为了确保安全性,我们首先需要导入 RVM 的公钥,以验证下载的安装脚本的完整性。
-
导入 RVM 公钥 打开终端,执行以下命令来导入 RVM 项目的 GPG 密钥,此密钥用于签名 RVM 发布的包。
gpg2 --keyserver hkp://keyserver.ubuntu.com --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
-
安装 RVM 稳定版 导入密钥后,使用
curl从 RVM 官方网站下载并执行安装脚本,该脚本会自动将 RVM 安装到您的用户目录下(通常是~/.rvm)。\curl -sSL https://get.rvm.io | bash -s stable
这里的
\curl命令可以防止别名干扰。-sSL参数让curl静默操作、跟随重定向并在发生错误时退出。bash -s stable表示以稳定版模式执行安装脚本。 -
加载 RVM 环境 安装脚本执行完毕后,RVM 的环境变量尚未加载到当前的 Shell 会话中,您需要重新加载配置文件才能使用
rvm命令,执行以下命令:
source /etc/profile.d/rvm.sh
为了让新打开的终端自动加载 RVM,安装脚本通常会自动将加载命令写入您的 shell 配置文件(如
~/.bash_profile或~/.bashrc),如果没有,您可以手动添加上述命令到配置文件的末尾。
使用 RVM 安装和管理 Ruby
RVM 安装成功后,您就可以开始利用它来管理 Ruby 版本了。
-
检查 RVM 是否可用 验证 RVM 是否已正确安装并加载:
rvm version
如果输出 RVM 的版本号,说明安装成功。
-
列出所有可安装的 Ruby 版本 RVM 可以查询并展示所有可供安装的 Ruby 版本,包括 MRI、JRuby 等。
rvm list known
这会打印出一个长长的列表,您可以从中选择一个您需要的版本进行安装。
-
安装指定版本的 Ruby 要安装当前比较稳定的 Ruby 3.1.2 版本,可以执行:
rvm install 3.1.2
RVM 会自动下载源代码并进行编译,这个过程需要一些时间,具体取决于您的服务器性能,请耐心等待编译完成。
-
使用和设置默认 Ruby 版本 安装完成后,您可以使用
rvm use命令切换到新安装的 Ruby 版本。rvm use 3.1.2
为了避免每次打开新终端都要手动切换,您可以将某个版本设置为默认版本:
rvm use 3.1.2 --default
您可以验证当前使用的 Ruby 和 gem 版本:

ruby -v gem -v
输出的版本号应与您安装的
1.2一致。 -
创建和使用 Gemset RVM 的另一个强大功能是 Gemset(gem 集),它可以为每个 Ruby 版本创建独立的 gem 环境,完美实现项目隔离。
# 为 Ruby 3.1.2 创建一个名为 "my_project" 的 gemset rvm gemset create my_project # 切换到这个 gemset rvm gemset use my_project # 在使用 Ruby 版本时直接指定 gemset rvm use 3.1.2@my_project
在这个 gemset 中安装的所有 gem 都不会影响其他 gemset 或全局环境。
相关问答FAQs
问题1:RVM 和 rbenv 有什么区别?我应该选择哪个?
解答: RVM 和 rbenv 都是优秀的 Ruby 版本管理工具,但设计哲学有所不同,RVM 是一个功能齐全的“大而全”工具,它不仅管理 Ruby 版本,还内置了 gemset 功能,并且重写了一些 shell 命令(如 cd)以实现自动切换环境,功能强大但有时被认为侵入性较强,rbenv 则更“轻量”和“极简”,它只专注于版本切换本身,通过在 PATH 前插入 shim(垫片)文件来工作,不重写命令,其安装 Ruby 的功能需要依赖 ruby-build 等插件,gemset 的功能则需要通过 bundler 或其他插件来实现,选择哪个主要取决于个人偏好和项目需求,如果您需要一个开箱即用、功能一体化的解决方案,RVM 是一个很好的选择;如果您偏爱更轻量、更符合 Unix 哲学的工具,可以尝试 rbenv。
问题2:如何完全卸载 RVM?
解答: 如果您决定不再使用 RVM,可以按照以下步骤将其从系统中彻底移除,执行 RVM 自带的卸载脚本,它会删除 RVM 的主目录和所有相关的 Ruby 环境:
rvm implode
执行此命令后,系统会提示您确认,确认后,~/.rvm 目录将被删除,RVM 在安装时可能修改了您的 shell 配置文件(如 ~/.bash_profile, ~/.bashrc, ~/.zshrc 等),您需要手动打开这些文件,删除所有与 RVM 相关的行,通常包含 export PATH="$PATH:$HOME/.rvm/bin" 和 source $HOME/.rvm/scripts/rvm 等内容,清理完毕后,重新打开终端,rvm 命令就应完全不可用了。