CentOS7更新glibc时libcxx/libcxxabi依赖/usr/sbin/ldconfig报错
问题描述
CentOS7系统执行系统更新时遇到libc相关依赖报错,检索公开技术资料未找到对应解决方案,多轮排查后问题仍存在。
报错核心表现:系统将glibc从2.17-325.el7_9版本升级至2.17-326.el7_9版本时,已安装的libcxx-11.0.1-1.el7.x86_64、libcxxabi-11.0.1-1.el7.x86_64包所需的/usr/sbin/ldconfig依赖无法被识别,导致yum更新流程中断。
已尝试操作
- 执行
yum install glibc*安装所有glibc相关软件包 - 安装yum-utils工具集,执行
yum update yum*更新所有yum相关组件,通过package-cleanup --dupes查询系统内重复安装的软件包、执行package-cleanup --cleandupes清理重复包 - 删除
/etc/ld.so.cache动态链接库缓存文件后,执行ldconfig命令重建缓存
报错完整输出
[root@test etc]# yum update Loaded plugins: langpacks, rhnplugin This system is receiving updates from RHN Classic or Red Hat Satellite. Resolving Dependencies --> Running transaction check ---> Package glibc.x86_64 0:2.17-325.el7_9 will be updated ---> Package glibc.x86_64 0:2.17-326.el7_9 will be an update ---> Package glibc-common.x86_64 0:2.17-325.el7_9 will be updated ---> Package glibc-common.x86_64 0:2.17-326.el7_9 will be an update ---> Package glibc-devel.x86_64 0:2.17-325.el7_9 will be updated ---> Package glibc-devel.x86_64 0:2.17-326.el7_9 will be an update ---> Package glibc-headers.x86_64 0:2.17-325.el7_9 will be updated ---> Package glibc-headers.x86_64 0:2.17-326.el7_9 will be an update ---> Package kernel-headers.x86_64 0:3.10.0-1160.62.1.el7 will be updated ---> Package kernel-headers.x86_64 0:3.10.0-1160.66.1.el7 will be an update --> Processing Dependency: /usr/sbin/ldconfig for package: libcxx-11.0.1-1.el7.x86_64 --> Processing Dependency: /usr/sbin/ldconfig for package: libcxxabi-11.0.1-1.el7.x86_64 --> Finished Dependency Resolution Error: Package: libcxx-11.0.1-1.el7.x86_64 (installed) Requires: /usr/sbin/ldconfig Removing: glibc-2.17-325.el7_9.x86_64 (@spacewalk_centos7) Not found Updated By: glibc-2.17-326.el7_9.x86_64 (spacewalk_centos7) Not found Error: Package: libcxxabi-11.0.1-1.el7.x86_64 (installed) Requires: /usr/sbin/ldconfig Removing: glibc-2.17-325.el7_9.x86_64 (@spacewalk_centos7) Not found Updated By: glibc-2.17-326.el7_9.x86_64 (spacewalk_centos7) Not found [root@test etc]# rpm -qa | grep glibc glibc-common-2.17-325.el7_9.x86_64 glibc-2.17-325.el7_9.x86_64 glibc-devel-2.17-325.el7_9.x86_64 glibc-headers-2.17-325.el7_9.x86_64
故障原因
这个问题不是系统中真的缺失/usr/sbin/ldconfig文件,本质是两层元数据异常:
- 当前对接的Spacewalk自建源里,glibc 2.17-326.el7_9版本的包元数据缺了
Provides: /usr/sbin/ldconfig字段,yum做依赖校验的时候,判定升级后的glibc包不提供ldconfig文件 - 第三方源安装的libcxx、libcxxabi 11.0.1版本RPM包,依赖标记写死了绝对路径
/usr/sbin/ldconfig,没有做通用兼容,识别不到新旧版本glibc实际都自带这个文件
修复操作
按顺序执行以下步骤即可解决问题,操作不会删除系统实际文件,生产环境操作前建议先打系统快照:
- 先验证ldconfig文件实际存在,执行命令:
正常会输出ldconfig的版本信息,证明文件本身无损坏、无缺失。/usr/sbin/ldconfig -V - 清理本地yum缓存,排除旧元数据干扰:
yum clean all && rm -rf /var/cache/yum/* - 清理缓存后重新执行
yum update测试,如果还是报相同错误,执行以下命令只删除RPM数据库中libcxx、libcxxabi的记录(不会删除系统上的实际程序文件):rpm -e --justdb libcxx-11.0.1-1.el7.x86_64 libcxxabi-11.0.1-1.el7.x86_64 --nodeps - 重新安装libcxx、libcxxabi包,让RPM重新识别当前系统的依赖关系:
yum install -y libcxx-11.0.1-1.el7 libcxxabi-11.0.1-1.el7 - 最后重新执行系统更新即可正常完成流程:
yum update -y
注意:操作过程中不要直接删除glibc相关包,不要不带
--justdb参数强制卸载libcxx/libcxxabi,避免导致系统动态链接库异常。
内容的提问来源于stack exchange,提问作者VoteDent
相关产品推荐
相关产品推荐

