在错误更新之后,我该怎么做才能安全地修复我的 yum 软件包?

在错误更新之后,我该怎么做才能安全地修复我的 yum 软件包?

我在 EC2 微型机上运行 amazon linux。最近我运行它,sudo yum update --security希望它能修补 Heartbleed。不幸的是,我在更新过程中内存不足,一些软件包没有成功修补。我尝试通过重新启动然后运行来解决这个问题,sudo yum cleansudo yum update下面的 pastebin 所示,但依赖性问题仍然存在。

我怎样才能修复此问题而不造成进一步破坏?

以下是 yum 输出的片段:

Error: initscripts conflicts with util-linux-ng-2.17.2-13.17.amzn1.i686
Error: initscripts conflicts with util-linux-ng-2.17.2-13.17.amzn1.x86_64
Error: Package: glibc-devel-2.12-1.107.43.amzn1.x86_64 (@amzn-main)
           Requires: glibc-headers = 2.12-1.107.43.amzn1
           Removing: glibc-headers-2.12-1.107.43.amzn1.x86_64 (@amzn-main)
               glibc-headers = 2.12-1.107.43.amzn1
           Updated By: glibc-headers-2.17-36.81.amzn1.x86_64 (amzn-updates)
               glibc-headers = 2.17-36.81.amzn1
           Available: glibc-headers-2.17-36.80.amzn1.x86_64 (amzn-main)
               glibc-headers = 2.17-36.80.amzn1

这是完整的控制台日志:http://sebsauvage.net/paste/?e0f7235450f97bae#qq6QKe/Co+jR2T4FXfGo4w2H8aw7xZkE4z+iZXdMpQ8=

答案1

重新安装失败的 RPMS

我曾见过在 RPM 事务期间发生故障时发生此问题。RPM 数据库可能与系统不同步。因此,系统实际拥有的内容与 RPM 认为已安装的内容有所不同。

提示:在执行任何操作之前,请先创建一个 AMI 映像,以便在完全失败时可以轻松恢复。

您可以使用它rpm -qa --last来获取最近安装的 RPM 列表。

然后重建 rpm 数据库rpm --rebuilddb

然后您可以使用它yum reinstall来重新安装失败事务中的任何包。

这也应该能发现任何依赖问题并尝试纠正它们。

在某些情况下,我必须通过下载 rpmyum download并使用rpm进行安装来手动解决冲突。

如果您必须恢复到手动安装,rpm请保留详细记录,尤其是涉及 glibc 时。

推荐

我强烈建议您以一种可以轻松启动新的 EC2 实例而不必担心此类问题的方式在 AWS 上部署操作。如果您使用专用 EBS 卷来存储数据并将配置文件存储在其他地方,则通常可以启动新实例并比调试此类 RPM 问题更快地恢复运行。当我们遇到此类 EC2 问题时,我们通常会从自定义 AMI 部署新实例,重新映射 IP 并完成操作。如果需要,我们可以对故障/损坏的系统进行根本原因分析,而不会影响生产操作。

相关内容