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

CentOS 7升级JFrog Artifactory至7.77.x遇依赖错误求助

解决CentOS 7升级JFrog Artifactory 7.77时的libstdc++.so.6(CXXABI_1.3.9)依赖问题

这个问题在CentOS 7环境升级高版本Artifactory时很常见——CentOS 7默认搭载的gcc 4.8.5对应的libstdc++库并不包含CXXABI_1.3.9,而该ABI是gcc 5.1及以上版本才引入的,恰好Artifactory 7.77版本依赖它。

以下是可行的解决方法:

方法1:通过Software Collections(SCL)安装高版本libstdc++(推荐)

SCL可以在不替换系统默认gcc/libstdc++的前提下,提供更高版本的编译工具链:

  • 安装CentOS SCL仓库:

    yum install centos-release-scl
    
  • 安装devtoolset-7(或更高版本,如devtoolset-9,均包含所需的ABI):

    yum install devtoolset-7
    
  • 临时启用devtoolset环境验证:

    scl enable devtoolset-7 bash
    strings /usr/lib64/libstdc++.so.6 | grep CXXABI
    

    输出中应能看到CXXABI_1.3.9。

  • 让Artifactory启动时自动加载该环境:

    • 如果用systemd管理服务,编辑/usr/lib/systemd/system/artifactory.service,修改ExecStart行:
      ExecStart=/usr/bin/scl enable devtoolset-7 -- /opt/jfrog/artifactory/bin/artifactory.sh start
      
    • 重新加载systemd配置并重启服务:
      systemctl daemon-reload
      systemctl restart artifactory
      

方法2:手动替换Artifactory专属的libstdc++库(适合不想全局修改环境的场景)

从devtoolset中复制对应库到Artifactory的lib目录,让程序优先加载该库:

  • 复制库文件:
    cp /opt/rh/devtoolset-7/root/usr/lib64/libstdc++.so.6 /opt/jfrog/artifactory/lib/
    
  • 修改Artifactory启动脚本,添加LD_LIBRARY_PATH指向自身lib目录:
    在启动脚本开头添加:
    export LD_LIBRARY_PATH=/opt/jfrog/artifactory/lib:$LD_LIBRARY_PATH
    

注意事项

  • 升级前建议核对JFrog官方支持矩阵,确认7.77版本是否仍兼容CentOS 7;
  • 不建议直接替换系统默认的/usr/lib64/libstdc++.so.6,可能导致其他依赖旧版本ABI的系统程序崩溃。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 01:53:29