前言
下午工作的时候遇到了一个问题,测试服务器上的 yum 不知为何不能使用,抛出错误 No module named yum
。Google 了之后发现基本都是讲修改 yum 使用的 python 版本,但是在我尝试安装了 python2.6 并修改了 /usr/bin/yum
文件后发现还是不行,于是决定重装 yum。
卸载 yum
首先查看现有的 yum:
rpm -qa yum
卸载现有的 yum 源:
rpm -qa | grep yum | xargs rpm -e --nodeps
根据系统版本,下载所需 rpm 包
先查看系统版本:
cat /etc/centos-release
确定系统版本为 CentOS Linux release 7.0.1406 (Core)
后,到官网查找下列 rpm 包:
http://mirror.centos.org/centos/7/os/x86_64/Packages/
- yum-3.4.3-163.el7.centos.noarch.rpm
- yum-metadata-parser-1.1.4-10.el7.x86_64.rpm
- yum-plugin-fastestmirror-1.1.31-52.el7.noarch.rpm
如果为其他系统,可自行查找对应的包下载。
下载 yum 的 rpm 包:
wget http://mirror.centos.org/centos/7/os/x86_64/Packages/yum-3.4.3-163.el7.centos.noarch.rpm
wget http://mirror.centos.org/centos/7/os/x86_64/Packages/yum-metadata-parser-1.1.4-10.el7.x86_64.rpm
wget http://mirror.centos.org/centos/7/os/x86_64/Packages/yum-plugin-fastestmirror-1.1.31-52.el7.noarch.rpm
需要一起安装,不然会报互相依赖的错误。
解决错误:undefined symbol: rpmtsAddReinstallElement
在安装之后,我运行 yum 的时候还是报错:/usr/lib64/python2.7/site-packages/rpm/_rpm.so: undefined symbol: rpmtsAddReinstallElement
这是由于 rpm 包的版本不对应导致的。使用下列指令查看:
rpm -qa | grep rpm
显示结果为:
rpmfusion-free-release-7-4.noarch
rpm-python-4.11.3-40.el7.x86_64
rpm-libs-4.11.3-25.el7.x86_64
rpm-4.11.3-25.el7.x86_64
rpm-build-libs-4.11.3-25.el7.x86_64
发现其中 rpm-python
的包为 3-40
,而其他包版本为 3-25
。这时再去下载对应 3-40
的包:
wget http://mirror.centos.org/centos/7/os/x86_64/Packages/rpm-4.11.3-40.el7.x86_64.rpm
wget http://mirror.centos.org/centos/7/os/x86_64/Packages/rpm-build-libs-4.11.3-40.el7.x86_64.rpm
wget http://mirror.centos.org/centos/7/os/x86_64/Packages/yum-metadata-parser-1.1.4-10.el7.x86_64.rpm
运行下述指令更新包:
rpm -Uvh rpm-4.11.3-40.el7.x86_64.rpm rpm-build-libs-4.11.3-40.el7.x86_64.rpm rpm-libs-4.11.3-40.el7.x86_64.rpm
安装成功后再运行 yum
指令,就发现安装成功啦~
参考文档
Python 升级导致 yum 不可用 “ No module named yum” - Linux 社区
yum 的卸载与重新安装 - CSDN
CentOS7 的 yum 重装 - CSDN
centos7 中 yum 的安装 - 博客园
CentOS7 误删 python 及 yum(重装)
rpm 安装依赖问题 - 思否
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。