CentOS7使用rpm重装yum和python

发布于 2020-03-13  27 次阅读


前言

最近在服务器上使用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应该正常了。

总结

文章文笔不是太好,大家可以摘着看,有很多地方都是我自己理解的,如有不对请指正。
共同学习共同成长。


聘聘袅袅十三余,豆蔻梢头二月初。