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

Rails 7.1 + Ubuntu 22.04环境下nokogiri依赖安装失败问题

问题

环境:Rails 7.1、Ubuntu 22.04
我的Gemfile包含:

gem 'google-apis-drive_v3', '~> 0.50.0'

执行命令:

bundle install

出现如下报错:

使用 google-apis-drive_v3 0.50.0
正在安装 nokogiri 1.18.1,包含原生扩展
Gem::Ext::BuildError: 错误:无法构建 gem 原生扩展。

    当前目录:/home/deploy/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/gems/nokogiri-1.18.1/ext/nokogiri
/home/deploy/.rbenv/versions/3.1.0/bin/ruby -I /home/deploy/.rbenv/versions/3.1.0/lib/ruby/3.1.0 -r ./siteconf20250103-88403-r12ywo.rb extconf.rb
检查 -std=c99 是否可作为 CFLAGS... 是
检查 -Wno-declaration-after-statement 是否可作为 CFLAGS... 是
检查 -O2 是否可作为 CFLAGS... 是
检查 -g 是否可作为 CFLAGS... 是
检查 -Winline 是否可作为 CFLAGS... 是
检查 -Wmissing-noreturn 是否可作为 CFLAGS... 是
检查 -Wconversion 是否可作为 CFLAGS... 否
使用打包库构建 nokogiri。
已启用静态链接。
已禁用交叉构建。
*** extconf.rb 执行失败 ***
无法创建 Makefile,可能是缺少必要的库和/或头文件。查看 mkmf.log 文件获取更多详细信息。你可能需要配置选项。

提供的配置选项:
    --with-opt-dir
    --without-opt-dir
    --with-opt-include
    --without-opt-include=${opt-dir}/include
    --with-opt-lib
    --without-opt-lib=${opt-dir}/lib
    --with-make-prog
    --without-make-prog
    --srcdir=.
    --curdir
    --ruby=/home/deploy/.rbenv/versions/3.1.0/bin/$(RUBY_BASE_NAME)
    --help
    --clean
    --prevent-strip
    --enable-system-libraries
    --disable-system-libraries
    --use-system-libraries
    --enable-system-libraries
    --disable-system-libraries
    --use-system-libraries
    --enable-static
    --disable-static
    --enable-cross-build
    --disable-cross-build
    --enable-cross-build
    --disable-cross-build
/home/deploy/.rbenv/versions/3.1.0/lib/ruby/3.1.0/psych.rb:455:in `parse_stream': 未定义方法 `parse' 用于 #<Psych::Parser:0x00007bcdae444268 @handler=#<Psych::Handlers::DocumentStream:0x00007bcdae4443f8 @stack=[], @last=nil, @root=nil, @start_line=nil,
@start_column=nil, @end_line=nil, @end_column=nil, @block=#<Proc:0x00007bcdae4442b8 /home/deploy/.rbenv/versions/3.1.0/lib/ruby/3.1.0/psych.rb:399>>, @external_encoding=0> (NoMethodError)

      parser.parse yaml, filename
            ^^^^^^
    来自 /home/deploy/.rbenv/versions/3.1.0/lib/ruby/3.1.0/psych.rb:399:in `parse'
    来自 /home/deploy/.rbenv/versions/3.1.0/lib/ruby/3.1.0/psych.rb:324:in `safe_load'
    来自 /home/deploy/.rbenv/versions/3.1.0/lib/ruby/3.1.0/psych.rb:370:in `load'
    来自 /home/deploy/.rbenv/versions/3.1.0/lib/ruby/3.1.0/psych.rb:671:in `block in load_file'
    来自 /home/deploy/.rbenv/versions/3.1.0/lib/ruby/3.1.0/psych.rb:670:in `open'
    来自 /home/deploy/.rbenv/versions/3.1.0/lib/ruby/3.1.0/psych.rb:670:in `load_file'
    来自 extconf.rb:772:in `<main>'

要查看扩展编译失败的原因,请查看以下路径的 mkmf.log 文件:

  /home/deploy/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/extensions/x86_64-linux/3.1.0/nokogiri-1.18.1/mkmf.log

extconf 执行失败,退出码 1

Gem 文件将保留在 /home/deploy/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/gems/nokogiri-1.18.1 以供检查。
结果已记录到 /home/deploy/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/extensions/x86_64-linux/3.1.0/nokogiri-1.18.1/gem_make.out

  /home/deploy/.rbenv/versions/3.1.0/lib/ruby/3.1.0/rubygems/ext/builder.rb:95:in `run'
  /home/deploy/.rbenv/versions/3.1.0/lib/ruby/3.1.0/rubygems/ext/ext_conf_builder.rb:47:in `block in build'
  /home/deploy/.rbenv/versions/3.1.0/lib/ruby/3.1.0/tempfile.rb:317:in `open'
  /home/deploy/.rbenv/versions/3.1.0/lib/ruby/3.1.0/rubygems/ext/ext_conf_builder.rb:26:in `build'
  /home/deploy/.rbenv/versions/3.1.0/lib/ruby/3.1.0/rubygems/ext/builder.rb:161:in `build_extension'
  /home/deploy/.rbenv/versions/3.1.0/lib/ruby/3.1.0/rubygems/ext/builder.rb:195:in `block in build_extensions'
  /home/deploy/.rbenv/versions/3.1.0/lib/ruby/3.1.0/rubygems/ext/builder.rb:192:in `each'
  /home/deploy/.rbenv/versions/3.1.0/lib/ruby/3.1.0/rubygems/ext/builder.rb:192:in `build_extensions'
  /home/deploy/.rbenv/versions/3.1.0/lib/ruby/3.1.0/rubygems/installer.rb:847:in `build_extensions'
  /home/deploy/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/gems/bundler-2.3.16/lib/bundler/rubygems_gem_installer.rb:71:in `build_extensions'
  /home/deploy/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/gems/bundler-2.3.16/lib/bundler/rubygems_gem_installer.rb:28:in `install'
  /home/deploy/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/gems/bundler-2.3.16/lib/bundler/source/rubygems.rb:207:in `install'
  /home/deploy/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/gems/bundler-2.3.16/lib/bundler/installer/gem_installer.rb:54:in `install'
  /home/deploy/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/gems/bundler-2.3.16/lib/bundler/installer/gem_installer.rb:16:in `install_from_spec'
  /home/deploy/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/gems/bundler-2.3.16/lib/bundler/installer/parallel_installer.rb:186:in `do_install'
  /home/deploy/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/gems/bundler-2.3.16/lib/bundler/installer/parallel_installer.rb:177:in `block in worker_pool'
  /home/deploy/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/gems/bundler-2.3.16/lib/bundler/worker.rb:62:in `apply_func'
  /home/deploy/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/gems/bundler-2.3.16/lib/bundler/worker.rb:57:in `block in process_queue'
  /home/deploy/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/gems/bundler-2.3.16/lib/bundler/worker.rb:54:in `loop'
  /home/deploy/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/gems/bundler-2.3.16/lib/bundler/worker.rb:54:in `process_queue'
  /home/deploy/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/gems/bundler-2.3.16/lib/bundler/worker.rb:91:in `block (2 levels) in create_threads'

安装 nokogiri (1.18.1) 时发生错误,Bundler 无法继续执行。

在 Gemfile 中:
  rails 被解析为 7.1.0,它依赖于
    actioncable 被解析为 7.1.0,它依赖于
      actionpack 被解析为 7.1.0,它依赖于
        actionview 被解析为 7.1.0,它依赖于
          rails-dom-testing 被解析为 2.2.0,它依赖于
            nokogiri

报错核心:Psych::Parser 不存在 parse 方法,导致 nokogiri 原生扩展编译失败,Bundler 无法继续完成安装。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 05:45:55