rvm是当前最稳妥的选择,因其支持多版本切换、gemset隔离、自动处理OpenSSL依赖,且能避免Rails等项目因版本冲突导致的隐性问题。

直接装最新稳定版 Ruby,rvm 是当前最稳妥的选择。如果你后续要跑 Rails、Jekyll 或维护旧项目,版本锁定和 gemset 隔离能避免大量隐性冲突;系统包管理器装的版本通常太旧(比如 Ubuntu 24.04 默认还是 ruby 3.2.2),而源码编译又容易卡在依赖或 SSL 配置上。
rbenv 和 rvm 到底选哪个
rvm 功能更全,自带 gemset、自动处理 OpenSSL 依赖、支持多用户配置,适合真实开发场景;rbenv 更轻量,但得额外装 ruby-build,且不自动解决 libssl 版本错位这类问题。实际踩坑中,90% 的「gem install bundler 失败」、「rails new 报 OpenSSL::SSL::SSLError」都源于 rbenv 编译时没指定 --with-openssl-dir 路径。
-
rvm安装后默认用系统 OpenSSL,基本不报 SSL 错误;rbenv默认找/usr下的头文件,CentOS/RHEL 8+ 和 Ubuntu 22.04+ 的 OpenSSL 3.x 头文件路径已变,必须手动指定 -
rvm use 3.2.4 --default会自动把~/.rvm/rubies/ruby-3.2.4/bin加进$PATH;rbenv global 3.2.2后还得手动rbenv rehash,否则ruby命令找不到 - 如果你只跑一个项目、不切版本,
apt install ruby-full最快;但只要涉及两个以上项目(比如一个 Rails 6 + Ruby 2.7,一个 Rails 7 + Ruby 3.2),rvm省下的调试时间远超安装耗时
rvm 安装失败最常见的三个原因
不是网络问题,而是权限、依赖或环境加载顺序不对。别跳过验证步骤:
- 用
sudo执行\curl -sSL https://get.rvm.io | bash -s stable—— 这会导致 RVM 装到/usr/local/rvm,后续所有rvm install都缺写入权限,报Permission denied - 没装
build-essential(Ubuntu/Debian)或"Development Tools"(RHEL/CentOS/Fedora)——rvm install会卡在configure: error: no acceptable C compiler found in $PATH - 执行
source ~/.rvm/scripts/rvm后仍提示command not found: rvm—— 检查~/.bashrc或~/.zshrc是否真加了这行;Zsh 用户尤其注意,~/.bashrc不会被自动读取
装完 Ruby 后 gem install 总是 timeout
这不是你网络差,而是 rubygems.org 的 CDN 在国内访问极不稳定。不换源,gem install rails 十有八九卡在 Fetching mail-2.8.1.gem 五分钟不动。
- 换国内镜像源(推荐清华源):
gem sources --add https://ruby.taobao.org/ --remove https://rubygems.org/(注意:淘宝源已停,改用清华源) - 验证是否生效:
gem sources -l输出应只有一行https://ruby.taobao.org/或https://mirrors.tuna.tsinghua.edu.cn/rubygems/ - 如果提示
source does not support search,说明源地址末尾少了斜杠,正确写法是https://mirrors.tuna.tsinghua.edu.cn/rubygems/(带结尾/) - 换源后首次
gem install可能仍慢,因为要下载索引;之后就快了。若仍失败,加-V参数看具体卡在哪——大概率是 DNS 解析失败,此时可临时加--http-proxy http://127.0.0.1:1080(如果你有本地代理)
真正麻烦的不是装 Ruby,而是装完发现 which ruby 指向 /usr/bin/ruby,或者 bundle exec rails s 报 LoadError: cannot load such file -- bundler/setup——这种多半是 shell 初始化没生效,或者 rvm use 没设对 scope(global / current / shell)。别急着重装,先 rvm list 和 rvm current 对两遍输出。


















