误删 site-packages 从来导致 YUM 无法使用的修复方法
在客户的服务器上面折腾 trac ,但 PySqlite2 一直编译出错,于是想删掉 PySqlite2 通过其它方式安装。
很自然的想输入如下命令:
#> rm -rf /usr/lib/python2.4/site-packages/PySqlite2
天太冷,没想到手一抖,变成了:
#> rm -rf /usr/lib/python2.4/site-packages/ PySqlite2
于是悲剧就这样发生了,site-packages 瞬间消失…
Centos 中很多重要服务都会依赖 Python,这个白痴的手误虽然不至于摧毁整个系统,但某些服务显然是不能用了,比如 Yum。
尝试输入 Yum 命令,显示如下错误:
There was a problem importing one of the Python modules
required to run yum. The error leading to this problem was:
No module named yum
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.4.3 (#1, Sep 3 2009, 15:37:12)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-46)]
If you cannot solve this problem yourself, please go to
the yum faq at:
http://wiki.linux.duke.edu/YumFaq
那么首先要做的是修复 Yum 服务,Yum 修复后,就可以更方便的重装一些被损坏的 package。
嗯,幸运的是,rpm 命令并没有受到影响!
访问 Centos 官网:http://mirror.centos.org/centos-5/5.4/os/i386/CentOS/(32位系统,64位请移步到 …/os/x86_64/CentOS/),下载对应版本的相关 rpm 包,重新安装即可。
注意 Centos 版本号,如果不知道,可以通过如下命令得到:
#> cat /etc/issue CentOS release 5.4 (Final) Kernel \r on an \m
一番尝试之后,发现有 N 个 package 需要重新安装,这里就不写尝试过程,直接把结果做成了 shell script,运行即可。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #!/bin/bash URL=http://mirror.centos.org/centos-5/5.4/os/i386/CentOS/ for package in \ python-2.4.3-27.el5.i386.rpm \ python-devel-2.4.3-27.el5.i386.rpm \ python-elementtree-1.2.6-5.i386.rpm \ python-iniparse-0.2.3-4.el5.noarch.rpm \ python-setuptools-0.6c5-2.el5.noarch.rpm \ python-sqlite-1.1.7-1.2.1.i386.rpm \ python-urlgrabber-3.1.0-5.el5.noarch.rpm \ rpm-python-4.4.2.3-18.el5.i386.rpm \ yum-3.2.22-20.el5.centos.noarch.rpm \ yum-metadata-parser-1.1.2-3.el5.centos.i386.rpm \ do rpm -Uvh --replacepkgs $URL$package done |
注意 rpm 命令,必须要追加 –replacepkgs 参数,强制其重新安装,否则 rpm 会报告说 package 已安装。
如果仍然无法运行 Yum,则运行 Python,import yum,查询下缺少什么东西。
#> python Python 2.4.3 (#1, Sep 3 2009, 15:37:12) [GCC 4.1.2 20080704 (Red Hat 4.1.2-46)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import yum
如果仍有 package 缺失,import yum,会提示相关的错误,查找对应的 rpm,装上即可,重复此过程,直到 yum 正常。
Yum 修复完毕之后,运行:
yum update
更新一下刚刚重新安装上去的 rpm。
除了 Yum,很可能还有其它的服务受到牵连(比如 sqlite 和 php 等),索性把所有和 Python 有关系的 package 都重装一下。
1 2 3 4 | #!/bin/bash packages=`yum list installed | grep python | awk '{print $1}'` yum reinstall $packages |
嗯,差不多就是这样了,继续装 trac … 这玩意真难装。
误删 site-packages 从来导致 YUM 无法使用的修复方法 我试过 不知道是不是包下错了 我的服务器用的是AMD 3000+ 64bit的处理器 我先是按照你说的方法做 后来再 python imprt yum 是下错了包吗?我下的都是i386的
急阿!我的qq是如邮箱所示 因为看到是隐藏的属性 我就间接告诉你啦
能帮下忙吗?
我试过了 问题依旧哦 急啊!
下载 x86_64 目录下面的 rpm 包。