創用 CC 授權條款
除非另有註明,本網站的著作Fygul Hether製作,以創用CC 姓名標示-非商業性-禁止改作 4.0 國際 授權條款釋出。

2020年11月4日 星期三

Ubuntu錯誤:套件有未滿足的相依關係-2

解決方法

類似這類的套件依賴問題,可查到一些文章提到幾種不同的解決方法,用在不同的情況,從中挑選了兩篇列在後面的參考,以下只做點簡單的說明。Aptitude是用來解決前述問題的方法;後面的其他幾個則是用在其他情況。

Aptitude

Aptitiude並不是預裝的,要額外安裝:sudo apt install aptitude 。上回使用Aptitiude已經是好幾年前的事,都快忘了它的存在。它也是個套件管理器,用法類似apt或apt-get,但有著不一樣的功能。若以狀況一而言,安裝時把apt改成aptitiude:sudo aptitude install libreoffice-help-zh-tw 顯示:


以下新套件將會安裝:        
  libreoffice-help-zh-tw{b} libreoffice-l10n-zh-tw{a} 
0 個套件升級, 2 個新安裝, 0 個將移除且 0 個不會升級.
需要下載 2,853 kB 的歸檔檔案. 解裝後將用去 24.9 MB.
以下套件含有相依性:
 libreoffice-help-zh-tw : 相依關係: libreoffice-help-common (= 1:6.4.2-0ubuntu3) but 1:6.4.6-0ubuntu0.20.04.1 is installed
以下動作會解決這些相依問題:

     保持 下列套件於其當前版本:        
1)     libreoffice-help-zh-tw [尚未安裝]



是否接受該解決方案?[Y/n/q/?]

上述Aptitude提供了一個解決方案,但並沒有真正解決相依問題,所以不接受,按 n ,它會再提供另一個方案,比如把 libreoffice-help-common 的版本降級到 1:6.4.2-0ubuntu3 ,這樣就可符合所需的相依條件,就可以按 Y 進行後續安裝工作。如果再按 n ,它會再提供下一個方案,若已顯示過全部方案,就會重回到第一個,所以可以先看完所有方案之後,做個比較,挑選其中最合適的方案。

清理套件檔

未滿足的相依錯誤的另一種可能原因是已下載的套件檔有損壞而無法正確安裝,此時將其刪除即可。執行apt-get不加指令可顯示幫助,其中列了幾個指令可協助這件事:


check - 檢查相依關係是否有問題
clean - 刪除已下載的套件檔
autoclean - 刪除已下載但已有新版本的套件檔

apt-get的-f選項

apt-get有個 -f, --fix-broken 選項用來修正壞掉的依賴。sudo apt-get -f install讓APT去推論可能的解法。

Disable/Remove/Purge PPAs

若是遇到的相依問題是出自某PPA (Personal Package Archives),可考慮將該PPA停用Disable,不再更新。進入“軟體與更新”,“其他軟體”頁,找到該PPA後,將其前面的勾拿掉。

或把PPA的源移除Remove,同樣可用“軟體與更新”;或者用命令:sudo add-apt-repository --remove ppa:xxx 。xxx代表PPA的名稱字串。

如果想把已裝PPA的軟體清理掉Purge,改回APT的版本,先安裝ppa-purge,再用它清理已裝的PPA軟體:


$ sudo apt install ppa-purge && sudo ppa-purge ppa:xxx

再視情況自行決定是否要移除軟體,或apt-get clean之類的動作。

注意事項

以Aptitude或其它方法解決此問題時,可能會刪除某些意想不到的套件,而有其他後遺症,如狀況三所述。除了刪除當時注意一下顯示的訊息,事後也可以檢查記錄檔,特別是以下幾個,以查出被刪了什麼東西:

  • aptitude
  • dpkg.log
  • syslog

可以利用“記錄檔檢視器”或到 /var/log 來查看日誌檔。譬如在dpkg.log中發現:


2020-10-10 20:01:45 status installed ubuntu-minimal:amd64 1.450.2
2020-10-10 20:01:45 remove ubuntu-minimal:amd64 1.450.2 <無>
2020-10-10 20:01:45 status half-configured ubuntu-minimal:amd64 1.450.2
2020-10-10 20:01:45 status half-installed ubuntu-minimal:amd64 1.450.2
2020-10-10 20:01:45 status config-files ubuntu-minimal:amd64 1.450.2
2020-10-10 20:01:45 status not-installed ubuntu-minimal:amd64 <無>

ubuntu-minimal被移除了,不清楚這套件做什麼用的?可以利用Synaptic來查看套件的作用與依賴關係,一查發現前述有線網路不通的問題與此有關,將此套件裝回去即可。

下回安裝其他軟體時,可能仍會出現類似的相依問題,同樣用Aptitude來解決。

也可能發現某些原本可用的軟體不見了,極可能就是被意外移除了,重新裝回去即可。不清楚套件名稱,如何安裝?同樣請多多利用Synaptic,圖形工具用起來很直觀,這裡就不介紹怎麼用了。

還有,記得使用穩定的鏡像服務器,更換好也記得務必要更新一下。

參考

  1. How to Fix Unmet Dependencies Error on Ubuntu
  2. What is the step-by-step procedure to fix the "The following packages have unmet dependencies"?
  3. apt-get - APT package handling utility

沒有留言:

張貼留言