centos yum update更新异常终止修复
缘起
有一个限制的腾讯云的vps,放在那做了个简单的ip监测,cpu占用很高。
前几天centos 7.7 release了,yun update一下几百个包需要更新,由于在高铁上连上去yum update的,这下问题来了o( ̄︶ ̄)o
update了一半,连接断开了,再次连上去yum update就一直报重复包以及依赖解决不了的问题。
错误:软件包:glibc-common-2.17-260.el7_6.6.x86_64 (@updates) 需要:glibc = 2.17-260.el7_6.6 正在删除: glibc-2.17-260.el7_6.6.i686 (@updates) glibc = 2.17-260.el7_6.6 更新,由: glibc-2.17-292.el7.i686 (os) glibc = 2.17-292.el7 您可以尝试添加 --skip-broken 选项来解决该问题** 发现 43 个已存在的 RPM 数据库问题, 'yum check' 输出如下: 1:NetworkManager-libnm-1.18.0-5.el7_7.1.x86_64 是 1:NetworkManager-libnm-1.12.0-10.el7_6.x86_64 的副本 audit-libs-2.8.5-4.el7.x86_64 是 audit-libs-2.8.4-4.el7.x86_64 的副本 32:bind-libs-9.11.4-9.P2.el7.x86_64 是 32:bind-libs-9.9.4-74.el7_6.2.x86_64 的副本 32:bind-license-9.11.4-9.P2.el7.noarch 是 32:bind-license-9.9.4-74.el7_6.2.noarch 的副本 cryptsetup-libs-2.0.3-5.el7.x86_64 是 cryptsetup-libs-2.0.3-3.el7.x86_64 的副本 dracut-033-564.el7.x86_64 是 dracut-033-554.el7.x86_64 的副本 e2fsprogs-libs-1.42.9-16.el7.x86_64 是 e2fsprogs-libs-1.42.9-13.el7.x86_64 的副本 elfutils-libelf-0.176-2.el7.x86_64 是 elfutils-libelf-0.172-2.el7.i686 的副本 elfutils-libs-0.176-2.el7.x86_64 是 elfutils-libs-0.172-2.el7.i686 的副本 glib2-2.56.1-5.el7.x86_64 是 glib2-2.56.1-4.el7_6.i686 的副本 glibc-2.17-292.el7.x86_64 是 glibc-2.17-260.el7_6.6.i686 的副本 glibc-common-2.17-292.el7.x86_64 是 glibc-common-2.17-260.el7_6.6.x86_64 的副本 glibc-devel-2.17-292.el7.x86_64 有缺少的需求 glibc-headers = ('0', '2.17', '292.el7')1:grub2-common-2.02-0.80.el7.centos.noarch 是 1:grub2-common-2.02-0.76.el7.centos.1.noarch 的副本 1:grub2-pc-2.02-0.80.el7.centos.x86_64 有缺少的需求 grub2-tools = ('1', '2.02', '0.80.el7.centos')1:grub2-tools-extra-2.02-0.80.el7.centos.x86_64 有缺少的需求 grub2-tools = ('1', '2.02', '0.80.el7.centos')1:grub2-tools-minimal-2.02-0.80.el7.centos.x86_64 是 1:grub2-tools-minimal-2.02-0.76.el7.centos.1.x86_64 的副本 httpd-tools-2.4.6-90.el7.centos.x86_64 是 httpd-tools-2.4.6-89.el7.centos.1.x86_64 的副本 kernel-headers-3.10.0-1062.1.1.el7.x86_64 是 kernel-headers-3.10.0-957.27.2.el7.x86_64 的副本 kernel-tools-libs-3.10.0-1062.1.1.el7.x86_64 是 kernel-tools-libs-3.10.0-957.27.2.el7.x86_64 的副本 langtable-0.0.31-4.el7.noarch 是 langtable-0.0.31-3.el7.noarch 的副本 langtable-data-0.0.31-4.el7.noarch 是 langtable-data-0.0.31-3.el7.noarch 的副本 libblkid-2.23.2-61.el7.x86_64 是 libblkid-2.23.2-59.el7_6.1.i686 的副本
折腾过程
采用yum-util清理重复包
网上查了一波后,发现可以使用yum的一个工具清理重复包,主要的步骤如下:
# 安装工具 yum install yum-utils yum clean all # 清理重复包 yum-complete-transaction --cleanup-only package-cleanup --cleandupes
一般情况下,通过上面的命令,就可以解决冲突问题了,但是在我这依然是不行的,glib和glibc-common这两个包依然是冲突的,怎么都解决不了。
采用手动下载安装对应软件包版本解决
1.下载glibc 260版本
在http://pkgs.org/download/libc.so.6 下载对应的centos系统的包,注意架构选择
同时下载他的依赖(libfreebl3.so)
http://pkgs.org/centos-6-rhel-6/centos-rhel-i386/nss-softokn-freebl-3.12.9-11.el6.i686.rpm.html 下载对应的centos系统的包,注意架构选择
2.安装 rpm 包 并查看安装后的版本
rpm -ivh nss-softokn-freebl-3.44.0-5.el7.i686.rpm glibc-2.17-292.el7.i686.rpm --force
注意:需要增加--force
参数,否则安装不成功
经过上面的折腾,再次yum update
已经不会报错了,问题顺利解决。
总结
前几天刚好看到个文章,讲apt、dnf包管理是比yum好的,尤其是冲突、依赖解决方面,现在看来确实是yum不太好用了。
好在未来centos的包管理也是向dnf迁移了好像。
参考文档
https://blog.csdn.net/u012908433/article/details/80254343
https://blog.csdn.net/qq_38695182/article/details/85295105
https://my.oschina.net/adailinux/blog/1647539
发表评论