Mac M1 Sonoma系统下Ruby2.3.1无法安装Nokogiri1.7.1 gem求助
解决M1 Pro + macOS Sonoma下安装Nokogiri 1.7.1的问题
错误原因
Nokogiri 1.7.1属于老旧版本,无法适配M1芯片的ARM架构以及macOS Sonoma自带的新版libxml2库,编译时出现的LZMA_OK未定义错误,就是因为新版libxml2的API变更导致旧版Nokogiri代码不兼容。
解决步骤
安装旧版兼容的libxml2
使用Homebrew安装2.9版本的libxml2:brew install libxml2@2.9指定旧版libxml2路径编译安装Nokogiri
设置环境变量并执行安装命令:export PKG_CONFIG_PATH="/opt/homebrew/opt/libxml2@2.9/lib/pkgconfig" gem install nokogiri -v '1.7.1' -- --use-system-libraries --with-xml2-include=/opt/homebrew/opt/libxml2@2.9/include/libxml2 --with-xml2-lib=/opt/homebrew/opt/libxml2@2.9/lib配合Bundle完成安装
如果需要通过bundle install完成依赖安装,先配置Bundle的Nokogiri编译参数:PKG_CONFIG_PATH="/opt/homebrew/opt/libxml2@2.9/lib/pkgconfig" bundle config build.nokogiri "--use-system-libraries --with-xml2-include=/opt/homebrew/opt/libxml2@2.9/include/libxml2 --with-xml2-lib=/opt/homebrew/opt/libxml2@2.9/lib" bundle install
额外提示
若Ruby 2.3.1在M1芯片上运行仍有问题,可尝试打开终端时右键选择「显示简介」,勾选「使用Rosetta打开」后再执行命令,旧版Ruby对ARM架构的原生支持有限,Rosetta可模拟x86环境提升兼容性。
内容的提问来源于stack exchange,提问作者ADK
相关产品推荐
相关产品推荐

