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

在Alpine 3.14安装Ruby 2.5.1出现uninitialized constant Psych (NameError)报错

问题原因

这个报错是Alpine 3.14的默认依赖和Ruby 2.5.1的兼容性问题导致的:

  • Alpine 3.14默认携带的libyaml版本、ruby-build默认拉取的psych 4.x版本,都不再适配2018年发布的Ruby 2.5.1,老版本Ruby的yaml解析模块初始化逻辑和新psych不兼容,就会抛出uninitialized constant Psych (NameError)错误
  • 你之前用的Alpine 3.4自带的依赖版本和Ruby 2.5.1发布时的生态匹配,所以可以正常构建
解决方案

按照优先级推荐以下修复方式:

方案1:编译时指定兼容的psych版本(改动最小)

在你的Dockerfile中调整依赖安装和rbenv执行逻辑:

  1. 先安装完整的编译依赖:
RUN apk add --no-cache \
    build-base \
    libyaml-dev \
    openssl-dev \
    readline-dev \
    zlib-dev \
    linux-headers
  1. 执行rbenv install时添加环境变量锁定psych版本:
RUN RUBY_CONFIGURE_OPTS="--with-psych-version=3.3.2" rbenv install $RUBY_VERSION

psych 3.3.2是3.x分支的最后一个稳定版本,完美适配Ruby 2.5.1

方案2:锁定Alpine版本(兼容性最好)

如果对Alpine版本没有强需求,继续使用Alpine 3.4/3.5作为基础镜像,不需要调整任何Ruby构建逻辑即可正常运行。

方案3:手动修改ruby-build构建脚本(仅当上述方案无效时使用)

找到ruby-build对应Ruby 2.5.1的构建定义文件,将里面的psych依赖版本手动改为3.3.2后再执行安装。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 17:45:01