Linux中國

如何清理 Snap 保留的舊軟體包以釋放磁碟空間

這個帶有腳本的快速指南有助於清理舊的 Snap 軟體包,並釋放 Ubuntu 系統中的一些磁碟空間。

我的 Ubuntu 測試系統中出現磁碟空間不足。因此,我通過 GNOME 的磁碟使用分析器進行調查,以找出哪個軟體包正在消耗寶貴的 SSD 空間。除了通常的緩存和主目錄,令我驚訝的是,我發現 Snap 和 Flatpak 消耗了大量的存儲空間。

Snap size – before cleanup

我始終堅持一個規則:除非必要,否則不要使用 Snap 或 Flatpak。這主要是因為它們的安裝大小和一些其他問題。我更喜歡原生 deb 和 rpm 包。多年來,我在這個測試系統中安裝和移除了一些 Snap 包。

問題出現在卸載後。Snap 在系統中保留了一些殘留文件,而一般用戶不知道。

所以我打開了 Snap 文件夾 /var/lib/snapd/snaps,發現 Snap 會保留以前安裝/卸載的軟體包的舊版本。

例如,在下圖中,你可以看到 GNOME 3.28、3.34 和 Wine 這些都被刪除了。但它們還在那裡。這是因為 Snap 設計上在正確卸載後保留已卸載軟體包的版本。

Files under snaps directory

或者,你可以在終端中使用:

snap list --all

snap list all

對於保留的版本數量,默認值為 3。這意味著 Snap 會保留每個軟體包的 3 箇舊版本,包括當前安裝版本。如果你對磁碟空間沒有限制,這是可以的。

但是對於伺服器和其他場景,這很容易遇到成本問題,消耗你的磁碟空間。

不過,你可以使用以下命令輕鬆修改計數。該值可以在 2 到 20 之間。

sudo snap set system refresh.retain=2

清理 Snap 版本

在 SuperUser 的一篇文章中,Canonical 的前工程經理 Popey 提供了一個簡單的腳本 可以清理舊的 Snap 版本並保留最新版本。

這是我們將用來清理 Snap 的腳本。

#!/bin/bash
 #Removes old revisions of snaps
 #CLOSE ALL SNAPS BEFORE RUNNING THIS
 set -eu
 LANG=en_US.UTF-8 snap list --all | awk '/disabled/{print $1, $3}' |
     while read snapname revision; do
         snap remove "$snapname" --revision="$revision"
     done

將上述腳本以 .sh 格式保存在目錄中(例如 clean_snap.sh),賦予其可執行許可權並運行。

chmod +x clean_snap.sh

當我運行腳本時,它減少了很多磁碟空間。該腳本還將顯示要刪除的包的名稱。

Executing the script

Snaps size after cleanup

結束語

關於 Snap 的設計效率如何,人們總是爭論不休。許多人說,它的設計是糟糕的,是臃腫的,且消耗系統資源。該論點的某些部分是正確的,我不會否認。如果正確實施和增強,沙盒應用的整個概念就很棒。我相信,與 Snap 相比,Flatpak 做得更好。

也就是說,我希望這可以幫助你清理一些磁碟空間。儘管它只在 Ubuntu 中進行了測試,但它應該適用於所有支持 Snap 的 Linux 發行版。

此外,請查看我們關於 如何清理 Ubuntu 的指南以及其他步驟。

最後,如果你正在尋找清理 Flatpak 應用,請參閱 這個指南

via: https://www.debugpoint.com/clean-up-snap/

作者:Arindam 選題:lkxed 譯者:geekpi 校對:校對者ID

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國