macOS 11.6下使用ruby-install安装Ruby 2.6.x/3.0.x编译失败如何解决
问题原因
编译失败由两个兼容性问题共同导致:
- 环境中自带的bison语法分析工具版本过高,Ruby 2.6.8及更早版本的ripper扩展源码仅兼容bison 3.0以下版本,新版bison无法识别旧版语法规则,触发报错日志中
ripper.y: syntax error, unexpected identifier, expecting string错误。 - 系统默认的openssl库版本过高,和Ruby 2.6系列内置的openssl扩展不兼容,触发ossl_x509store.c相关的编译告警。
解决方案
方案一:指定兼容依赖版本编译(适合必须使用Ruby 2.6.8的场景)
- 先通过包管理工具安装兼容版本的依赖,以macOS的Homebrew为例,执行:
brew install bison@2.7 openssl@1.1 - 执行安装命令时临时指定依赖路径即可完成编译:
PATH="$(brew --prefix bison@2.7)/bin:$PATH" RUBY_CONFIGURE_OPTS="--with-openssl-dir=$(brew --prefix openssl@1.1)" ruby-install ruby 2.6.8
方案二:升级安装的Ruby版本(适合无版本强绑定的场景)
Ruby 2.6.9及更高的2.6系列小版本已经修复了bison兼容性问题,同时也适配了更高版本的openssl库,无需修改环境直接执行以下命令即可正常安装:ruby-install ruby 2.6.10
内容的提问来源于stack exchange,提问作者mirageglobe
相关产品推荐
相关产品推荐

