CENTOS手动安装修复python ,YUM CENTOS手动安装修复YUM

时间:2020-12-07 12:30:41

CENTOS手动安装修复YUM


一、问题场景

centos 上的 python 版本默认比较低,很多同学都会手动升级 python 的版本到 3.x。

因为 yum 的代码是依赖 python2.x 的,如果直接删除老版本 python ,会导致 yum 不可用。

# 报错核心语句 No module named yum

这个情况必须手动修复,很多同学因为修复失败而重装了系统,这样成本会很高。

这里以 centos7.5 x64 为例子,进行修复演示。

 

二、手动修复

2.1 下载 rpm 包

centos 官方下载网站是 http://mirror.centos.org/centos/。选择国内镜像网站会快一些。这里使用的是 mirrors.ustc.edu.cn。

首页就有各个方向的目录链接。

进到 7.5 对应的目录 http://mirrors.ustc.edu.cn/centos/7.5.1804/, 发现这里是空的。不过这没有关系,同一个大版本号下, rpm 包是兼容的。所以可以使用 7.6 目录下的包。

http://mirrors.ustc.edu.cn/centos/7.6.1810/os/x86_64/Packages/ ,这里就是我们所需的 python 和 yum 包 所在地。

下载如下包

# python 部分 python-backports-1.0-8.el7.x86_64.rpm python-pycurl-7.19.0-19.el7.x86_64.rpm python-backports-ssl_match_hostname-3.5.0.1-1.el7.noarch.rpm python-ipaddress-1.0.16-2.el7.noarch.rpm python-setuptools-0.9.8-7.el7.noarch.rpm python-urlgrabber-3.10-9.el7.noarch.rpm python-2.7.5-76.el7.x86_64.rpm python-iniparse-0.4-9.el7.noarch.rpm python-libs-2.7.5-76.el7.x86_64.rpm python-devel-2.7.5-76.el7.x86_64.rpm rpm-4.11.3-35.el7.x86_64.rpm rpm-python-4.11.3-35.el7.x86_64.rpm # yum 部分 yum-3.4.3-161.el7.centos.noarch.rpm yum-metadata-parser-1.1.4-10.el7.x86_64.rpm yum-plugin-fastestmirror-1.1.31-50.el7.noarch.rpm 

 

2.2 安装 rpm 包

先安装 python。

运行 rpm 命令。这里一定要加 --replacefiles --replacepkgs 参数, 因为需要覆盖一些老文件老包,不加的话会提示文件冲突或者包已经安装过了。

sudo rpm --replacefiles --replacepkgs -ivh python-backports-1.0-8.el7.x86_64.rpm python-pycurl-7.19.0-19.el7.x86_64.rpm python-backports-ssl_match_hostname-3.5.0.1-1.el7.noarch.rpm python-ipaddress-1.0.16-2.el7.noarch.rpm python-setuptools-0.9.8-7.el7.noarch.rpm python-urlgrabber-3.10-9.el7.noarch.rpm python-2.7.5-76.el7.x86_64.rpm python-iniparse-0.4-9.el7.noarch.rpm python-libs-2.7.5-76.el7.x86_64.rpm python-devel-2.7.5-76.el7.x86_64.rpm rpm-4.11.3-35.el7.x86_64.rpm python-2.7.5-76.el7.x86_64.rpm rpm-4.11.3-35.el7.x86_64.rpm rpm-python-4.11.3-35.el7.x86_64.rpm 

输出为

warning: package python-2.7.5-76.el7.x86_64 was already added, skipping python-2.7.5-76.el7.x86_64 warning: package rpm-4.11.3-35.el7.x86_64 was already added, skipping rpm-4.11.3-35.el7.x86_64 Preparing... ################################# [100%] Updating / installing... 1:python-libs-2.7.5-76.el7 ################################# [ 8%] 2:python-2.7.5-76.el7 ################################# [ 17%] 3:python-backports-1.0-8.el7 ################################# [ 25%] 4:python-pycurl-7.19.0-19.el7 ################################# [ 33%] 5:python-ipaddress-1.0.16-2.el7 ################################# [ 42%] 6:python-backports-ssl_match_hostna################################# [ 50%] 7:rpm-4.11.3-35.el7 ################################# [ 58%] 8:rpm-python-4.11.3-35.el7 ################################# [ 67%] 9:python-setuptools-0.9.8-7.el7 ################################# [ 75%] 10:python-urlgrabber-3.10-9.el7 ################################# [ 83%] 11:python-iniparse-0.4-9.el7 ################################# [ 92%] 12:python-devel-2.7.5-76.el7 ################################# [100%]

再安装 yum,同样也要加 --replacefiles --replacepkgs

sudo rpm --replacefiles --replacepkgs -ivh yum-3.4.3-161.el7.centos.noarch.rpm rpm-python-4.11.3-35.el7.x86_64.rpm yum-metadata-parser-1.1.4-10.el7.x86_64.rpm yum-plugin-fastestmirror-1.1.31-50.el7.noarch.rpm rpm-4.11.3-35.el7.x86_64.rpm

输出为

Preparing... ################################# [100%] Updating / installing... 1:rpm-4.11.3-35.el7 ################################# [ 20%] 2:rpm-python-4.11.3-35.el7 ################################# [ 40%] 3:yum-metadata-parser-1.1.4-10.el7 ################################# [ 60%] 4:yum-plugin-fastestmirror-1.1.31-5################################# [ 80%] 5:yum-3.4.3-161.el7.centos ################################# [100%]

这里一定要注意,必须出现进度条 100% 的 输出,才是安装成功了。

不同版本的系统,需要的包可能不太一样,当运行安装命令时,可能会提示有一些依赖包缺失。

这种情况下,可以根据提示下载响应的依赖包,添加到 rpm -ivh 的列表中。

2.3 可以使用了

尝试运行下 yum。

yum --version 

输出为

3.4.3 Installed: rpm-4.11.3-32.el7.x86_64 at 2018-06-20 10:02 Built : CentOS BuildSystem <http://bugs.centos.org> at 2018-04-11 03:54 Committed: Panu Matilainen <pmatilai@redhat.com> at 2017-11-13 Installed: rpm-4.11.3-35.el7.x86_64 at 2019-03-07 10:09 Built : CentOS BuildSystem <http://bugs.centos.org> at 2018-10-30 19:27 Committed: Pavlina Moravcova Varekova <pmoravco@redhat.com> at 2018-06-19 Installed: yum-3.4.3-161.el7.centos.noarch at 2019-03-07 10:08 Built : CentOS BuildSystem <http://bugs.centos.org> at 2018-11-05 01:54 Committed: CentOS Sources <bugs@centos.org> at 2018-10-30 Installed: yum-plugin-fastestmirror-1.1.31-50.el7.noarch at 2019-03-07 10:08 Built : CentOS BuildSystem <http://bugs.centos.org> at 2018-10-30 22:58 Committed: Michal Domonkos <mdomonko@redhat.com> at 2018-08-24

 

三、python 升级小建议

  • 最好编译安装 python 包到一个独立的目录,需要使用高版本 python 时,直接指定此版本的可执行文件路径即可。

  • 千万不要删除老版本 python, yum 本身自己升级兼容可能还需要很久,当前还是会依赖系统默认的 python。