You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

更新Nokogiri gem时遇原生扩展构建错误,求解决方法

解决Nokogiri 1.8.2更新失败的问题

你在更新Nokogiri时碰到了两个问题:Bundler的平台依赖警告,以及核心的原生扩展编译失败。我来一步步帮你搞定:

一、消除Bundler平台依赖警告

你看到的关于wdm (~> 0.1.0)和tzinfo-data (>= 0)的警告,是因为这两个gem仅针对Windows或Java平台,而当前Bundler是为Ruby平台安装依赖。如果想要彻底消除这些警告,直接执行提示的命令即可:

bundle lock --add-platform x86-mswin32 x86-mingw32 java

要是你的项目不需要支持这些平台,也可以选择忽略这些警告——它们不会影响核心功能运行。

二、解决Nokogiri原生扩展编译失败问题

这是导致更新失败的关键原因,错误提示明确说了「编译器无法生成可执行文件,需要先安装开发工具」。结合你的环境(macOS + rbenv + Ruby 2.2.2),按以下步骤操作:

  1. 安装Xcode命令行工具
    macOS下编译原生扩展必须依赖这套工具,执行命令安装:
xcode-select --install

如果已经安装过,系统会提示你无需操作。

  1. 安装Nokogiri依赖的系统库
    Nokogiri需要libxml2和libxslt这两个基础库,用Homebrew安装:
brew install libxml2 libxslt
  1. 手动指定库路径安装Nokogiri
    为了确保gem能正确找到依赖库,单独安装指定版本的Nokogiri:
gem install nokogiri -v '1.8.2' -- --use-system-libraries --with-xml2-include=$(brew --prefix libxml2)/include/libxml2 --with-xslt-include=$(brew --prefix libxslt)/include
  1. 重新执行bundle安装
    等Nokogiri单独安装成功后,回到项目目录运行:
bundle install

补充:查看详细编译日志

如果还是失败,可以查看mkmf.log文件获取更具体的错误信息:

cat /usr/local/var/rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/extensions/x86_64-darwin-13/2.2.0-static/nokogiri-1.8.2/mkmf.log

根据日志里的缺失项,再针对性解决问题。

内容的提问来源于stack exchange,提问作者Mathieu THOMASSET

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:32:22