天天看點

[問題解決]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時報錯了。

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

這是因為我的python-urlgrabber版本為小于3.10-8,可以用下面的指令來檢視python-urlgrabber的版本。

$ rpm -qa|grep python-urlgrabber

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

可以使用下面的指令檢視目前rpm指令的版本。

$ rpm –version

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

其中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指令都不能使用了。是以判斷這樣做更不合适。

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

直到參考了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

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

如果指令裡不加—nodeps,結果是這樣的:

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

更新完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個提示資訊隻剩下一個:

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指令安裝後系統提示缺失其他軟體,

這裡就不列出來了。

[問題解決]RedHat7更換CentOS7的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包。

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

将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記錄下來所有的軟體,用于後期比較。發現有缺少的東西最好補上,說不定就能解決問題。

如果你覺得文章寫得還不錯,歡迎打賞、關注、收藏本站。

對于文章内容,部落客盡量做到真實可靠,并對所引用的内容附上原始連結。但也會出錯,如有問題,歡迎留言交流~

若标題前沒有“[轉]”标記,則代表該文章為本人(司徒鮮生)所著,轉載及引用請注明出處,謝謝合作!

本站首頁:http://www.cnblogs.com/stxs/

最新部落格見CSDN:https://blog.csdn.net/qq_45887327

繼續閱讀