Yum(全稱為 Yellow dog Updater, Modified)是一個在Fedora和RedHat以及CentOS中的Shell前端軟件包管理器,基于RPM包管理,能夠從指定的服務器自動下載RPM包并且安裝,可以自動處理依賴性關系,并且一次安裝所有依賴的軟件了,但小編在使用yum更新遇到依賴錯誤了,下面給各位整理這些問題與處理辦法.
redhat系列linux系統的yum,有時會出現錯誤的依賴,用linux早期,遇到該類問題簡直是束手無策,無奈之下會在yum的“教唆“下使用“--skip-broken”參數,有時確實可以解決問題,但有時的后果,可以把系統玩兒壞,下次啟動無法啟動,或出現其它莫名其妙的問題.
列一個典型的錯誤依賴消息如下:
--> 正在處理依賴關系 /usr/sbin/ldconfig,它被軟件包 libva1-1.3.1-11.el7.x86_64 需要
--> 正在處理依賴關系 /usr/sbin/ldconfig,它被軟件包 libmad0-0.15.1b-4.el7.x86_64 需要
--> 正在處理依賴關系 /usr/sbin/ldconfig,它被軟件包 librtmp0-2.3-1.el7.x86_64 需要
--> 正在處理依賴關系 /usr/sbin/ldconfig,它被軟件包 libx264_142-0.142-20_20140406.2245.el7.x86_64 需要
--> 正在處理依賴關系 /usr/sbin/ldconfig,它被軟件包 libxvidcore4-1.3.2-15.el7.x86_64 需要
.......
- 錯誤:軟件包:libmad0-0.15.1b-4.el7.x86_64 (@atrpms)
 - 需要:/usr/sbin/ldconfig
 - 正在刪除: glibc-2.17-55.el7_0.1.i686 (@updates)
 - 未找到
 - 更新,由: glibc-2.17-55.el7_0.3.i686 (updates)
 - 未找到
 - 錯誤:軟件包:librtmp0-2.3-1.el7.x86_64 (@atrpms)
 - 需要:/usr/sbin/ldconfig
 - 正在刪除: glibc-2.17-55.el7_0.1.i686 (@updates)
 - 未找到
 - 更新,由: glibc-2.17-55.el7_0.3.i686 (updates)
 - 未找到
 
您可以嘗試添加 --skip-broken 選項來解決該問題
您可以嘗試執行:rpm -Va --nofiles --nodigest
看到了最后兩行了吧,通常別聽信它,小心,為了優雅的處理類似錯誤依賴的問題,要搞先了解一下該問題的原因,通常是在自己手動安裝了一些非官方rpm包,或使用了多個yum源所致,尤其是升級安裝了新版本的包,例如,在centos里為了安裝某些軟件而使用fedora里的包升級了系統自帶的包.
個人經驗如下:
先移除/etc/yum.repo.d/下非系統官方的源,備份到其它目錄里,處理好問題后還移回來繼續用.
yum list 查看系統都有哪些源的包,除了@base @anaconda @updates 之外的,都要留意一下,按“靠譜”程度從低到高逐漸移除。這里的“靠譜程度”,要憑一些經驗的。 如本文前面列出錯誤依賴的這個例子,本人用了好多個源的包,@epel @atrpms @nux-dextop @google-chrome 等這幾個第三方源,epel是很高質量的,google-chrome 只有chrome瀏覽器,其它幾個就是不太靠譜的,先移除它們。
檢查yum list列出的包名,是否用了fedora,或非本機架構的等的包(如x64系統下686的包),yum erase移除它們。卸載包時,注意著,別把重要的系統包卸載了。千萬別這樣帶-y 參數據 yum erase {包名} -y,yum erase 卸載某個包時,系統提示會提示都移除哪些包,如果看著不對勁就按 N
最后,你會找到出問題的那個包名,即提示錯誤依賴的信息.
- --> 正在處理依賴關系 /usr/sbin/ldconfig,它被軟件包 libbluray1-0.4.0-6.el7.x86_64 需要
 - --> 解決依賴關系完成
 - 錯誤:軟件包:libbluray1-0.4.0-6.el7.x86_64 (@atrpms)
 - 需要:/usr/sbin/ldconfig
 - 正在刪除: glibc-2.17-55.el7_0.1.x86_64 (@updates)
 - 未找到
 - 更新,由: glibc-2.17-55.el7_0.3.x86_64 (updates)
 - 未找到 //Vevb.com
 
您可以嘗試添加 --skip-broken 選項來解決該問題
您可以嘗試執行:rpm -Va --nofiles --nodigest
會類似上面所示,只是少數一兩個包,嘗試卸載一下看看.
[root@fsc ~]# rpm -e libbluray1-0.4.0-6.el7.x86_64
錯誤:依賴檢測失敗:
- libbluray.so.1()(64bit) 被 (已安?) gvfs-1.16.4-7.el7.x86_64 需要
 - libbluray.so.1()(64bit) 被 (已安?) gvfs-fuse-1.16.4-7.el7.x86_64 需要
 - libbluray.so.1()(64bit) 被 (已安?) gvfs-afc-1.16.4-7.el7.x86_64 需要
 - libbluray.so.1()(64bit) 被 (已安?) gvfs-gphoto2-1.16.4-7.el7.x86_64 需要
 - libbluray.so.1()(64bit) 被 (已安?) gvfs-goa-1.16.4-7.el7.x86_64 需要
 - libbluray.so.1()(64bit) 被 (已安?) gvfs-mtp-1.16.4-7.el7.x86_64 需要
 - libbluray.so.1()(64bit) 被 (已安?) gvfs-smb-1.16.4-7.el7.x86_64 需要
 - libbluray.so.1()(64bit) 被 (已安?) gvfs-afp-1.16.4-7.el7.x86_64 需要
 - libbluray.so.1()(64bit) 被 (已安?) gvfs-archive-1.16.4-7.el7.x86_64 需要
 - libbluray.so.1()(64bit) 被 (已安?) libbluray-0.4.0-6.el7.x86_64 需要
 - libbluray1 = 0.4.0-6.el7 被 (已安?) libbluray-0.4.0-6.el7.x86_64 需要
 
那查查系統里該包是什么版本吧 rpm -q {包名}
上面例子里,該包是atrpms源的包,比centos源里的包新。回憶時當時為了安裝smplayer,裝了一系列atrpms的包,而印象中,atrpms源有時會升級centos的包,所以就造成了yum update 升級系統時造成錯誤依賴。到centos鏡像里下載這個rpm包,rpm --force -Uvh {包文件路徑}覆蓋安裝一下,然后再yum更新試試。
如果沒有問題,那就好了,再把yum 源的配置文件移回去,重新yum makecache,然后根據剛才卸載的包的記錄,把它們安裝上,可參考history 命令的記錄.
新聞熱點
疑難解答