说明:如下全部操做均是由超级管理员完成node
我一个朋友遇到这个问题,就是利用yum安装的时候报错。如图:python
当时他问个人时候,我一开始觉得是Python版本不兼容问题,多是Python升级后带来的问题,因此就给他说了两种方法linux
一、修改yum配置文件:vim
vim /usr/bin/yum
修改第一行centos
#!/usr/bin/python 改成#!/usr/bin/python2.6.6
二、升级yumbash
而后我朋友让我远程帮他,当我远程帮他修改这一行以后,又出现了新的问题。(此处没有截图)ide
找不到Python2.6.6,而后我解压下载了Python2.6.5,而后安装,安装过程以下:url
cd /usr/local/src/ wget tar xf Python-2.6.5.tar.bz2 cd Python-2.6.5 ./configure make && make install #建立软链接 ln -s /usr/local/bin/python2.6.5 /usr/bin/python #检查 python -V
安装成功spa
而后执行yum,依然是这一问题,我想着是否是环境变量的问题,因而增长了环境变量3d
echo "export PATH=/usr/bin/python:$PATH" >> /etc/profile source /etc/profile
又出现了没有权限的问题,而后我仍是将配置文件修改成
#!/usr/bin/python2.6.6
而后执行,出现了No module named yum问题 ,查看Python路径
而后发现Python路径混乱比较混乱。一样的有三种方法解决这一问题。
方法一:
就是修改文件 /usr/bin/yum,将那一行修改,可是很明显不能够,网上看是由于设置了环境变量,又安装了其余的Python版本,出现了链接混乱,致使yum找不到Python路径,因而将环境变量注释而后从新运行了环境变量,问题依然没有解决,而后尝试第二种方法。
方法二:
就是将Python回滚到默认的2.6.6版本。执行了下面两行。
rpm -qa | grep python- | grep 2.6 rpm -ivh --force --nodeps
可是祸不单行,执行第二句代码的时候出现报错(因为这是问题解决后才写的文档,因此此处的错误并无截图)
很无奈,只好尝试第三种方法。
方法三:
下载RPM包(根据本身的版本选择)
python-2.6.6-36.el6.x86_64.rpm yum-metadata-parser-1.1.2-14.1.el6.x86_64.rpm yum-3.2.29-40.el6.centos.noarch.rpm yum-plugin-fastestmirror-1.1.30-30.el6.noarch.rpm #执行安装 rpm -ivh --force --nodeps *.rpm
到http://yum.baseurl.org/wiki下载tar包:yum-3.4.3.tar.gz
tar xf yum-3.4.3.tar.gz cd yum-3.4.3 ./yummain.py update
很显然这个方法也不适用,还比较麻烦。
我再次尝试着从新安装yum和Python。如下是过程:
下载须要的RPM包到此目录。(要下载的包看你的系统版本号,只要和你的系统版本号一致便可)
cd /usr/local/src/Python-2.6.6 #此目录看你的系统版本号
python-2.6.6-36.el6.x86_64.rpm python-urlgrabber-3.9.1-8.el6.noarch.rpm python-devel-2.6.6-36.el6.x86_64.rpm python-libs-2.6.6-36.el6.x86_64.rpm yum-3.2.29-40.el6.centos.noarch.rpm
而后执行安装
rpm -Uvh --replacepkgs *.rpm
#执行这一步的时候我朋友问我--replacepkgs的做用,这里我说明一下,这个参数的意思是用一个副本替换一个包,当咱们遇到须要重复安装软件包的时候,可是通常会报错,若是想要继续重复安装,就会用到这个参数。
与这个参数相关的参数还有以下几个:
--replacefiles #替换另外一个包所拥有的文件,即就是软件包在安装的时候有某个文件已经被其余软件包安装调用过,再次安装就会报错,若是想要继续再次安装,就会用这个参数。
--nodeps #安装或者升级的时候不检查依赖,即当安装的软件包所须要的依赖未安装的时候,就会报错,如果仍然要安装,就会用到这个参数。
--force #忽略包和文件的冲突强制安装,此方法不建议。
--oldpackage #容许升级到比较旧的软件包。通常当新安装的软件包出现兼容问题等的时候会用到此参数,将软件包升级到比较老的版本。
再次使用yum的时候应该来讲就行了,可是使人头疼的是又再次报了一开始的错
当我再一次查看报错的时候,发现了一个问题
我想是否是由于这个文件的问题呢?
因而我进入/lib64此目录,而后将尝试将librt.so.1文件更名
mv librt.so.1 librt.so.1.bak
结果再次运行出现以下的错
提示找不到这个文件,我赶忙将这个文件还原,可是此次不管如何都不能还原
我想尝试重启,然而也不能执行这一操做
我查看了这个文件的属性,发现他是一个librt-2.12.so的链接文件。我就想,既然是链接文件,那么可不能够再作一个软链接呢?
可是很快我就发现什么操做都不能作了。
那么怎么办呢?就在我为难的时候,我朋友将另外一台同环境的服务上的librt.so.1这个文件拷贝到了此服务上面,而后再次运行yum,结果此次yum运行正常
总结:我想应该是librt.so.1这个文件出错致使的。
后来我查了一下这个文件,原来librt.so是glibc中对real-time部分的支持库。
linux 下有动态库和静态库,动态库以.so为扩展名,静态库以.a为扩展名。若是感兴趣的能够本身再去查看更多的关于这个文件的知识。
其实此文档中已经包含了如何正确的升级Python,能够参考博客
centos6.4升级Python过程总结: