如果你的linux版本与当前源的版本差距过大,或者你的软件建构在旧版本的软件包上,无法确认新版本能否同样支持的情况下,尤其是生产环境:
千万慎用yum update!!!
之前为了学习Linux,我安装了centos和rhel。在升级过程中,我有了一个很重要的发现。
一开始我的centos是7.0版本,下载的rhel也是7.0版本,内核均为3.10.0-123.el7。
用旧版本是因为,我centos7刚出时候下载了镜像,我懒得下直接安装的。升级到7.7的话,只需要下载945MB的升级就行了,不用重新下载。
rhel7.0是我在网上找到的版本,对应着教学参考书下载的。
centos我无脑升级7.7后,无法开机了,并且出现了很多的故障。我在不断的排除故障后,发现了这个故障可能真的无法修复。我以为毕竟是社区版,如果用rhel会不会稳定一些?
我的rhel7.0是连接的红帽官方源下载的,出现了同样的问题!具体情况如下。
在使用了YUM -Y UPDATE后,经过检查发现了1975个升级包。升级完成后系统版本会从7.0直接到7.7。这些升级包几乎包含了所有的软件同时也包含了内核(版本为3.10.0-1062.el7)。熟悉linux的同学可能知道,软件包之间的依赖关系是很复杂的。
YUM可以帮助我们处理这些复杂的软件包依赖关系,但是不能过分的相信YUM是多么的智能化。在版本差距过大的情况下,YUM也救不了你……
当时我的系统升级包在下载完成后,
(吐槽rhel的源是真的慢,慢到我整整下载了一天,centos的一小会儿就下载完了,有镜像源真是爽)
开始了自动安装的过程。YUM一开始还是做的挺不错的。到了后面当一个包关联好几个包,这好几个包又关联好几个包,有的包出现了分版本的情况等诸多情况之后,开始频繁的出现ERROR报错,报错的原因主要都是因为依赖安装的先后没有自动识别好,导致有的前置包没更新,后包为了另一些包已经更新,前后无法匹配,导致后续依赖前两个包的程序又无法安装。(有点绕,大意就是,YUM自己把自己绕晕了)
之后不断的提示安装的新包出现了重复。(有需要处理重复包问题的同学,可以参考这里的解决方法)
1、首先我通过yum install yum-utils -y安装了管理重复包的利器
2、然后清除了YUM的缓存yum clean all
3、列出所有重复的包package-cleanup --dupes看一下,重复的太多了……一屏幕都放不下,用more看了下有好几屏幕
4、接下来解决他们!package-cleanup --cleandupes --removenewestdupes
5、清除掉了那些不断提示重复的包,然后又把损坏的包剃掉package-cleanup --problems
6、我以为万事大吉了(通常情况下,到了这一步就解决问题了),重新开始yum -y update
结果仍然提示有重复包(OMG……)
我看了一下,用package-cleanup --cleandupes重新清理,提示无法清理
在仔细阅读后,看明白了……
大意说的是,包被依赖关系连起来了,装第一个必须升级第二个,升级第二个需要停止第三个,然而第三个正在使用中无法停止,重启后可停止……
太麻烦了……
敲入reboot!
就此无法开机……
开机的情况瘫痪的厉害,连报错都看不见,在GURB选择内核之后就黑屏,或者偶尔会显示一两行字。
GURB显示当前内核仍然为3.0.10-123.el7,但是里面的各种软件包已经升级了95%。
到目前为止,仍然在尝试解决。
这是我在实验环境出现的问题,如果是生产环境无脑YUM UPDATE,很可能让你吃个大亏!切记升级前慎重!
Tips:这里提一个小技巧,我在gnome桌面升级的时候黑屏了(桌面自己升级肯定是没办法显示的)。这时候可以按下Ctrl+Alt+F2切换成命令行模式,接着用。
愿正在学习linux路上的你,我的经验可以让你省一些力气。一直查国内外的各种资料确实很累啊~
我的原文链接:
https://www.52pojie.cn/forum.php?mod=viewthread&tid=1129707&page=1#pid30600255
网友评论