使用Kamal/Docker部署Rails 8时遇bundler psych gem安装错误
解决Kamal部署Rails 8时psych 5.2.6安装失败问题
针对你用Kamal部署Rails 8应用时遇到的psych 5.2.6安装失败问题,以下是几个实测有效的解决方向:
1. 补全系统依赖库
psych gem依赖系统级的libyaml库,生产服务器大概率缺少这个依赖,根据系统类型执行安装命令:
- Debian/Ubuntu:
apt-get install libyaml-dev - RHEL/CentOS:
yum install libyaml-devel - 本地macOS测试:
brew install libyaml
2. 锁定兼容的psych版本
Ruby 3.4.7和psych 5.2.6存在兼容性适配问题,直接在Gemfile中指定稳定兼容版本:
gem 'psych', '~> 5.1.2'
执行bundle update psych更新依赖后,再重新执行Kamal部署命令。
3. 检查Ruby编译配置
如果服务器上的Ruby 3.4.7是手动编译的,可能编译时未启用yaml支持。重新编译Ruby时添加对应参数:
./configure --enable-yaml make && make install
4. 清理Bundler缓存
部署环境的Bundler缓存可能损坏,清理后重新安装依赖:
bundle clean --force bundle install
5. 调整Docker镜像依赖
如果Kamal使用自定义Docker镜像,需要在Dockerfile中提前安装libyaml,确保gem安装时能找到依赖:
# 在RUN bundle install之前添加 RUN apt-get update && apt-get install -y --no-install-recommends libyaml-dev
内容的提问来源于stack exchange,提问作者willyab
相关产品推荐
相关产品推荐

