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
- 如果用systemd管理服务,编辑
方法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
相关产品推荐
相关产品推荐

