我的Ubuntu测试系统上的磁盘空间不足。因此,我通过GNOME的磁盘使用分析器进行了调查,以找出哪个包正在消耗宝贵的SSD空间。除了通常的缓存和主目录外,我惊讶地发现Snap和Flatpak占用了大量存储空间。Snap大小——在清理之前我总是坚持一个规则:除非必要,否则不要使用Snaps或Flatpaks。这主要是因为它们的安装大小和其他一些问题。我更喜欢原生deb和rpm包。多年来,我在这个测试系统上安装和删除了一些Snap包。卸载后出现问题。Snap在系统中保留了一些剩余文件,而普通用户并不知道。所以我打开了Snap文件夹/var/lib/snapd/snaps,发现Snap保留了以前安装/卸载的包的旧版本。例如,在下图中,您可以看到GNOME3.28、3.34和Wine都已被删除。但他们还在那里。这是因为Snap在设计上会在正确卸载后保留已卸载软件包的版本。snaps目录下的文件或者,您可以在终端中使用:snaplistall对于保留的版本数,默认为3。这意味着Snap为每个包保留3个旧版本,包括当前安装的版本。如果您对磁盘空间没有限制,这是可以的。但是对于服务器和其他场景,这很容易遇到成本问题并占用您的磁盘空间。但是,您可以使用以下命令轻松修改计数。该值可以在2到20之间。sudosnapsetsystemrefresh.retain=2清理Snap版本在SuperUser文章中,Canonical的前工程经理Popey提供了一个简单的脚本来清理旧的Snap版本并保留最新版本那些。这是我们将用来清理Snap的脚本。#!/bin/bash#Removesoldrevisionsofsnaps#CLOSEALLSNAPSBEFORERunningTHISset-euLANG=en_US.UTF-8snaplist--all|复制代码awk'/disabled/{print$1,$3}'|在读取snapname修订版时;dosnapremove"$snapname"--revision="$revision"done把上面的脚本以.sh格式保存在目录下(比如clean_snap.sh),赋予可执行权限,运行即可。chmod+xclean_snap.sh当我运行脚本时,它会大大减少磁盘空间。该脚本还将显示要删除的包的名称。清理后执行scriptSnaps大小结论关于Snap的设计效率有很多争论。许多人说它设计不当、臃肿并且耗尽系统资源。该论点的某些部分是正确的,我不会否认这一点。如果正确实施和增强,沙盒应用程序的整体概念非常棒。我相信Flatpak比Snap做得更好。也就是说,我希望这可以帮助您清理一些磁盘空间。虽然它只在Ubuntu中测试过,但它应该适用于所有支持Snap的Linux发行版。
