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

Ruby 2.4.1安装Rails 5.0.1.rc1时nokogiri版本兼容问题求助

安装Rails 5.0.1.rc1(Ruby 2.4.1)时的nokogiri版本兼容问题

问题背景

我在最新版Linux Mint Cinnamon上用RVM成功安装了Ruby 2.4.1.p111,要安装一个2017年的Rails项目要求的Rails 5.0.1.rc1,操作过程中遇到nokogiri版本冲突:

  • 先执行sudo apt-get install nodejs
  • 全局gemset执行gem install -V rails --version=5.0.1.rc1,遇到racc不兼容,通过gem install racc -v 1.5.2解决
  • 再次安装Rails时,提示nokogiri需要Ruby>=2.7,建议安装1.10.10,但安装后仍报错,说找不到兼容的nokogiri ~>1.14版本
  • 创建专属gemset rvm gemset create rails501并切换后安装,问题依旧

当前2.4.1@rails501 gemset的本地gem列表:

gem query --local

*** LOCAL GEMS ***

activesupport (5.1.0)
bigdecimal (default: 1.3.0)
bundler (default: 1.17.3)
bundler-unload (1.0.2)
concurrent-ruby (1.2.2)
did_you_mean (1.1.0)
executable-hooks (1.6.1)
gem-wrappers (1.4.0)
i18n (0.9.5)
io-console (default: 0.4.6)
json (default: 2.0.2)
mini_portile2 (2.1.0)
minitest (5.10.1)
net-telnet (0.1.1)
nokogiri (1.7.2)
openssl (default: 2.0.3)
power_assert (0.4.1)
psych (default: 2.2.2)
racc (1.5.2)
rake (12.0.0)
rdoc (default: 5.0.0)
rubygems-bundler (1.4.5)
rvm (1.11.3.9)
test-unit (3.2.3)
thread_safe (0.3.6)
tzinfo (1.2.11)
xmlrpc (0.2.1)

解决方案

核心原因

nokogiri从1.11.x开始要求Ruby>=2.5,1.14.x开始要求Ruby>=2.7,而Rails 5.0.1.rc1的依赖声明允许较高版本的nokogiri,导致rubygems尝试拉取不兼容的新版本。需要手动指定兼容Ruby 2.4.1的nokogiri版本。

操作步骤

  1. 切换到目标gemset:
rvm use 2.4.1@rails501
  1. 卸载所有已安装的nokogiri版本:
gem uninstall nokogiri -a
  1. 安装兼容Ruby 2.4.1的最高nokogiri版本(1.10.10):
gem install nokogiri -v 1.10.10
  1. 再次安装Rails 5.0.1.rc1,此时rubygems会使用已安装的兼容版本:
gem install rails -v 5.0.1.rc1

备选方案(更稳妥)

直接使用项目的Gemfile和Gemfile.lock来安装依赖:

  1. 克隆项目后进入目录
  2. 切换到目标gemset:rvm use 2.4.1@rails501
  3. 执行bundle安装:
bundle install

这样会严格按照项目锁定的版本安装所有依赖,避免版本冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 17:07:41