不用系统包管理器装 ruby是因为其版本旧、无新版rubygems、无法多版本共存,且修改风险高;应使用rvm在用户目录隔离安装并管理版本与gemset。

为什么不用系统包管理器装 Ruby?
直接用 apt install ruby 或 yum install ruby 装出来的 Ruby 通常版本旧、不带 rubygems 最新版,且无法并存多个版本。开发中常需切换 2.7 / 3.0 / 3.2 等版本测试兼容性,系统 Ruby 会被锁死在单一路径(如 /usr/bin/ruby),改起来风险高、影响系统工具(比如某些发行版的 apt 脚本依赖特定 Ruby 版本)。
所以得用 rvm —— 它把每个 Ruby 版本装在用户目录下(~/.rvm/),互不干扰,且自动管理 GEM_HOME 和 GEM_PATH。
安装 rvm 的正确姿势(绕过常见失败)
官网推荐的 \curl -sSL https://get.rvm.io | bash -s stable 在国内经常卡住或校验失败。更稳的方式是分两步:
PyCharm 2026.2.0.1 Linux版提供 JetBrains 官方 2026.2.0.1 版本安装包,适合需要指定 PyCharm 版本进行 Python 项目开发、运行和调试的用户。
- 先下载脚本:
curl -sSL https://raw.githubusercontent.com/rvm/rvm/master/binscripts/rvm-installer > rvm-installer - 再本地执行并跳过 GPG 校验(若网络受限):
bash rvm-installer --skip-gpg-check - 装完必须加载环境:
source ~/.rvm/scripts/rvm,建议加到~/.bashrc或~/.zshrc末尾,否则新开终端就找不到rvm命令 - 验证是否生效:
rvm -v应输出版本号;type rvm应显示 “rvm is a function”
rvm 安装 Ruby 版本时的依赖陷阱
运行 rvm install 3.2.2 报错 “required packages not installed” 是最常见问题。rvm 不会自动装系统级依赖,不同发行版要手动补全:
- Ubuntu/Debian:
sudo apt update && sudo apt install -y build-essential libssl-dev libreadline-dev zlib1g-dev libyaml-dev libsqlite3-dev sqlite3 autoconf automake libtool bison - CentOS/RHEL 8+:
sudo dnf groupinstall "Development Tools" && sudo dnf install -y openssl-devel readline-devel zlib-devel yaml-devel sqlite-devel - 如果还报
libffi相关错误,单独装:sudo apt install libffi-dev(Debian系)或sudo dnf install libffi-devel(RHEL系) - 别用
--disable-binary,除非你真想从源码编译所有依赖 —— 默认启用二进制包能快很多
版本切换与默认设置的实际效果
rvm use 3.2.2 只对当前 shell 有效;rvm use 3.2.2 --default 才会让新打开的终端自动进入该版本。但要注意:
- 切换后检查:
ruby -v和which ruby必须指向~/.rvm/rubies/ruby-3.2.2/bin/ruby,而不是/usr/bin/ruby - 项目级锁定用
.ruby-version文件:在项目根目录写入3.2.2,进入该目录时 rvm 会自动切换(前提是已安装该版本) - gemset 不是必须的,但隔离 gem 很有用:
rvm use 3.2.2@myapp --create,之后gem install的包只在这个 gemset 里,不会污染全局或其他项目 - 卸载某个版本:
rvm remove 2.7.8,它会连同对应 gemset 一起删掉
真正容易被忽略的是 shell 配置文件的加载顺序 —— 如果你用 zsh 但把 source ~/.rvm/scripts/rvm 加到了 .bashrc,那 zsh 终端就永远用不了 rvm。确认你正在用的 shell 对应的配置文件(echo $SHELL)已被修改。










