前言
最近在服务器上使用OnePy,可能是因为原先安装了Python3,导致无法正常安装,索性把Python全部卸载,然后发现yum不能正常使用,才知道yum需要python2才能正常运行。
在网上查了各种资料如何使用rpm安装修复,昨晚修复成功,在这里记录一下,分享给大家。如果大家有同样问题可以试着解决一下。
完全卸载Yum和Python
卸载现有的python和yum,强制删除已安装程序及其关联
rpm -qa|grep python|xargs rpm -ev --allmatches --nodeps
rpm -qa|grep yum|xargs rpm -ev --allmatches --nodeps
强制删除所有的残余文件
whereis python |xargs rm -frv
whereis yum |xargs rm -frv
使用RPM安装包
如果是服务器在国内,可以在163、清华、阿里提供的免费开源镜像站点来进行下载,需要下载包很多,因为版本会一直在更新,所以需要自己去镜像站上复制链接到服务器使用wget下载,或者下载到本地再通过sftp上传。
下载到本地再通过sftp上传这种方式比较好一点,一个一个复制起来很费力,我本人修复的时候没有通过wget下载而是直接用rpm链接安装,当初发现可以省一步我还沾沾自喜,现在整理发现有点蠢。
国内镜像源地址
网易:http://mirrors.163.com/centos/7/os/x86_64/Packages/
清华:http://mirrors.ustc.edu.cn/centos/7/os/x86_64/Packages/
阿里:https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/
请在阅读到此处时检查你的centos版本,7.x的包都在上面的链接里,如果你是6.x,则把上面的7换成6,理论上这个方法通用。
CentOS即将对6停止更新,建议及时更新的CentOS7
需要的rpm包
libxml2-python-2.9.1-6.el7_2.3.x86_64.rpm
rpm-4.11.3-35.el7.x86_64.rpm
rpm-build-4.11.3-35.el7.x86_64.rpm
rpm-build-libs-4.11.3-35.el7.x86_64.rpm
rpm-libs-4.11.3-35.el7.x86_64.rpm
rpm-sign-4.11.3-35.el7.x86_64.rpm
rpm-python-4.11.3-35.el7.x86_64.rpm
python-2.7.5-76.el7.x86_64.rpm
python-devel-2.7.5-76.el7.x86_64.rpm
python-libs-2.7.5-76.el7.x86_64.rpm
python-pycurl-7.19.0-19.el7.x86_64.rpm
python-setuptools-0.9.8-7.el7.noarch.rpm
python-urlgrabber-3.10-9.el7.noarch.rpm
python-iniparse-0.4-9.el7.noarch.rpm
python-backports-1.0-8.el7.x86_64.rpm
python-backports-ssl_match_hostname-3.5.0.1-1.el7.noarch.rpm
python-chardet-2.2.1-1.el7_1.noarch.rpm
python-ipaddress-1.0.16-2.el7.noarch.rpm
python-kitchen-1.1.1-5.el7.noarch.rpm
python-virtualenv-15.1.0-2.el7.noarch.rpm
yum-3.4.3-161.el7.centos.noarch.rpm
yum-metadata-parser-1.1.4-10.el7.x86_64.rpm
yum-utils-1.1.31-50.el7.noarch.rpm
yum-plugin-fastestmirror-1.1.31-50.el7.noarch.rpm
yum-plugin-protectbase-1.1.31-50.el7.noarch.rpm
yum-plugin-aliases-1.1.31-50.el7.noarch.rpm
因为版本一直在更新,所以你需要自己根据名字找,这也是为什么我不直接放下载链接。
通过包安装
如果你上面把所有需要的包已经下载完毕,并成功传在了服务器目录,无论是使用wget下载还是sftp上传,切换到包所在的目录,执行以下命令,强制安装所有包,确保你有root权限
rpm -Uvh --force --nodeps --replacepkgs *.rpm
直接通过rpm链接安装(麻烦!)
执行下面命令,但是要把url换成上面包的下载链接,rpm会自动下载安装,但是注意,这个方法不建议,很麻烦。
rpm -Uvh --force --nodeps --replacepkgs url
安装错误处理
理论上上面执行完毕yum就应该可以正常使用了,但是如果执行yum还是报错。比如:
There was a problem importing one of the Python modules
required to run yum. The error leading to this problem was:
/usr/lib64/python2.7/site-packages/rpm/_rpm.so: undefined symbol: rpmpkgVerifySi
Please install a package which provides this module, or
verify that the module is installed correctly.
It's possible that the above module doesn't match the
current version of Python, which is:
2.7.5 (default, Apr 11 2018, 07:36:10)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-28)]
If you cannot solve this problem yourself, please go to
the yum faq at:
http://yum.baseurl.org/wiki/Faq
这说明上面的rpm包没有下载完整或者没有全部安装。
本人并未遇到这个错误,如果有可以尝试重新下载所有包解决一下。
善后处理
配置yum源
yum重新安装后没有任何源,无法安装任何软件,可以使用下方的方法可以导入国内阿里镜像源。
1.下载新的CentOS-Base.repo,并写入到基础源文件中
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.rep
2.yum缓存生成
yum clean all //清理yum缓存,使设置生效
yum makecache //将服务器上的软件包信息缓存到本地,以提高搜索安装软件的速度
yum -y update //更新本地yum
安装pip
因为我在linux上运行的是宝塔,报错提示没有web.py模块,在使用pip时发现连pip都没有。这里建议安装上pip以备不时之需。
直接yum install python-pip是没有用的,会提示没有软件包。
1.安装epel软件仓库
yum -y install epel-release
2.安装pip
yum install python-pip
到此你的pip应该正常了。
总结
文章文笔不是太好,大家可以摘着看,有很多地方都是我自己理解的,如有不对请指正。
共同学习共同成长。
Comments | NOTHING