說明:如下全部操做均是由超級管理員完成node
我一個朋友遇到這個問題,就是利用yum安裝的時候報錯。如圖:python
當時他問個人時候,我一開始覺得是Python版本不兼容問題,多是Python升級後帶來的問題,因此就給他說了兩種方法linux
一、修改yum配置文件:vim
vim /usr/bin/yum
修改第一行centos
#!/usr/bin/python 改成#!/usr/bin/python2.6.6
二、升級yumbash
而後我朋友讓我遠程幫他,當我遠程幫他修改這一行以後,又出現了新的問題。(此處沒有截圖)ide
找不到Python2.6.6,而後我解壓下載了Python2.6.5,而後安裝,安裝過程以下:url
cd /usr/local/src/ wget tar xf Python-2.6.5.tar.bz2 cd Python-2.6.5 ./configure make && make install #建立軟鏈接 ln -s /usr/local/bin/python2.6.5 /usr/bin/python #檢查 python -V
安裝成功spa
而後執行yum,依然是這一問題,我想着是否是環境變量的問題,因而增長了環境變量3d
echo "export PATH=/usr/bin/python:$PATH" >> /etc/profile source /etc/profile
又出現了沒有權限的問題,而後我仍是將配置文件修改成
#!/usr/bin/python2.6.6
而後執行,出現了No module named yum問題 ,查看Python路徑
而後發現Python路徑混亂比較混亂。一樣的有三種方法解決這一問題。
方法一:
就是修改文件 /usr/bin/yum,將那一行修改,可是很明顯不能夠,網上看是由於設置了環境變量,又安裝了其餘的Python版本,出現了鏈接混亂,致使yum找不到Python路徑,因而將環境變量註釋而後從新運行了環境變量,問題依然沒有解決,而後嘗試第二種方法。
方法二:
就是將Python回滾到默認的2.6.6版本。執行了下面兩行。
rpm -qa | grep python- | grep 2.6 rpm -ivh --force --nodeps
可是禍不單行,執行第二句代碼的時候出現報錯(因爲這是問題解決後才寫的文檔,因此此處的錯誤並無截圖)
很無奈,只好嘗試第三種方法。
方法三:
下載RPM包(根據本身的版本選擇)
python-2.6.6-36.el6.x86_64.rpm yum-metadata-parser-1.1.2-14.1.el6.x86_64.rpm yum-3.2.29-40.el6.centos.noarch.rpm yum-plugin-fastestmirror-1.1.30-30.el6.noarch.rpm #執行安裝 rpm -ivh --force --nodeps *.rpm
到http://yum.baseurl.org/wiki下載tar包:yum-3.4.3.tar.gz
tar xf yum-3.4.3.tar.gz cd yum-3.4.3 ./yummain.py update
很顯然這個方法也不適用,還比較麻煩。
我再次嘗試着從新安裝yum和Python。如下是過程:
下載須要的RPM包到此目錄。(要下載的包看你的系統版本號,只要和你的系統版本號一致便可)
cd /usr/local/src/Python-2.6.6 #此目錄看你的系統版本號
python-2.6.6-36.el6.x86_64.rpm python-urlgrabber-3.9.1-8.el6.noarch.rpm python-devel-2.6.6-36.el6.x86_64.rpm python-libs-2.6.6-36.el6.x86_64.rpm yum-3.2.29-40.el6.centos.noarch.rpm
而後執行安裝
rpm -Uvh --replacepkgs *.rpm
#執行這一步的時候我朋友問我--replacepkgs的做用,這裏我說明一下,這個參數的意思是用一個副本替換一個包,當咱們遇到須要重複安裝軟件包的時候,可是通常會報錯,若是想要繼續重複安裝,就會用到這個參數。
與這個參數相關的參數還有以下幾個:
--replacefiles #替換另外一個包所擁有的文件,即就是軟件包在安裝的時候有某個文件已經被其餘軟件包安裝調用過,再次安裝就會報錯,若是想要繼續再次安裝,就會用這個參數。
--nodeps #安裝或者升級的時候不檢查依賴,即當安裝的軟件包所須要的依賴未安裝的時候,就會報錯,如果仍然要安裝,就會用到這個參數。
--force #忽略包和文件的衝突強制安裝,此方法不建議。
--oldpackage #容許升級到比較舊的軟件包。通常當新安裝的軟件包出現兼容問題等的時候會用到此參數,將軟件包升級到比較老的版本。
再次使用yum的時候應該來講就行了,可是使人頭疼的是又再次報了一開始的錯
當我再一次查看報錯的時候,發現了一個問題
我想是否是由於這個文件的問題呢?
因而我進入/lib64此目錄,而後將嘗試將librt.so.1文件更名
mv librt.so.1 librt.so.1.bak
結果再次運行出現以下的錯
提示找不到這個文件,我趕忙將這個文件還原,可是此次不管如何都不能還原
我想嘗試重啓,然而也不能執行這一操做
我查看了這個文件的屬性,發現他是一個librt-2.12.so的鏈接文件。我就想,既然是鏈接文件,那麼可不能夠再作一個軟鏈接呢?
可是很快我就發現什麼操做都不能作了。
那麼怎麼辦呢?就在我爲難的時候,我朋友將另外一臺同環境的服務上的librt.so.1這個文件拷貝到了此服務上面,而後再次運行yum,結果此次yum運行正常
總結:我想應該是librt.so.1這個文件出錯致使的。
後來我查了一下這個文件,原來librt.so是glibc中對real-time部分的支持庫。
linux 下有動態庫和靜態庫,動態庫以.so爲擴展名,靜態庫以.a爲擴展名。若是感興趣的能夠本身再去查看更多的關於這個文件的知識。
其實此文檔中已經包含了如何正確的升級Python,能夠參考博客
centos6.4升級Python過程總結: