最近突然接到任务要处理一个网站问题,然后那个服务器系统是十多年前的CentOS 5.4,处理完后想着更新一下吧,结果遇到一系列问题,在此记录一下。
首先是没有可靠的源,官方vault源因为众所周知的问题连接不上,而国内的源大部分也已经删除了CentOS 5,试了很多最后发现清华镜像还在维护,使用方法。
然后更新,yum makecache
没有问题,但是yum update
时,每下载若干个软件包即会报错,具体多少个随机,3~5个比较常见,但是每次下载一两个就没事。报错内容很长,结尾是
File "/usr/lib64/python2.4/httplib.py", line 813, in request
if v[0] != 32 or not self.auto_open:
IndexError: tuple index out of range
搜了一下结果很少,没有找到解决方法,我先升级了所有yum和python相关软件包,但是并没有解决。
最终使用的办法是一次升级一个软件包_(:з」∠)_当然,如此浩大的工程量肯定不能手动输入对吧,我是这么搞的:
首先提取要升级的软件包列表,这个不赘述了。然后为了防止安装的时候出岔子,我决定先下载这些软件包,等全部下载完后再安装。我们知道yum有一个downloadonly插件,不过按照网上查到的方法,并没有找到yum-plugin-downloadonly这个软件包,后来发现在CentOS 5的源里,这个包是另外一个名字= =
首先安装插件
yum install yum-downloadonly
然后使用这个插件下载软件包
cat yum.txt | xargs -n1 yum update --downloadonly -y
其中yum.txt是要升级的软件包列表,xargs -n1
表示里面的每个包名执行一次命令,执行的命令是yum update --downloadonly -y
,这样就可以让系统自动下载这些软件包,每次只下载一个,遇到bug的概率会大大降低。
当然,执行完后还是有个别软件包没有下载成功,再运行一遍yum update --downloadonly -y
把遗漏的补上即可。
最后用yum update
安装更新,因为软件包已经下载完成,所以就不会卡bug了。
文章评论