更換yum源的流程
-
檢視目前yum程式
$ rpm -qa|grep yum
這裡推薦将其結果截屏或拷貝出來,以免後面報錯修複。
-
删除原有yum源
$ rpm -aq | grep yum|xargs rpm -e --nodeps
-
判斷自己的系統适合哪個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源)
-
使用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檔案,點選連結用浏覽器或迅雷下載下傳。下載下傳檔案到本地再上傳到伺服器上。
-
安裝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
最後兩個包一起裝,不然會報錯,因為他們之間存在依賴關系.
-
更改yum源
#我們使用網易的CentOS鏡像源
$ cd /etc/yum.repos.d/
$ rm -f /etc/yum.repos.d/redhat.repo
-
清理yum緩存
$ yum clean all # 清除原有緩存
$ yum makecache # 将伺服器上的軟體包資訊緩存到本地,以提高搜尋安裝軟體的速度 #
$ yum update
現在可以使用CentOS的yum源線上安裝軟體了!
-
參考教程:
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個提示資訊隻剩下一個:
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記錄下來所有的軟體,用于後期比較。發現有缺少的東西最好補上,說不定就能解決問題。
如果你覺得文章寫得還不錯,歡迎打賞、關注、收藏本站。
對于文章内容,部落客盡量做到真實可靠,并對所引用的内容附上原始連結。但也會出錯,如有問題,歡迎留言交流~
若标題前沒有“[轉]”标記,則代表該文章為本人(司徒鮮生)所著,轉載及引用請注明出處,謝謝合作!
本站首頁:http://www.cnblogs.com/stxs/
最新部落格見CSDN:https://blog.csdn.net/qq_45887327