当我尝试更新 CentOS 系统上的软件包时,我可能内存不足。现在,当我尝试运行更新时,它卡住了:
Error: Package: glibc-devel-2.17-157.el7_3.5.x86_64 (@updates)
Requires: glibc-headers = 2.17-157.el7_3.5
Removing: glibc-headers-2.17-157.el7_3.5.x86_64 (@updates)
glibc-headers = 2.17-157.el7_3.5
Updated By: glibc-headers-2.17-196.el7.x86_64 (base)
glibc-headers = 2.17-196.el7
You could try using --skip-broken to work around the problem
** Found 75 pre-existing rpmdb problem(s), 'yum check' output follows:
audit-2.6.5-3.el7_3.1.x86_64 has missing requires of audit-libs(x86-64) = ('0', '2.6.5', '3.el7_3.1')
看起来有很多重复的软件包。我尝试使用 恢复更新,yum history undo 48
但它出现了一大堆消息“降级失败:这个或那个软件包.x86-64”。所以这没有帮助。我还尝试了:
package-cleanup --cleandupes
它要求删除 50 个包,但结果是:
ERROR with transaction check vs depsolve:
systemd = 219-42.el7_4.1 is needed by (installed) systemd-sysv-219-42.el7_4.1.x86_64
systemd = 219-42.el7_4.1 is needed by (installed) systemd-sysv-219-42.el7_4.1.x86_64
openssh = 7.4p1-12.el7_4 is needed by (installed) openssh-clients-7.4p1-12.el7_4.x86_64
openssh = 7.4p1-12.el7_4 is needed by (installed) openssh-clients-7.4p1-12.el7_4.x86_64
iptables = 1.4.21-18.0.1.el7.centos is needed by (installed) iptables-services-1.4.21-18.0.1.el7.centos.x86_64
Complete!
(1, [])
我不知道如何解决这个问题。最重要的是停机时间有限,我可以定期再次安装更新(因为它正在用作服务器)。我希望有人可以建议一些步骤来解决这些依赖性问题。
uname -a
Linux host.example.com 3.10.0-123.8.1.el7.x86_64 #1 SMP Mon Sep 22 19:06:58 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
答案1
可能有些软件包已经安装,但是旧软件包尚未删除,并且“事务”尚未完成,因此您处于一种奇怪的状态,其中软件包 1 太旧而无法支持软件包 2。
我也遇到过类似的问题,但只发生在一个软件包上。它只是告诉我systemd conflicts with dracut-033-502.el7
(yum check
还报告了许多重复的软件包)。
为了解决这个问题,我检查了 dracut 的版本:
rpm -vqa | grep dracut
...然后通过删除最高版本降级到以前的版本。这样就摆脱了冲突的软件包。从那时起:
package-cleanup --dupes
...去掉重复项,最后得到:
yum update
...更新所有内容,并纠正所有错误。
答案2
我遇到了类似的问题,重复的包不起作用sudo package-cleanup --cleandupes
。相反,我使用sudo package-cleanup --cleandupes --removenewestdupes
aftersudo yum upgrade
可以正常工作。