[問題解決]RedHat7更換CentOS7的yum源時踩過的坑


 

更換yum源的流程

  1. 查看當前yum程序

    $ rpm -qa|grep yum

    這里推薦將其結果截屏或拷貝出來,以免后面報錯修復。

  2. 刪除原有yum源

    $ rpm -aq | grep yum|xargs rpm -e --nodeps

  3. 判斷自己的系統適合哪個CentOS源

    放在第一位的判斷標准就是系統自帶python的版本。

    如果自帶python2.6版本,那么你比較適合CentOS 6.9系統,你所需要的rpm包的存放地址為

    http://mirrors.163.com/centos/6.9/os/x86_64/Packages/

    如果自帶Python2.7版本,那么你比較適合CentOS 7.0系統,你所需要的rpm包的存放地址為

    http://mirrors.163.com/centos/7/os/x86_64/Packages/

    (我這里演示的就是安裝CentOS7的yum源)

  4. 使用CentOS的yum源下載新的yum安裝包

    我就不推薦使用wget命令獲取rpm安裝包了,因為我懶得寫並且wget老是會下載不下來,這里推薦下面的方法:

    (如果網絡不好)推薦直接用瀏覽網頁http://mirrors.163.com/centos/7/os/x86_64/Packages/,然后分別按關鍵詞python-iniparse,yum-metadata-parser,yum-,yum-plugin-fastestmirror搜索出對應的四個rpm文件,點擊鏈接用瀏覽器或迅雷下載。下載文件到本地再上傳到服務器上。

  5. 安裝yum源

    首先切換到rpm文件存放地址。

    $ rpm -ivh yum-metadata-parser-1.1.4-10.el7.x86_64.rpm

    $ rpm -ivh yum-3.4.3-158.el7.centos.noarch.rpm yum-plugin-fastestmirror-1.1.31-45.el7.noarch.rpm

    最后兩個包一起裝,不然會報錯,因為他們之間存在依賴關系.

  6. 更改yum源

    #我們使用網易的CentOS鏡像源

    $ cd /etc/yum.repos.d/

    $ rm -f /etc/yum.repos.d/redhat.repo

  7. 清理yum緩存

    $ yum clean all # 清除原有緩存

    $ yum makecache # 將服務器上的軟件包信息緩存到本地,以提高搜索安裝軟件的速度 #

    $ yum update

    現在可以使用CentOS的yum源在線安裝軟件了!

  8. 參考教程:

    https://www.cnblogs.com/wutengbiao/p/4188986.html

    https://www.cnblogs.com/eason-liu/p/5519585.html

    https://blog.csdn.net/u013605322/article/details/79726564

 

踩坑1:rpm版本過低

安裝yum-3.4.3-118.el7.centos.noarch.rpm時報錯了。

這是因為我的python-urlgrabber版本為小於3.10-8,可以用下面的命令來查看python-urlgrabber的版本。

$ rpm -qa|grep python-urlgrabber

可以使用下面的命令查看當前rpm命令的版本。

$ rpm –version

其中python-urlgrabber是很好更新的,在http://mirrors.163.com/centos/7/os/x86_64/Packages/搜索並下載python-urlgrabber-3.10-8.el7.noarch.rpm,然后使用命令安裝即可

$ rpm -Uvh python-urlgrabber-3.10-8.el7.noarch.rpm

 

至於rpm的更新我是踩了不少坑。開始覺得用rpm自我更新可能會出問題,然后打算想采用CentOS6.9的yum源,但是報錯結果是其依賴於python2.6。如果卸載系統自帶的python,那么yum命令和rpm命令都不能使用了。所以判斷這樣做更不合適。

直到參考了https://www.cnblogs.com/jym1/p/8088005.html,才明白可以用rpm包的方式更新rpm。

還是在http://mirrors.163.com/centos/7/os/x86_64/Packages/這里找到了rpm-4.11.3-25.el7.x86_64.rpm,然后使用命令(這個命令會不考慮依賴關升級rpm命令)

 

$ rpm -Uvh rpm-4.11.3-25.el7.x86_64.rpm --nodeps

如果命令里不加—nodeps,結果是這樣的:

升級完python-urlgrabber和rpm-4.11.3-25就可以使用rpm命令安裝yum了,詳細參考第一節的第五步。

 

但是由於rpm命令的升級沒有考慮他的依賴,所以在使用yum命令時經常會提示一些信息:

** Found 6 pre-existing rpmdb problem(s), 'yum check' output follows:

PackageKit-0.8.9-11.el7.x86_64 has missing requires of PackageKit-backend

anaconda-19.31.79-1.el7.x86_64 has missing requires of yum-utils >= ('0', '1.1.11', '3')

rhn-check-2.0.2-5.el7.noarch has missing requires of yum-rhn-plugin >= ('0', '1.6.4', '1')

rpm-build-4.11.1-16.el7.x86_64 has missing requires of rpm = ('0', '4.11.1', '16.el7')

rpm-libs-4.11.1-16.el7.x86_64 has missing requires of rpm = ('0', '4.11.1', '16.el7')

rpm-python-4.11.1-16.el7.x86_64 has missing requires of rpm = ('0', '4.11.1', '16.el7')

可以這樣做:使用yum命令來安裝或更新rpm和yum的依賴包。

$ yum install yum-utils

$ yum install yum-rhn-plugin

$ yum update rpm-build

$ yum update rpm-libs

$ yum update rpm-python

 

踩坑2:一直找不到PackageKit-backend

坑1解決后,6個提示信息只剩下一個:

** Found 6 pre-existing rpmdb problem(s), 'yum check' output follows:

PackageKit-0.8.9-11.el7.x86_64 has missing requires of PackageKit-backend

 

PackageKit-backend在任何一個rpm源里都是找不到的,我開始認為PackageKit應該是Redhat遺留下來的,二者不兼容,這里選擇將PackageKit卸載,重新安裝CentOS 7的PackageKit。

$ rpm -aq | grep PackageKit|xargs rpm -e --nodeps # 卸載PackageKit

然后使用yum命令時系統提示:

gnome-packagekit-3.8.2-10.el7.x86_64 has missing requires of PackageKit >= ('0', '0.5.0', None)

gnome-packagekit-3.8.2-10.el7.x86_64 has missing requires of PackageKit-device-rebind >= ('0', '0.5.0', None)

gnome-packagekit-3.8.2-10.el7.x86_64 has missing requires of PackageKit-libs >= ('0', '0.5.0', None)

gnome-packagekit-3.8.2-10.el7.x86_64 has missing requires of libpackagekit-glib2.so.16()(64bit)

gnome-settings-daemon-updates-3.8.6.1-9.el7.x86_64 has missing requires of libpackagekit-glib2.so.16()(64bit)

realmd-0.14.6-6.el7.x86_64 has missing requires of libpackagekit-glib2.so.16()(64bit)

 

這讓人很難受,下載CentOS 7的PackageKit,發現它的版本如下。使用yum命令安裝后系統提示缺失其他軟件,

這里就不列出來了。

仍然讓人很難受,無奈只好谷歌搜索PackageKit-0.8.9-11.el7.x86_64,在http://buildlogs-seed.centos.org/c7.00.02/PackageKit/20140529191922/0.8.9-11.el7.x86_64/ 找到了相應的rpm包。

將rpm包下載下來后,用rpm命令一一安裝。我這時想起來當時用rpm -qa|grep yum命令時有一條是PackageKit-yum*****,而我現在使用rpm -qa|grep yum所得到的結果沒有PackageKit-yum*****了,我就嘗試從這個網站上下載PackageKit-yum-0.8.9-11.el7.x86_64.rpm 和PackageKit-yum-plugin-0.8.9-11.el7.x86_64.rpm,使用rpm命令安裝,發現安裝了PackageKit-yum-0.8.9-11.el7.x86_64.rpm之后系統就不提示信息了,至此問題得到完滿解決。

 

另記:PackageKit似乎是用來自動更新軟件的,yum命令可能會被它占用很久,如果想要停止PackageKit自動更新,可以參考:centos7下yum升級被PackageKit鎖定

 

在這個過程中不僅更新了yum源,還更新了rpm命令,處理了包依賴的問題,消除了每一條系統提示信息。

這個過程給我的教訓就是:以后用rpm -aq | grep yum|xargs rpm -e --nodeps命令卸載軟件之前一定要使用rpm -qa|grep yum記錄下來所有的軟件,用於后期比較。發現有缺少的東西最好補上,說不定就能解決問題。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM