在 Ubuntu 上嘗試保持 Snap 應用的更新可能會讓人有點沮喪。有時,你運行sudo snap refresh它時它就卡住了……或者某個軟體包莫名其妙地拒絕更新。問題的原因並不總是顯而易見的——網路問題、依賴關係,或者可能只是一個多餘的鎖定檔案。因此,本指南將指導您如何排除更新過程中的故障,並確保您的 Snap 軟體包保持最新狀態,而不會在過程中破壞所有內容。

基本上,如果你想讓你的應用程式(例如 Firefox、Spotify 或 VS Code)保持安全並獲得這些酷炫的新功能,你必須確保它們正確更新。這不僅僅是為了方便——過時的 Snap 軟體包可能意味著安全漏洞或錯誤,而這些漏洞可能早就被修復了。雖然可能需要一些反覆試驗,甚至可能需要一些命令列操作,但最終,你的應用應該保持最新且可靠。

如何在 Ubuntu 上修復 Snap 軟體包更新

檢查 Snapd 是否正常運作

首先,您需要確保 Snap 守護程式 ( snapd) 正常運作。有時,更新失敗是因為snapd掛起或行為異常。若要檢查它是否處於活動狀態,請開啟終端機Ctrl + Alt + T並輸入:

systemctl status snapd

如果您看到“active (running)”,則表示一切正常。如果沒有,請嘗試使用以下命令啟動它:

sudo systemctl start snapd

並使其在啟動時自動啟動:

sudo systemctl enable snapd

由於某些原因,在某些設定下,Snapd可能會處於異常狀態,需要重新啟動或重新啟動服務。如果狀態異常,只需重新啟動計算機,然後再次嘗試刷新。

確保沒有鎖定檔案阻止更新

有時,先前的更新程序會崩潰或留下鎖定文件,導致新的更新無法生效。請檢查/var/lib/dpkg/lock或處的鎖定檔案/var/lib/snapd/lock。運行:

ls -l /var/lib/lock

如果你看到任何與 snap 或 dpkg 相關的程序,最好將其刪除,但務必謹慎。例如:

sudo rm /var/lib/dpkg/lock /var/lib/dpkg/lock-frontend /var/lib/snapd/lock

這不是一件可以輕易做的事情——有時最好重新啟動或使用top以查看是否有任何更新進程仍在運行並先終止它們。

通常,重新啟動可以很好地解決這個問題,因此如果您不確定,請嘗試一下。

強制刷新並顯示詳細輸出

如果通常的方法sudo snap refresh不起作用或掛起,請嘗試使用詳細日誌記錄強制刷新以查看其停頓的位置:

sudo SNAPD_DEBUG=1 snap refresh --verbose

這可能會提供一些線索,例如網路逾時或依賴項衝突,從而導致更新失敗。有時,當 Wi-Fi 不穩定或 DNS 出現問題時,Snap 會卡住。請確認您的網路連線穩定,然後再次執行該命令。

清除並重置 Snap 的緩存

損壞的快取會影響更新。清除快取可能會有所幫助:

sudo rm -rf /var/snap/cache/*

然後重試:

sudo snap refresh

注意:刪除快取時請謹慎;雖然安全,但有時會刪除您可能想要保留的內容。在較新的 Ubuntu 版本中,這通常是安全的,並且可能會修復一些奇怪的更新錯誤。

更新 Snap 本身並檢查日誌

如果其他所有方法都失敗了,請查看你的snapd版本是否已過期或損壞。運行:

snap version

如果您發現它snapd已過時,請透過以下方式更新:

sudo apt update && sudo apt upgrade snapd

然後再試一次。

更深入檢查系統日誌,找出snapd操作期間的錯誤:

journalctl -u snapd

這可以揭示潛在問題,例如權限錯誤或服務衝突。請先修復這些問題,然後再試一次。

額外提示和常見陷阱

有時,某個特定應用程式會拒絕更新,或是某個鎖定檔案會一直阻止更新進程。我看過一些設置,在清理鎖定或更新snapd後重啟即可解決問題。此外,對於大型更新,執行以下命令會很有幫助:

sudo snap refresh --list查看哪些內容待處理,然後只刷新這些內容。密切關注你的網路——我知道這很明顯,但我無法告訴你有多少次更新因為 DNS 或代理問題而停滯。

如果更新很頑固,請考慮刪除並重新安裝有問題的快照,但這通常是最後的手段。

包起來

更新 Snap 軟體包並不總是那麼簡單,尤其是當出現奇怪的問題時。通常情況下,請確保snapd運作順暢、清除鎖定並檢查網路即可。如果以上方法都無效,強制刷新並顯示詳細輸出或重置快取可能會有所幫助。當然,Linux 仍然會以最令人沮喪的方式給我們帶來驚喜。

概括

  • 檢查snapd是否處於活動狀態並根據需要重新啟動
  • 尋找鎖定檔案並謹慎清除
  • 強制刷新並輸出詳細輸出以進行故障排除
  • 如果更新仍然失敗,請清除快取
  • 如果需要,請更新snapd本身
  • 檢查日誌中是否有潛在錯誤

希望這能有所幫助

希望這能為某些人節省幾個小時,並且你的軟體包也能保持更新,不會太麻煩。總是會有一些小問題,但大多數情況下,只要你仔細研究一下,就能解決。祝你好運。