如何清除旧版本 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 发行版中运行。