macOS(x86)下rbenv安装Ruby 2.6.7报BUILD FAILED问题问询
macOS 12.3 x86环境下rbenv安装Ruby 2.6.7构建失败排查方案
第一步:定位真实错误
终端输出的最后10行全是C文件编译告警,不是失败根因。直接打开构建日志文件查找错误关键词:
open /var/folders/pk/y07ms18x3l98w09j6dj4p_680000gn/T/ruby-build.20220606121206.1319.log
在打开的日志文件中搜索error:、fatal、ld: symbol字段,即可定位具体报错点。
第二步:通用兼容修复(覆盖90%以上该场景的失败问题)
macOS 12.3+移除了系统内置的Ruby开发依赖,且Homebrew默认提供的openssl@3与Ruby 2.6存在版本兼容问题,按以下步骤操作:
- 重装Xcode命令行工具,修复缺失的系统编译头文件:
安装完成后重启终端再进行后续操作。sudo rm -rf /Library/Developer/CommandLineTools xcode-select --install - 安装Ruby 2.6兼容的依赖包:
brew install openssl@1.1 readline libyaml gdbm - 清理旧的构建缓存与损坏的源码包:
rm -rf ~/.rbenv/cache/ruby-2.6.7.tar.bz2 rm -rf /var/folders/pk/y07ms18x3l98w09j6dj4p_680000gn/T/ruby-build.* - 手动指定依赖路径执行安装命令,避免ruby-build自动探测到不兼容的新版依赖:
RUBY_CONFIGURE_OPTS="--with-openssl-dir=$(brew --prefix openssl@1.1) --with-readline-dir=$(brew --prefix readline) --with-libyaml-dir=$(brew --prefix libyaml) --with-gdbm-dir=$(brew --prefix gdbm)" CFLAGS="-Wno-error=implicit-function-declaration" rbenv install 2.6.7
特殊场景排查
如果执行完上述步骤仍构建失败,根据日志报错对应处理:
- 若日志出现
ruby_builtin_dln.o相关链接错误,检查是否存在Homebrew全局安装的Ruby版本冲突,执行brew uninstall --force ruby后重试安装。 - 若日志出现
readline.c编译错误,确认没有在环境变量中自定义设置CPPFLAGS、LDFLAGS,临时清空这类自定义编译变量后重试。
提示:Ruby 2.6系列已结束官方维护,对macOS 12及以上版本的系统兼容支持不完善,如果业务场景允许,优先选择安装Ruby 2.7及以上版本可避免绝大多数编译问题。
内容的提问来源于stack exchange,提问作者Trevor Aron
相关产品推荐
相关产品推荐

