我在之前的文章 《CentOS 安装 Python3 最佳方法》介绍了在 CentOS 上快速安装 python3 的方法,我自己的系统上也确实是用这种方式安装的。但是今天通过 yum update
更新系统的时候竟然报错了。
file /usr/lib64/python3.6/xml/sax/__pycache__/xmlreader.cpython-36.opt-2.pyc from install of python36-libs-3.6.6-5.el7.x86_64 conflicts with file from package python36u-libs-3.6.7-1.ius.centos7.x86_64
file /usr/lib64/python3.6/xml/sax/__pycache__/xmlreader.cpython-36.pyc from install of python36-libs-3.6.6-5.el7.x86_64 conflicts with file from package python36u-libs-3.6.7-1.ius.centos7.x86_64
file /usr/lib64/python3.6/xml/sax/expatreader.py from install of python36-libs-3.6.6-5.el7.x86_64 conflicts with file from package python36u-libs-3.6.7-1.ius.centos7.x86_64
file /usr/lib64/python3.6/zipfile.py from install of python36-libs-3.6.6-5.el7.x86_64 conflicts with file from package python36u-libs-3.6.7-1.ius.centos7.x86_64
file /usr/bin/python3.6m from install of python36-3.6.6-5.el7.x86_64 conflicts with file from package python36u-3.6.7-1.ius.centos7.x86_64
file /usr/bin/python3.6 from install of python36-3.6.6-5.el7.x86_64 conflicts with file from package python36u-3.6.7-1.ius.centos7.x86_64
Error Summary
-------------
从报错的信息中很容看出来是出现了冲突。经过 Google 发现原因是系统上由 epel 源(就是用 《CentOS 安装 Python3 最佳方法》这个方法时添加的),同时还有 ius 源。运行 yum repolist
就能看到当前系统添加的源:
[iplay@xx-good iplay]# yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
repo id repo name status
base/7/x86_64 CentOS-7 - Base 10,097
epel/x86_64 Extra Packages for Enterprise Linux 7 - x86_64 13,398
extras/7/x86_64 CentOS-7 - Extras 304
ius/x86_64 IUS for Enterprise Linux 7 - x86_64 387
updates/7/x86_64 CentOS-7 - Updates 311
repolist: 24,497
原来 epel 和 ius 源有相同的 python3 版本,而且依赖相同的文件,导致更新时出现冲突了。网上有很多方法,包括跳过 python3 的更新(难道永远不更新?)、删除某个源(epel 和 ius 源的偏好和目的不同,建议保留),还有一个方法就是卸载重装。
我决定用第三种方法:
rpm -qa|grep python3|xargs rpm -ev --allmatches --nodeps 卸载pyhton3
whereis python3 |xargs rm -frv 删除所有残余文件,成功卸载!
whereis python 查看现有安装的python
卸载完成后直接运行 yum install python3
,系统自动安装好 python3、pip3 和其他依赖的包,输入 python3 -V
看到版本号就说明已经成功。此时运行 yum update
终于恢复到如行云流水般顺畅。