吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2287|回复: 14
收起左侧

[讨论] 关于Linux使用yum update后系统崩溃的原因说明

[复制链接]
qxyokok 发表于 2020-3-12 15:24
本帖最后由 qxyokok 于 2020-3-19 11:25 编辑

如果你的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路上的你,我的经验可以让你省一些力气。一直查国内外的各种资料确实很累啊~


更新:已经修好啦~~哈哈~


经过一系列的研究后发现,系统确实拆的七零八落无法独自修复,靠系统自己是肯定靠不住了。正在惆怅之时,电脑“叮”的一声,我的rhel8.1下载好了。这个镜像一直断,我可是折腾下载了一个星期啊!!!我在网上只找到了RHEL8.0的镜像,各种渠道里都没有RHEL8.1的镜像,我估计我要成为全网首发了哈哈~~


下载地址在我传到云上后分享给大家。


言归正传,我在安装rhel8.1的时候忽然看到了修复模式。


我怎么把这么重要的功能忘却了??!!


打开修复模式,挂载root,配置临时网络,然后按照我上面的流程再次操作一遍。


不就是系统里的包因为正在运行的原因,导致依赖包乱了么。在我大救援模式下,我不用你的系统好不好嘞~


果然,非常顺利的清除掉重复包和故障损坏包,然后yum -y update,全部重新下载,依次配对依赖包,修复完成~~~


这里我要更正一下上面我写的有误的内容。不是YUM本身太蠢,蠢的地方是在YUM分不清哪些先装,哪些后装,哪些包在什么时候重启,重启后接着怎么装。这些情况目前似乎也没有什么好的解决方法。如果您有什么好的方法,欢迎留言,我也学习一下。


发生这次崩溃事故的本质原因,是YUM无法正常处理正在使用且不重启没有办法停止的系统关键服务包


对于这种包,多半还是因为系统版本跨度太大,才会出现这种情况。应用包+底层包+内核一起更新,无脑用YUM肯定还是要完蛋的。

最终结论还是和开头一样:



如果你的linux版本与当前源的版本差距过大,或者你的软件建构在旧版本的软件包上,无法确认新版本能否同样支持的情况下,尤其是生产环境:

千万慎用yum update!!!
更新:
最新红帽系统镜像我上传完了,下面是下载链接,里面包含RHEL7.0  7.7  8.1三个版本。想尝试8.1的,下载就好~
链接:https点//pan点baidu点com/s/1dNlL6FMp_w7H0VoTG4d0yw
提取码:27fk


SHA-256 Checksum:
         
2323ad44d75df1a1e83048a34e196ddfedcd6c0f6c49ea59bf08095e3bb9ef65


红帽8.1 RHEL8.1
下载
rhel8.1
下载
Download Red Hat Enterprise Linux 8.1 RHEL8.1.ISO rhel8.1.iso
RHEL8.1 rhel8.1

欢迎评分~~


发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

那一夜谁懂22 发表于 2020-3-12 15:30
学习了,
灬时光向来熬人 发表于 2020-3-12 15:49
wxb519774317 发表于 2020-3-12 16:12
适用新手自学教程

其实很多细节 读书的时候老师会说
Mr.[先知] 发表于 2020-3-12 16:17
已经入坑过 所以 现在不敢用了
By阿清 发表于 2020-3-12 16:38
使用yum  upgrade
m-10306 发表于 2020-3-12 17:03
谢谢提醒
JDK007 发表于 2020-3-12 20:57
楼主在CentOS 7之后版本有没有遇到pip无法更新的问题?
 楼主| qxyokok 发表于 2020-3-13 09:58
JDK007 发表于 2020-3-12 20:57
楼主在CentOS 7之后版本有没有遇到pip无法更新的问题?

没有。pip无法更新的话,那得看你机器的具体情况才能知道为什么。多留意反馈的信息,就能找到原因了。我一直用pip没有出现过无法更新的问题
 楼主| qxyokok 发表于 2020-3-16 21:04

一样会升级内核,不信你试试。我自己亲自试验过
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 18:36

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表