在Apple M1的macOS Ventura上构建nokogiri-xmlsec-instructure gem遇arm64符号错误求助
解决Apple M1 macOS Ventura上nokogiri-xmlsec-instructure gem构建失败问题
错误核心原因
构建时出现的Undefined symbols for architecture arm64错误,是因为该gem的C扩展代码调用了nokogiri内部的私有符号_noko_xml_document_pin_node和_noko_xml_node_wrap,但这些符号在你当前安装的nokogiri版本中已被移除或改名,导致链接阶段无法找到对应符号。
解决步骤
锁定兼容的nokogiri版本
nokogiri-xmlsec-instructure对nokogiri版本依赖严格,部分版本仅兼容nokogiri < 1.14.0。执行以下命令安装兼容版本并更新依赖:gem install nokogiri -v 1.13.10 bundle update nokogiri --conservative通过Rosetta以x86_64架构编译
临时绕过arm64架构的兼容问题:- 复制「终端.app」并重命名为「终端(x86)」
- 右键新终端,选择「显示简介」,勾选「使用Rosetta打开」
- 打开该终端进入项目目录,重新执行依赖安装:
bundle install
确保xmlsec依赖正确安装
该gem依赖xmlsec1库,先通过Homebrew安装:brew install xmlsec1再指定xmlsec路径重新安装gem:
gem install nokogiri-xmlsec-instructure -- --with-xmlsec-dir=$(brew --prefix xmlsec1)更新gem到最新兼容版本
如果该gem有新版本,可能已修复M1架构适配问题,执行更新:bundle update nokogiri-xmlsec-instructure
内容的提问来源于stack exchange,提问作者Daniel Draper
相关产品推荐
相关产品推荐

