V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
we3613040
V2EX  ›  程序员

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

  •  
  •   we3613040 · Apr 27, 2017 · 9014 views
    This topic created in 3289 days ago, the information mentioned may be changed or developed.
    这个问题就是比较麻烦,谈不上多高深,原理简单,也没深究,希望可以帮助有遇到这个问题的人。

    环境 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 replies    2017-09-13 10:19:42 +08:00
    LokiSharp
        1
    LokiSharp  
       Apr 27, 2017
    yum install epel-release -y
    LokiSharp
        2
    LokiSharp  
       Apr 27, 2017   ❤️ 1
    yum install dnf

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

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