我在 EC2 微型机上运行 amazon linux。最近我运行它,sudo yum update --security
希望它能修补 Heartbleed。不幸的是,我在更新过程中内存不足,一些软件包没有成功修补。我尝试通过重新启动然后运行来解决这个问题,sudo yum clean
如sudo 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 并完成操作。如果需要,我们可以对故障/损坏的系统进行根本原因分析,而不会影响生产操作。