CentOS7修復python拯救yum
- 2020 年 1 月 8 日
- 筆記
本人正在吹著空調,喝著茶水,然後qq頭像抖了兩下,業務開發同學給我打了個招呼,「忙么?幫個忙可以不?」 這很明顯了,要忙了呀!來活了。本著愛崗敬業的精神回復「您說」。 然後很含蓄的告訴我yum不好用了。得嘞,這活可能很簡單,就是自己編譯了高版本替換了系統python,然後yum使用python,由於版本高,庫沒有,導致沒法使用。 或者特別麻煩,直接把系統的python卸了!!!!!! 這個有可能沒救,這要看業務同學是否手下留情了。閑話到此!
++++++++++++++++++++++++++++++++++++++++++++
一 拯救yum,簡單的說 只是裝了個高版本的python,然後把環境變數換了 或者 軟連接了下
[root@test ~]# vim $(which yum) #!/usr/bin/python 修改為系統的python path 例如:#!/usr/bin/python2.7 import sys try: import yum except ImportError: print >> sys.stderr, """
還有這個地方
[root@test ~]# vi /usr/libexec/urlgrabber-ext-down #! /usr/bin/python 修改為系統的python path 例如:#!/usr/bin/python2.7 # A very simple external downloader # Copyright 2011-2012 Zdenek Pavlas
然後試試 一般就好了
二 手抖把python刪除了 或者把 yum刪除了
區別:
這是沒python了
[root@test ~]# yum -bash: /usr/bin/yum: /usr/bin/python: bad interpreter: No such file or directory [root@test ~]# python -V -bash: /usr/bin/python: No such file or directory
這是沒yum了
[root@test ~]# yum -bash: /usr/bin/yum: No such file or directory
如果鑒定為兩個都沒了,恭喜你 真他娘的是個人才。 不過還好你看到本文了,繼續往下看吧!
其實我已經修復生成環境的,為了演示,這裡用虛擬機做了下。好奇的小夥伴不要在生成環境嘗試(最好在成人陪同下哈,另外免責下後果與本人無關)!!!
具體過程如下:
簡述為:
a 找python與yum的rpm包:
在同樣系統的伺服器上使用yumdownloader 命令 將rpm包下載到另一台伺服器上,然後搞到這個伺服器上:
yumdownloader python python-libs python-devel python-devel python-pycurl python-urlgrabber python-setuptools rpm-python yum-utils yum yum-metadata-parser yum-plugin-aliases yum-plugin-protectbase yum-plugin-fastestmirror python-kitchen python-chardet
或者
注意找與自己系統版本一致的源下的如下的rpm包:
例如:centos7.2.151 源地址為: http://vault.centos.org/7.2.1511/os/x86_64/Packages/ 注意替換版本就行了官方源
- python-2.7.5-34.el7.x86_64.rpm
- python-libs-2.7.5-34.el7.x86_64.rpm
- python-devel-2.7.5-34.el7.x86_64.rpm
- python-iniparse-0.4-9.el7.noarch.rpm
- python-pycurl-7.19.0-17.el7.x86_64.rpm
- python-urlgrabber-3.10-7.el7.noarch.rpm
- python-setuptools-0.9.8-4.el7.noarch.rpm
- rpm-python-4.11.3-17.el7.x86_64.rpm
- yum-utils-1.1.31-34.el7.noarch.rpm
- yum-3.4.3-132.el7.centos.0.1.noarch.rpm
- yum-metadata-parser-1.1.4-10.el7.x86_64.rpm
- yum-plugin-aliases-1.1.31-34.el7.noarch.rpm
- yum-plugin-protectbase-1.1.31-34.el7.noarch.rpm
- yum-plugin-fastestmirror-1.1.31-34.el7.noarch.rpm
- python-kitchen-1.1.1-5.el7.noarch.rpm
- python-chardet-2.2.1-1.el7_1.noarch.rpm
將如上源 wget到本地
b 安裝下載的rpm包:
[root@test ~]# rpm -Uvh --replacepkgs python*.rpm [root@test ~]# rpm -Uvh --replacepkgs rpm-python*.rpm yum*.rpm
該過程如果出現依賴關係需要安裝其他的rpm包,可安裝提示查找安裝,切勿跳過!
c 安裝完成,測試使用
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
詳解過程
1 刪除系統的python 與 yum (為了演示,自殘下)
系統環境 以及安裝包數量

嘗試刪除系統python,rpm直接-e刪除會看到很多依賴,但是沒刪除成功

用yum刪除下,這次也沒成功,顯示python被系統保護,這是必須的python對於系統很重要。這也說明呀一般的手抖是刪除不掉centos7 的python

加點參數總算搞掉了:
rpm -qa |grep python|xargs rpm -ev --allmatches --nodeps rpm -qa|grep yum|xargs rpm -ev --allmatches --nodeps whereis python |xargs rm -fr whereis yum |xargs rm -fr

參照圖一刪除了77個rpm包。。 yum已經報銷,python都沒了

這是把yum也刪了,又少了個幾個包。。。

開始修復,還好wget能用,如果不能用,那就試試rsync nc 等等傳輸rpm包,
下圖為下載了部分rpm包,安裝的時候會報依賴關係,莫慌,去找 去下,然後安裝,如果在報依賴關係,繼續去找去下去安裝,穩住。。。

見到這個可以送一口氣了,這是python修復成功

然後去修yum 這是當時遇到依賴問題,已經把這些包都放到簡略的步驟里了。

渡劫成功,少年,python和yum已經可用了


另一種下載rpm包的方法,更快,但是需要一台同樣環境的伺服器:

這裡是有包了,沒有命令

這裡是批量把包裝了上:

另外錯誤姿勢示範:有包也裝不上,這是依賴關係處理不當

故事到此為止。
++++++++++++++++++++++++++++++++++++++++++
怎麼說,這個故事告訴我們: ① 新同學的崗前培訓很重要(這是個實習生搞得),你好他也好。你省的麻煩,他省得擔驚受怕,職業生涯受挫。
② 運維同學不出手則已,一出手必須解決問題。其實我在看了環境後問了句能不能重裝,先把後路給鋪好,也是體現咱職業技術的時候。
最後,雞湯一碗,早點休息,不然眼黑,手抖,指不定敲了什麼命令自己也不知道。多休息也能捍衛髮際線! md 過不去的梗,髮際線~<~