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

Ubuntu环境下安装nokogiri 1.8.2失败及Gem::Command报错求助

问题描述
NameError: uninitialized constant Gem::Command

      Gem::Command.build_args
         ^^^^^^^^^
安装nokogiri (1.8.2)时出错,Bundler无法继续。
请确保`gem install nokogiri -v '1.8.2'`安装成功后再执行bundling。

已尝试操作

  • gem install nokogiri -v '1.8.2'
  • sudo apt-get install build-essential patch ruby-dev zlib1g-dev liblzma-dev
  • apt-get install openssl ruby-openssl libssl-dev
  • gem install nokogiri -- --use-system-libraries
  • gem install nokogiri -- --with-xml2-config=/path/to/xml2-config
  • gem install nokogiri -- --with-xslt-config=/path/to/xslt-config
  • bundle config build.nokogiri --use-system-libraries(执行后出现上述新报错,此前为其他安装错误,本质均为nokogiri安装失败)

当前环境

  • 操作系统:Ubuntu 22.04.1 LTS
  • Ruby版本:ruby 3.1.3p185 (2022-11-24 revision 1a6b16756e) [x86_64-linux](RVM安装)
  • Rails版本:Rails 7.0.4
解决方案

核心原因

nokogiri 1.8.2是2018年的旧版本,不兼容Ruby 3.1.x,Gem::Command报错正是因为旧版本nokogiri调用了RubyGems中已被移除或重构的API。

步骤1:降级Ruby到兼容版本

nokogiri 1.8.2的兼容Ruby版本范围是Ruby 2.2至Ruby 2.6,用RVM安装对应稳定版:

# 安装Ruby 2.6.9(最后一个2.6系列稳定版)
rvm install 2.6.9
# 切换到该版本
rvm use 2.6.9
# 设置为项目默认版本
rvm use 2.6.9 --default

步骤2:清理残留配置并重新安装

  1. 清除之前的nokogiri编译配置和残留安装包:
bundle config unset build.nokogiri
gem uninstall nokogiri -x
  1. 重新安装系统依赖:
sudo apt-get update
sudo apt-get install build-essential patch ruby-dev zlib1g-dev liblzma-dev libxml2-dev libxslt1-dev
  1. 安装nokogiri 1.8.2:
gem install nokogiri -v '1.8.2' -- --use-system-libraries
  1. 执行bundle安装:
bundle install

替代方案:升级nokogiri版本(若项目允许)

如果项目代码兼容更高版本nokogiri,建议将Gemfile中的nokogiri版本改为~> 1.13.0或更高(该版本支持Ruby 3.1),然后执行:

bundle update nokogiri

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 13:25:15