V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
we3613040
V2EX  ›  程序员

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

  •  
  •   we3613040 · 2017-04-27 11:36:34 +08:00 · 8385 次点击
    这是一个创建于 2518 天前的主题,其中的信息可能已经有所发展或是发生改变。
    这个问题就是比较麻烦,谈不上多高深,原理简单,也没深究,希望可以帮助有遇到这个问题的人。

    环境 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 正常。
    26 条回复    2017-09-13 10:19:42 +08:00
    LokiSharp
        1
    LokiSharp  
       2017-04-27 11:52:28 +08:00
    yum install epel-release -y
    LokiSharp
        2
    LokiSharp  
       2017-04-27 11:53:09 +08:00   ❤️ 1
    yum install dnf

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

    推荐用 pyenv
    we3613040
        12
    we3613040  
    OP
       2017-04-27 12:53:40 +08:00
    @koolob 可以,卸载的不是我是我同事,这个坑就我填了
    we3613040
        13
    we3613040  
    OP
       2017-04-27 12:55:12 +08:00
    @Kilerd 不是,这个是需要用 python2.7 版本,只是看到那个帖子,想起踩得坑,分享一下
    we3613040
        14
    we3613040  
    OP
       2017-04-27 12:55:46 +08:00
    @LokiSharp 想起了地下城,没用过
    whwq2012
        15
    whwq2012  
       2017-04-27 13:51:23 +08:00 via Android
    我也做过这种傻事,最后我自己编译安装了个 2.7
    sagaxu
        16
    sagaxu  
       2017-04-27 13:53:34 +08:00
    下回再来一个卸载 libc 的,然后再来卸载内核的
    julyclyde
        17
    julyclyde  
       2017-04-27 14:33:01 +08:00
    因为你没深究所以才犯这个错误的
    结果你却执迷于用没深究的方法去修复
    twl007
        18
    twl007  
       2017-04-27 15:03:08 +08:00 via iPhone
    最好不要随便去动这类系统基础的依赖 你现在只是发现了 yum 需要而已 其他还不知道有多少软件依赖这个呢.……
    MBTimY
        19
    MBTimY  
       2017-04-27 15:22:40 +08:00 via iPhone
    这个问题,我之前的解决方案是,装一个新的 python 2.7 或者更高版本,到期后旧版本的,不删除保留着,这样可以在 yum 那个配置文件那里继续让 yum 使用老版本的 python.
    Rice
        20
    Rice  
       2017-04-27 16:50:09 +08:00
    作死啊,我看过一 Linux 教程里面就说不要随便卸载 python
    killerv
        21
    killerv  
       2017-04-27 17:20:47 +08:00
    升级 Python,保留旧版本啊
    killerv
        22
    killerv  
       2017-04-27 17:22:10 +08:00
    @LokiSharp 哈哈,我想起个段子:下载 winrar 的时候发现下载的文件是个 winrar.rar
    we3613040
        23
    we3613040  
    OP
       2017-04-27 18:04:58 +08:00
    @twl007 恩,是呀
    geeklian
        24
    geeklian  
       2017-04-27 18:15:03 +08:00 via iPad
    任何尝试替换系统默认 python 的行为都是在给自己挖坑。
    we3613040
        25
    we3613040  
    OP
       2017-04-27 18:18:14 +08:00
    @geeklian 是呀,这个确实没想到,所以我把这个方法写出来,分享给遇到这个问题的人
    mentalkiller
        26
    mentalkiller  
       2017-09-13 10:19:42 +08:00
    感谢指点
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5372 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 07:15 · PVG 15:15 · LAX 00:15 · JFK 03:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.