linux中yum更新遇到依賴錯誤問題解決辦法

來源:互聯網
上載者:User

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)
              未找到
 您可以嘗試添加 --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 命令的記錄.

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.