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

新推送的ruby:2.7.4-alpine3.13装rubygems报cannot find -lucontext如何解决

问题原因

  • 最新推送的ruby:2.7.4-alpine3.13镜像更新了内置的musl libc版本,ucontext相关的实现已经合并到主libc库中,不再提供单独的libucontext.so库文件
  • byebug、racc等带原生扩展的gem的构建配置中仍保留了-lucontext的链接参数,链接阶段找不到对应库就会抛出报错

解决方案

方案1:创建libucontext软链接(最快适配,适合当前镜像版本)

在安装构建依赖、安装gem之前,执行命令创建软链接,将libc.so映射为链接器查找的libucontext.so即可:

ln -s /lib/libc.so /usr/lib/libucontext.so

完整复现流程修复后如下:

docker pull ruby:2.7.4-alpine3.13
docker run --rm -it --entrypoint /bin/sh ruby@sha256:89b589e1b6b334ed7af93da3d4c75dca5beef8f1a844594c3a865bc6c4f5b96e
apk --no-cache add "build-base>=0.5"
# 新增软链接命令
ln -s /lib/libc.so /usr/lib/libucontext.so
gem install byebug

方案2:使用验证过的旧版本镜像

无需修改构建流程,直接使用你确认正常的旧版本digest的镜像即可:

ruby@sha256:ace3785b1a5eb95d08285f8741e3dc1c481c479a271d54e37b8e45a7106d86c6

方案3:适配gem构建配置(长期维护场景)

如果是自行维护相关gem,可以修改extconf.rb的链接逻辑,检测到musl运行环境时自动移除-lucontext的链接参数,从根源兼容新版Alpine系统。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 00:15:03