【linux】python多版本共存 解决python2.7 卸载重装后引发的There are no enabled repos. Run “yum repolist all“

最近在alibaba cloud linux出现了这个错误 由于阿里的linux是兼容centos的 所以直接按照centos来处理。

出现原因:把自带的python2.7删除后 又重新安装

删除python2.7

(下面为个人复现错误步骤 请勿轻易按照删除)

1.卸载python(防止未卸载干净)

rpm -qa|grep python|xargs rpm -ev --allmatches --nodeps #强制删除已安装程序及其关联
whereis python|xargs rm -frv   #删除所有残余文件 #xargs,允许你对输出执行其他某些命令

2.卸载yum

rpm -qa|grep yum|xargs rpm -ev --allmatches --nodeps
rm -rf /etc/yum.repos.d/*
whereis yum|xargs rm -frv

3.验证是否删除干净

whereis python #验证删除,没有结果返回
whereis yum

重装python2.7和yum

 查看linux系统版本:cat /etc/redhat-release
(以centos 7.5.1804举例 ) 软件下载地址:
http://vault.centos.org/7.5.1804/os/x86_64/Packages/
所需文件如下:(下载自己系统对应版本的就好 当然 版本差异不大的话是可以兼容的)
wget http://vault.centos.org/7.5.1804/os/x86_64/Packages/lvm2-python-libs-2.02.177-4.el7.x86_64.rpm
wget http://vault.centos.org/7.5.1804/os/x86_64/Packages/libxml2-python-2.9.1-6.el7_2.3.x86_64.rpm
wget http://vault.centos.org/7.5.1804/os/x86_64/Packages/python-libs-2.7.5-68.el7.x86_64.rpm
wget http://vault.centos.org/7.5.1804/os/x86_64/Packages/python-ipaddress-1.0.16-2.el7.noarch.rpm
wget http://vault.centos.org/7.5.1804/os/x86_64/Packages/python-backports-1.0-8.el7.x86_64.rpm
wget http://vault.centos.org/7.5.1804/os/x86_64/Packages/python-backports-ssl_match_hostname-3.5.0.1-1.el7.noarch.rpm
wget http://vault.centos.org/7.5.1804/os/x86_64/Packages/python-2.7.5-68.el7.x86_64.rpm
wget http://vault.centos.org/7.5.1804/os/x86_64/Packages/python-iniparse-0.4-9.el7.noarch.rpm
wget http://vault.centos.org/7.5.1804/os/x86_64/Packages/python-pycurl-7.19.0-19.el7.x86_64.rpm
wget http://vault.centos.org/7.5.1804/os/x86_64/Packages/python-urlgrabber-3.10-8.el7.noarch.rpm
wget http://vault.centos.org/7.5.1804/os/x86_64/Packages/python-setuptools-0.9.8-7.el7.noarch.rpm
wget http://vault.centos.org/7.5.1804/os/x86_64/Packages/python-kitchen-1.1.1-5.el7.noarch.rpm
wget http://vault.centos.org/7.5.1804/os/x86_64/Packages/python-chardet-2.2.1-1.el7_1.noarch.rpm<br>
wget http://vault.centos.org/7.5.1804/os/x86_64/Packages/rpm-python-4.11.3-32.el7.x86_64.rpm
wget http://vault.centos.org/7.5.1804/os/x86_64/Packages/yum-utils-1.1.31-45.el7.noarch.rpm
wget http://vault.centos.org/7.5.1804/os/x86_64/Packages/yum-3.4.3-158.el7.centos.noarch.rpm
wget http://vault.centos.org/7.5.1804/os/x86_64/Packages/yum-metadata-parser-1.1.4-10.el7.x86_64.rpm
wget http://vault.centos.org/7.5.1804/os/x86_64/Packages/yum-plugin-aliases-1.1.31-45.el7.noarch.rpm
wget http://vault.centos.org/7.5.1804/os/x86_64/Packages/yum-plugin-protectbase-1.1.31-45.el7.noarch.rpm
wget http://vault.centos.org/7.5.1804/os/x86_64/Packages/yum-plugin-fastestmirror-1.1.31-45.el7.noarch.rpm

上传并安装

rpm -Uvh --replacepkgs lvm2-python-libs*.rpm --nodeps --force
 
rpm -Uvh --replacepkgs libxml2-python*.rpm --nodeps --force
 
rpm -Uvh --replacepkgs python*.rpm --nodeps --force
 
rpm -Uvh --replacepkgs rpm-python*.rpm yum*.rpm --nodeps --force

There are no enabled repos 错误解决

此时使用yum install 出现There are no enabled repos

解决方法:

下载对应版本repo文件, 放入/etc/yum.repos.d/ 目录下,
下载地址:http://mirrors.163.com/.help/centos.html

yum clean all

yum makecache

出现上述问题 是因为我想下载一个python3环境 项目是用python3写的 ,由此可见 在没有把握的情况下 应该谨慎删除python2.7 (python2和3的语法有所不同),最佳的方案是让python2和python3共存。不慎删除python2这个当已经上过好几次了 特此写篇博客记录一下。下面介绍python3的下载安装:

安装python3

双版本共存 我们使用make二进制安装的方式:

首先我们下载tgz包

cd /usr/local

# 新建一个目录
mkdir python3

wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz

安装

# 指定安装目录 方便我们后期维护
./configure --prefix=/usr/local/python3

make

make altinstall

让系统默认使用Python 3

cd /usr/bin

mv python python-backup

ln -s /usr/local/python3/bin/python3.7 /usr/bin/python

多版本共存完整步骤:

# 查看软连接
ll python3  # 在 /usr/bin 目录执行
# 如果存在软连接,则先删除
unlink python3(软连接名称)
unlink pip3
# 建立软连接
#python3 为软连接名称,可以自定义,如python38
ln -s /usr/local/python38 /usr/bin/python3   
ln -s /usr/local/pip38 /usr/bin/pip3
# 测试
python3  # 软连接名称

在默认使用python3后,我们的yum不能正常使用了 因为yum是使用的python2语法编写的,如果熟悉python 或许可以直接改写相关文件的语法 ,我们因为不是那么的熟,把yum相关文件 指定回python2 是不错的选择。

yum配置文件指定python2

vim /usr/bin/yum

将第一行"#!/usr/bin/python" 改为 “#!/usr/bin/python2”

 vim /usr/libexec/urlgrabber-ext-down

同样 将第一行"#!/usr/bin/python" 改为 “#!/usr/bin/python2”

防火墙相关功能修复

不出意外的话 此时防火墙功能还是异常的 No module named gi.repository

yum install python-gobject

此时的提示应该变成 ImportError: No module named firewall.client

yum install python-firewall

至此 实现python2和3 共存 ,且yum、防火墙功能正常

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孟秋与你

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值