真是折腾的一天

事情源于我们的服务器操作系统版本太低(老实说机器也破,难道是研发经费都没有了?),于是想升级下操作系统。

系统是RedHat Enterprise Linux AS 4,安装软件特别麻烦,一般都需要CD的,比较这是收费的操作系统,于是想升级到CentOS。好吧,跨大版本升级不大靠谱,还是平级升级好了。于是从AS4升级到CentOS 4.8,文章在这里。升级过程还算顺利,重启看起来没什么问题,顺便把SSH的协议版本改为SSH2了。其它看起来都还不错。

继续折腾,想将CentOS 4升级到CentOS 5。好吧,按照这篇文章开始折腾。原文的方式不知为何在这台机器上不可用,只好手动一个一个的包按照。接下来的事情就杯具了,太多的依赖冲突了。好吧,一个一个的删掉,等一会再重新安装好了。结果不小心将glibc以及另外一个底层库删掉了(依赖删掉的),导致SSH不能再接受新连接了,另外依赖glibc的wget/curl都不能用了。这还不算惨,更惨的是一会rpm/yum都不能用了。这下彻底杯具了!以为这台机器操作系统算是报废了。最后死马当活马医,从别的机器拷贝依赖库,修复rpm,安装yum/glibc等,一直把wget/curl修复好了,才敢一个一个依赖的处理。这里要感谢scp,此时居然还可以用!注意,其他机器是不能通过端口连接进来的,但是先前开的两个shell窗口还是可以用的。

一个一个依赖手工处理,处理完所有依赖,然后使用yum –y upgrade居然更新成功了。检查基本配置、重启,一切OK,太幸运了。最终将操作系统成功升级到最新的CentOS 5.6。

给我的一个教训是,远程操作要特别小心,不清楚的库不要随便删除,尤其是底层依赖库,一旦出了事故,可能连SSH服务都会挂掉,这时候就是彻底的悲剧了。