卸载 Python ,导致 yum 不能用问题

2017-04-27 11:36:34 +08:00
 we3613040
这个问题就是比较麻烦,谈不上多高深,原理简单,也没深究,希望可以帮助有遇到这个问题的人。

环境 centos6.5
由于 python 版本问题,将系统自带的 2.6 版本的 python 给卸载了,升级成了 2.7
# 卸载旧的 python
sudo rpm -evf --nodeps python
python -V
Python 2.7.6
然后 yum 就不能用了
导致 yum 无法使用
# yum -v
There was a problem importing one of the Python modules
required to run yum. The error leading to this problem was:

No module named rpm

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.6 (default, Dec 15 2016, 13:09:45)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-4)]

If you cannot solve this problem yourself, please go to
the yum faq at:
http://yum.baseurl.org/wiki/Faq

由于 yum 是基于 python
centos6.5 默认使用 python2.6.6,我又源码安装了一遍 python2.6.6,
修改了 vi /usr/bin/yum
#/usr/bin/python 修改为#/usr/bin/python2.6
执行 yum-v 还是不行~~
于是就找到 python 和 yum 的 rpm 包安装,一番尝试之后,发现有 N 个 package 需要重新安装,这里只能一个一个的都安装上,装上 python 的 yum 模块
检查方法
python 进入 python 解释器
import yum 如果成功就可以使用 yum 模块了

解决方法如下
rpm 包地址 http://mirrors.ustc.edu.cn/centos/6/os/x86_64/Packages/ 64 位包下载

需要安装这几个包
python-2.6.6-29.el6.x86_64.rpm

python-devel-2.6.6-29.el6.x86_64.rpm

python-iniparse-0.3.1-2.1.el6.noarch.rpm

python-setuptools-0.6.10-3.el6.noarch.rpm

python-urlgrabber-3.9.1-8.el6.noarch.rpm

rpm-python-4.8.0-19.el6.x86_64.rpm

yum-3.2.29-22.el6.centos.noarch.rpm

yum-metadata-parser-1.1.2-16.el6.x86_64.rpm

python-pycurl-7.19.0-8.el6.x86_64.rpm
注意 rpm 命令,必须要追加 – replacepkgs 参数,强制其重新安装,否则 rpm 会报告说 package 已安装。
rpm -Uvh – replacepkgs ***.rpm
# python
Python 2.6.6 (r266:84292, Dec 7 2011, 20:48:22)
[GCC 4.4.6 20110731 (Red Hat 4.4.6-3)] on linux2
Type “ help ”, “ copyright ”, “ credits ” or “ license ” for more
information.
>>> import yum
如果仍有 packag 缺失,import yum,会提示相关的错误,查找对应的 rpm,装上即可,重复此过程,直到 yum 正常。
8528 次点击
所在节点    程序员
26 条回复
LokiSharp
2017-04-27 11:52:28 +08:00
yum install epel-release -y
LokiSharp
2017-04-27 11:53:09 +08:00
yum install dnf

然后扔掉 yum 用 dnf 做包管理
wyntergreg
2017-04-27 11:53:52 +08:00
@LokiSharp 喜感
tumbzzc
2017-04-27 11:55:28 +08:00
作死。centos6 的 yum 依赖 python2.6
LokiSharp
2017-04-27 11:58:08 +08:00
@wyntergreg #3 别笑,dnf 不依赖 python2.6,想扔掉 python 2.6 只能这样
wyntergreg
2017-04-27 12:00:02 +08:00
@LokiSharp 楼主的 python2.6 都挂了,你输 yum 命令觉得能执行吗?
LokiSharp
2017-04-27 12:04:08 +08:00
@wyntergreg #6 那就下源码编译一个 dnf 咯 他 CentOS 6 其实也没办法 yum 装 dnf
PythonAnswer
2017-04-27 12:06:35 +08:00
dnf 要替代掉 yum 了吧。
Kilerd
2017-04-27 12:21:12 +08:00
你不会看了论坛的另外一个帖子就去升级了吧
koolob
2017-04-27 12:39:37 +08:00
不卸载 2.6,单独安装 python2.7,然后把 yum 中的改成 python2.6,然后把系统默认使用的 python 指向 2.7。这样是不是可以?
shalk
2017-04-27 12:42:40 +08:00
踩过这种坑,不过是又安装了 2.7; 只要把 yum 改成 2.6;

推荐用 pyenv
we3613040
2017-04-27 12:53:40 +08:00
@koolob 可以,卸载的不是我是我同事,这个坑就我填了
we3613040
2017-04-27 12:55:12 +08:00
@Kilerd 不是,这个是需要用 python2.7 版本,只是看到那个帖子,想起踩得坑,分享一下
we3613040
2017-04-27 12:55:46 +08:00
@LokiSharp 想起了地下城,没用过
whwq2012
2017-04-27 13:51:23 +08:00
我也做过这种傻事,最后我自己编译安装了个 2.7
sagaxu
2017-04-27 13:53:34 +08:00
下回再来一个卸载 libc 的,然后再来卸载内核的
julyclyde
2017-04-27 14:33:01 +08:00
因为你没深究所以才犯这个错误的
结果你却执迷于用没深究的方法去修复
twl007
2017-04-27 15:03:08 +08:00
最好不要随便去动这类系统基础的依赖 你现在只是发现了 yum 需要而已 其他还不知道有多少软件依赖这个呢.……
MBTimY
2017-04-27 15:22:40 +08:00
这个问题,我之前的解决方案是,装一个新的 python 2.7 或者更高版本,到期后旧版本的,不删除保留着,这样可以在 yum 那个配置文件那里继续让 yum 使用老版本的 python.
Rice
2017-04-27 16:50:09 +08:00
作死啊,我看过一 Linux 教程里面就说不要随便卸载 python

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/357670

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX