首頁 > 軟體

CentOS 6.4下yum安裝報錯範例

2020-06-16 17:19:11

說明:以下所有操作均是CentOS 6.4下由超級管理員完成

我一個朋友遇到這個問題,就是利用yum安裝的時候報錯。如圖:

當時他問我的時候,我一開始以為是Python版本不相容問題,可能是Python升級後帶來的問題,所以就給他說了兩種方法

1、修改yum組態檔:

vim /usr/bin/yum

修改第一行

#!/usr/bin/python 改為#!/usr/bin/python2.6.6

2、升級yum

然後我朋友讓我遠端幫他,當我遠端幫他修改這一行之後,又出現了新的問題。(此處沒有截圖)

找不到Python2.6.6,然後我解壓下載了Python2.6.5,然後安裝,安裝過程如下:

cd /usr/local/src/
wget 
tar xf Python-2.6.5.tar.bz2
cd Python-2.6.5
./configure
make && make install
#建立軟連線
mv /usr/bin/python /usr/bin/python2.6.6
ln -s /usr/local/bin/python2.7 /usr/bin/python
#檢查
python -V

安裝成功

然後執行yum,依然是這一問題,我想著是不是環境變數的問題,於是增加了環境變數

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

下載tar包:yum-3.4.3.tar.gz

可以到Linux公社資源站下載yum-3.4.3.tar.gz:

------------------------------------------分割線------------------------------------------

免費下載地址在 http://linux.linuxidc.com/

使用者名稱與密碼都是www.linuxidc.com

具體下載目錄在 /2017年資料/3月/16日/CentOS 6.4下yum安裝報錯範例/

下載方法見 http://www.linuxidc.com/Linux/2013-07/87684.htm

------------------------------------------分割線------------------------------------------

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,可以參考

CentOS 6.4升級Python過程總結:http://www.linuxidc.com/Linux/2017-03/141852.htm

更多YUM相關教學見以下內容

RHEL7 本地yum源設定 http://www.linuxidc.com/Linux/2017-01/139140.htm

CentOS 7 使用阿里雲的yum源、PIP源 http://www.linuxidc.com/Linux/2017-01/13966.htm

CentOS及Red Hat Linux安裝yum源  http://www.linuxidc.com/Linux/2017-02/140205.htm

CentOS 7更改yum源與更新系統 http://www.linuxidc.com/Linux/2017-01/140067.htm

RedHat7.0設定本地yum源  http://www.linuxidc.com/Linux/2017-01/139148.htm 

軟體包管理之前端管理工具yum  http://www.linuxidc.com/Linux/2017-02/140270.htm

CentOS 7 使用阿里雲的yum源、PIP源 http://www.linuxidc.com/Linux/2017-01/13966.htm

本文永久更新連結地址http://www.linuxidc.com/Linux/2017-03/141851.htm


IT145.com E-mail:sddin#qq.com