解决CentOS 运行yum update意外无法更新问题

因为我们常用的CentOS服务器大部分都是通过SSH连接来访问的,如果遇到网络卡的时候,可能会造成运行升级到一半的时候程序卡死无法继续。这里简单探讨下如何处置这方面的问题。

CentOS5、CentOS6、CentOS7如果对系统升级的只需要运行yum update命令即可进行升级。运行完命令以后,系统会自动先将本地的软件包对比内置的更新库中的软件列表,然后列出需要更新的包列表。如果不加入任何参数的话会询问是否继续,如果使用yum -y update的话列完需要更新的列表后就开始自动更新。

如上图所示,需要更新的软件包总共256M。下图为从更新服务器上下载最新的包数据。

下图为更新完毕。本次更新未遇到yum update失败的情况。

下面我列举下我以前yum update 失败的部分情况。在小内存或是CPU太弱或是网络状态不好的时候更新很容易更新一半就被进程卡死了,重启或是重新运行升级时会提示以下内容。

There are unfinished transactions remaining. You might consider running yum-complete-transaction first to finish them.
The program yum-complete-transaction is found in the yum-utils package

这时候是需要安装清理工具的。
安装yum-complete-transaction套件
yum install -y yum-utils
运行yum-complete-transaction命令
yum-complete-transaction
再次执行更新
yum update
如果遇到多次上面的失败提示,建议选择一个网络时间段好的时候或是加大虚拟内存再运行yum update。

如果运行以上yum都不能安装的话,可以先考虑将Python和yum程序手动卸载再手工安装后再运行以上命令。

卸载python
rpm -qa|grep python|xargs rpm -e --allmatches --nodeps
whereis python|xargs rm -fr

卸载yum
rpm -qa|grep yum|xargs rpm -e --allmatches --nodeps
rm -rf /etc/yum.repos.d/*
whereis yum|xargs rm -fr

安装python
在http://mirror.centos.org/centos/中查找到对应的python rpm和yum rpm包,下载到本地,运行以下命令进行重新安装。
rpm -ivh python-* rpm-python-*
rpm -ivh yum-*

重装完yum后再运行yum install -y yum-utils来安装清理工具。
如果有时候更新包可能遇到更新一个包错误,系统要求清除yum缓存,可以运行以下命令:
yum clean all
yum makecache

如果很久都未更新的系统,而且运行内存较小的CentOS,可以先跳过升级内核,最后其他项目升级。
yum –exclude=kernel* update
如果128M内存的CentOS,甚至运行几十个包的update就会卡死,这样只能先列出来所有需要更新的列表,然后几个包几个包的更新
yum list updates

参考网址
解决yum update意外中断后无法继续更新的问题 https://www.ibadboy.net/archives/644.html
Linux/CentOS配置:使用yum update更新时不升级内核的方法 https://www.cnblogs.com/52php/p/5673220.html
yum update 自动忽略内核更新 https://blog.csdn.net/signmem/article/details/16335841
yum update 出错解决办法 https://www.cnblogs.com/richiewlq/p/8909463.html
CentOS下yum命令详解 https://www.cnblogs.com/vathe/p/6736094.html

发表评论

电子邮件地址不会被公开。必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据