2014年3月11日 星期二

解決「YUM 更新時,出現套件版本衝突」的問題

最近在更新一台電腦的作業系統時,覺得更新的過程怪怪的,出現版本衝突的問題。可是檢查該版本套件又實際已安裝在系統中。想說是某次正新更新時,不小心把電腦關了,造成更新不正常結束。就試著將之前可能的未完成更新繼續完成,
[root@M2400 ~]# yum-complete-transaction
No unfinished transactions left.
由結果訊息判斷,應該是沒有未完成的更新才對。可是,明明更新過程就覺得不太正常,有時還會出現套件版本衝突的錯誤訊息(忘了將訊息複製、就不貼上來)。試著用其它方法查看看,是否有其它原因造成這種現像,
[root@M2400 ~]# yum list | grep installed
abrt.i6862.1.12-2.fc20installed
abrt-addon-ccpp.i6862.1.12-2.fc20installed
abrt-addon-kerneloops.i686    2.1.12-2.fc20    installed
abrt-addon-pstoreoops.i6862.1.12-2.fc20installed
abrt-addon-python.i6862.1.12-2.fc20installed
abrt-addon-vmcore.i6862.1.12-2.fc20installed
abrt-addon-xorg.i6862.1.12-2.fc20installed
 . . . . .
赫然發現了許多出現『installed』狀態的套件,找了一下前面提過出現版本衝突的套件也在其中。分析『yum update』的更新過程,有『下載套件差異檔(.drpm)』、『重建安裝檔(.rpm)』、『下載完整套件(無套件差異檔者)』、『套件完整性檢查』、『更新』、『清除舊版本套件』及最後的『驗證』。上述的『install』狀態,應該是 YUM 在最後的『清除舊版本套件』或『驗證』階段被中斷所致,所以出現『installed』,但是之後的更新卻找不到最後完整安裝的資訊紀錄。
  有線索就試試看,將有問題的套件(:特定版本)一一移除,
[root@M2400 ~]# yum remove abrt-2.1.12-2.fc20.i686 abrt-addon-ccpp-2.1.12-2.fc20.i686 abrt-addon-kerneloops-2.1.12-2.fc20.i686 abrt-addon-pstoreoops-2.1.12-2.fc20.i686 abrt-addon-python-2.1.12-2.fc20.i686 abrt-addon-vmcore-2.1.12-2.fc20.i686 abrt-addon-xorg-2.1.12-2.fc20.i686 . . . . .
將有問題的套件移除後,再下一般更新命令,
[root@M2400 ~]# yum update
就一切恢復正常了。

移除套件時,只能移除出問題的特定版本。未指定套件版本時,會將整個套件的各版本全部移除,可能造成系統無法正常開機。

  有關 YUM 命令的其它相關發文請自行參考:

已測試版本:

  • Fedora: 20

沒有留言:

張貼留言

感謝你耐心看完本文,歡迎留下任何指正、建議,筆者會儘快回應。(English is also welcome.)