mac ruby 依赖安装失败的根本原因是系统更新导致环境链断裂:sip 锁定系统 ruby、homebrew 路径失效、openssl/readline 不兼容、shell 配置清空及 path 错乱;修复关键在于确认 ruby 来源、补全路径、重建上下文,而非重装。
mac 上 ruby 依赖安装失败,根本原因不是 ruby 本身坏了,而是系统更新后底层环境链断开了:sip 锁定系统 ruby、homebrew 路径失效、openssl/readline 库不兼容、shell 配置被清空、path 顺序错乱。修复关键在确认来源、补全路径、重建上下文,而不是反复重装。
先确认你用的到底是不是系统 Ruby
打开终端,连续执行这三行:
-
which ruby —— 如果输出
/usr/bin/ruby或/System/Library/...,说明正被 SIP 保护的老版本拖累,不能装任何 gem - ruby -v —— macOS Sonoma 及之后系统自带仍是 2.6.x,但 CocoaPods 等工具要求 ≥ 2.7.4,3.x 更稳妥
-
gem env home —— 路径必须和
which ruby同源,且不能以/usr或/System开头;理想状态是类似~/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0
用 rbenv 快速重建干净的 Ruby 环境
比 RVM 更轻量,无全局 hook 干扰,适配当前所有 macOS 版本(包括 Sequoia):
- 确保已装 Xcode 命令行工具:
xcode-select --install - 通过 Homebrew 安装:
brew install rbenv ruby-build - 初始化 shell(zsh 用户):
echo 'eval "$(rbenv init - zsh)"' >> ~/.zshrc && source ~/.zshrc - 安装并设为全局版本(推荐 3.2.2 或 3.3.4):
rbenv install 3.3.4 && rbenv global 3.3.4 - 验证:
ruby -v显示 3.3.4,which ruby指向~/.rbenv/shims/ruby
修复 gem 和 bundler 依赖链
系统更新会让已编译的 gem(尤其是含 C 扩展的 nokogiri、openssl)失效,Bundler 也可能与锁文件不匹配:
- 先装或升级 Bundler:
gem install bundler - 进项目目录后,删缓存:
rm -rf vendor/cache tmp/ - 强制刷新依赖:
bundle install --full-index - 若报
cannot load such file -- openssl,说明 Ruby 编译链接的 OpenSSL 库被破坏,直接重装:rbenv uninstall 3.3.4 && rbenv install 3.3.4
别再用 sudo gem install
90% 的权限报错根源就在这里。rbenv 或 Homebrew 安装的 Ruby 默认支持用户空间安装,所有 gem 自动落到当前版本可写目录下:
- 如果之前误用过
sudo gem install,先清理:gem uninstall cocoapods && gem cleanup - 后续统一用
bundle exec pod install调用 CocoaPods,避免 PATH 冲突 - 国内用户记得换源加速:
gem sources --remove https://rubygems.org/ && gem sources -a https://gems.ruby-china.com/










