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

Capistrano 3部署报错:libxml2缺失及Gem原生扩展构建失败

我来帮你搞定这两个Capistrano部署的问题,都是我之前踩过的坑,给你整理了实用的解决方案:

问题1:未找到“libxml2”包的RuntimeError

这个错误是因为你的服务器系统缺少libxml2的开发依赖包——gem在编译原生扩展的时候需要用到它的头文件和库文件。根据你的服务器系统类型,执行对应的安装命令即可:

如果你用的是Ubuntu/Debian系列:

sudo apt-get install libxml2-dev libxslt-dev

如果你用的是CentOS/RHEL系列:

sudo yum install libxml2-devel libxslt-devel

安装完成后,重新运行Capistrano部署命令;如果之前bundle已经缓存了失败的gem,可以登录服务器到应用目录,执行:

bundle install --deployment

之后再重新部署就能解决这个问题了。

问题2:RVM版本警告 + Gem原生扩展构建失败

这是两个关联的小问题,我们分开处理:

第一步:处理RVM版本警告

你有两个选择:

  • 直接禁用警告:如果暂时不想升级RVM,执行服务器提示的命令即可:
    echo rvm_autoupdate_flag=0 >> ~/.rvmrc
    
  • 升级RVM到稳定版:更推荐这个方案,一劳永逸解决警告,还能修复潜在的环境问题:
    rvm get stable
    
    升级完成后记得重新加载RVM配置:source ~/.rvmrc

第二步:修复Gem原生扩展构建失败

你提到的ovirt-engine-sdk这类gem需要编译原生扩展,除了之前的libxml2依赖,还需要基础的编译工具。先在服务器上安装这些必备工具:

Ubuntu/Debian:

sudo apt-get install build-essential

CentOS/RHEL:

sudo yum groupinstall "Development Tools"

安装完工具后,清理之前失败的gem构建缓存,重新安装:

cd /home/deployer/apps/app-staging/shared/bundle/ruby/2.3.0/gems/
rm -rf ovirt-engine-s*  # 删除失败的gem目录
bundle install --deployment

之后再运行Capistrano部署命令,应该就能顺利完成了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:43:02