1、問題場景
centos 上的 python 版本默認比較低,不少同窗都會手動升級 python 的版本到 3.x。python
由於 yum 的代碼是依賴 python2.x 的,若是直接刪除老版本 python ,會致使 yum 不可用。centos
# 報錯核心語句 No module named yum
這個狀況必須手動修復,不少同窗由於修復失敗而重裝了系統,這樣成本會很高。api
這裏以 centos7.5 x64 爲例子,進行修復演示。dom
2、手動修復
2.1 下載 rpm 包
centos 官方下載網站是 http://mirror.centos.org/centos/
。選擇國內鏡像網站會快一些。這裏使用的是 mirrors.ustc.edu.cn。curl
首頁就有各個方向的目錄連接。ide
進到 7.5 對應的目錄 http://mirrors.ustc.edu.cn/centos/7.5.1804/
, 發現這裏是空的。不過這沒有關係,同一個大版本號下, rpm 包是兼容的。因此可使用 7.6 目錄下的包。post
http://mirrors.ustc.edu.cn/centos/7.6.1810/os/x86_64/Packages/
,這裏就是咱們所需的 python 和 yum 包 所在地。網站
下載以下包ui
# 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
3、python 升級小建議
-
最好編譯安裝 python 包到一個獨立的目錄,須要使用高版本 python 時,直接指定此版本的可執行文件路徑便可。
-
千萬不要刪除老版本 python, yum 自己本身升級兼容可能還須要好久,當前仍是會依賴系統默認的 python。