如何在Linux中清理Snap包的版本它有其优点和缺点。缺点之一是Snap包通常很大,占用大量磁盘空间。如果您的磁盘空间不足,尤其是在根分区上,这可能会成为一个问题。让我分享一个巧妙的技巧,您可以使用它来减少Snap包使用的磁盘空间。清理旧的Snap包版本以释放磁盘空间Snap相关的系统文件存储在/var/lib/snapd目录中。根据您安装的Snap包的数量,此目录的大小可能为几千兆字节。不要只相信我的话。通过使用du命令检查目录大小来进行评估。$sudodu-sh/var/lib/snapd5.4G/var/lib/snapd您还可以使用图形化工具DiskUsageAnalyzer查看Ubuntu的磁盘使用情况。Snapdiskusage很多,对吧?您可以在这里释放一些磁盘空间。根据设计,Snap至少会保留您在系统上安装的软件包的一个旧版本。您可以使用Snap命令查看此行为:snaplist--all您应该会看到同一个包列出了两次,但版本和修订号不同。Snap至少保留每个包的两个版本,以通过删除其他包版本来释放磁盘空间。你怎么知道要删除哪一个?如您所见,这些较旧的包被标记为已禁用。不用担心。您无需手动执行此操作。多亏了AlanPope在Snapcraft团队工作时编写的一个简洁的bash脚本,有一种自动化的方法可以做到这一点。我希望您知道如何创建和运行bashshell脚本。基本上,创建一个名为clean-snap.sh的新文件并向其中添加以下行。#!/bin/bash#Removesoldrevisionsofsnaps#在运行此之前关闭所有快照set-eusnaplist--all|awk'/disabled/{print$1,$3}'|在读取snapname修订版时;dosnapremove"$snapname"--revision="$revision"done保存并关闭编辑器。要运行这个脚本,将它放在你的主目录中,然后在Ubuntu中打开一个终端,并运行这个命令:sudobashclean-snap.sh如你所见,它开始删除旧版本的包。删除旧的snap包版本如果你现在检查Snap使用的磁盘空间,你会发现目录大小现在已经减少了。$sudodu-sh/var/lib/snapd3.9G/var/lib/snapd如果适合您,您可以偶尔运行此命令。这个脚本是如何工作的?如果您对这个脚本的作用感到好奇,请让我解释一下。您已经看到了snaplist-all命令的输出。它的输出被传递给awk命令。Awk是一个强大的脚本工具。awk'/disabled/{print$1,$3}'部分在每一行中查找禁用的字符串,如果找到它,它会提取第一列和第三列。此输出进一步传递给while和read命令的组合。读取命令在第一列获取Snap包名称,在第三列获取修订号变量。然后使用这些变量运行带有要删除的Snap包名称及其修订号的snapremove命令。只要找到包含禁用字符串的行,while循环就会运行。你找回空间了吗?您可能已经看到一些论坛建议将Snap包的保留值设置为2。sudosnapsetsystemrefresh.retain=2我觉得现在不需要了。Snap的默认行为现在是保存任何包的两个版本。总而言之,如果空间不足,摆脱额外的软件包版本绝对是释放Ubuntu磁盘空间的方法之一。
