如何清除旧版本 Snap 包以释放磁盘空间

这个带有脚本的快速指南有助于清理旧的快照版本,并在 Ubuntu 系统中释放一些磁盘空间。

我的 Ubuntu 测试系统磁盘空间不足。因此,我正在通过 GNOME 的磁盘使用情况分析器进行查看,以找出哪个软件包正在消耗宝贵的 SSD 空间。除了通常的缓存和主目录之外,令我惊讶的是,我发现 Snap 和 Flatpak 占用了相当大的存储空间。

尽管如此,我始终坚持一条规则 – 除非必要,否则不要使用 Snap 或 Flatpak。这主要是因为它们的安装尺寸和其他问题。我更喜欢 deb 和 rpm 包。多年来,我在这个测试系统中安装和删除了一定数量的 Snap 包。

卸载后出现问题;Snap 在系统中保留一些一般用户不知道的残留文件。

因此,我打开了 Snap 文件夹 /var/lib/snapd/snaps,发现 Snap 正在跟踪以前安装/卸载的包的旧版本。

例如,在下图中,您可以看到 GNOME 3.28、3.34 和 Wine – 所有这些都被删除了。但他们仍然在那里。之所以会发生这种情况,是因为Snap 设计在正确卸载后保留了卸载包的版本。

snap目录下的文件

或者,您可以使用以下方法在终端中获得相同的结果:

linuxmi@linuxmi /home/linuxmi/www.linuxmi.com                                     
 snap list --all

列出 snap 包

对于保留的多个修订,默认值为 3。这意味着 Snap 保留每个包的三个旧版本,包括活动版本。如果您的磁盘空间很大,这也没有关系。

但对于服务器和其他用例,这很容易遇到成本问题,消耗您的磁盘空间。

但是,可以使用以下命令轻松修改计数。该值可以在2到20之间。

sudo snap set system refresh.retain=2

清除 Snap 版本

在 SuperUser 上的一篇帖子中,Canonical 前工程经理 Popey 提供了一个简单的脚本,可以清理旧版本的 Snap 并保留最新版本。

这是我们将用于清理 Snap-up 的脚本。

#!/bin/bash
#删除snap旧版本 #Linux迷www.linuxmi.com #在运行此之前关闭所有snap
 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(例如linuxmi.sh),赋予其可执行权限并运行。

linuxmi@linuxmi /home/linuxmi/www.linuxmi.com                                     
 chmod +x linuxmi.sh

linuxmi@linuxmi /home/linuxmi/www.linuxmi.com                                     
 sudo ./linuxmi.sh

当我运行脚本时,它减少了很多磁盘空间。脚本还将显示要删除的包的名称。

正在执行脚本

清理后的 snap 大小

总结

Snap 的设计效率一直存在争议。许多人说它被设计打破了,臃肿,系统负担沉重。我不否认这一论点的某些部分是正确的。如果实现和增强得当,沙箱应用程序的整个概念都很好。我相信,Flatpak 比 Snap 做得更好。

也就是说,我希望这可以帮助您清理一些磁盘空间。尽管它在 Ubuntu 中进行了测试,但它应该可以在所有支持 Snap 的 Linux 发行版中运行。

来源:如何清除旧版本 Snap 包以释放磁盘空间

THE END