snap是一种全新的软件包管理方式,它类似一个容器拥有一个应用程序所有的文件和库,各个应用程序之间完全独立。所以使用snap包的好处就是它解决了应用程序之间的依赖问题,使应用程序之间更容易管理。但是由此带来的问题就是它占用更多的磁盘空间,本篇文章重点为大家讲解一下清理 Snap 包的方法。
清理旧的 Snap 包版本以释放磁盘空间
与 snap 有关的系统文件都存放在 /var/lib/snapd 目录下。根据你所安装的 Snap 包的数量,这个目录的大小可能在几 GB。不要只听我的一面之词。通过 使用 du 命令检查目录大小 来进行评估。
$ sudo du -sh /var/lib/snapd
5.4G /var/lib/snapd1.2.
你也可以使用磁盘使用分析器这个 GUI 工具来查看 Ubuntu 的磁盘使用情况。
Snap disk usage
这可真够多的,对吧?你可以在这里腾出一些磁盘空间。根据设计,Snap 至少会在你的系统上保留一个你所安装的软件包的旧版本。你可以通过使用 Snap 命令看到这种行为:
snap list --all1.
你应该看到同一个软件包被列了两次,而且版本和修订号都不同。
Snap keeps at least two versions of each package
为了释放磁盘空间,你可以删除额外的软件包版本。你怎么知道要删除哪一个呢?你可以看到,这些较旧的软件包被标记为“禁用”。
不要担心。你不需要手动操作。由于 Alan Pope 在 Snapcraft 团队工作时写的一个灵巧的 bash 脚本,有一种自动的方法可以做到。
我希望你知道 如何创建和运行 bash shell 脚本。基本上,创建一个名为 clean-snap.sh 的新文件,并在其中添加以下几行。
#!/bin/bash
# Removes old revisions of snaps
# CLOSE ALL SNAPS BEFORE RUNNING THIS
set -eu
snap list --all | awk '/disabled/{print $1, $3}' |
while read snapname revision; do
snap remove "$snapname" --revision="$revision"
done1.2.3.4.5.6.7.8.
保存它并关闭编辑器。要运行这个脚本,把它放在你的主目录中,然后 在 Ubuntu 中打开终端,运行这个命令:
sudo bash clean-snap.sh1.
你可以看到,它开始删除旧版本的软件包。
Removing old snap package versions如果你现在检查 Snap 使用的磁盘空间,你会发现现在的目录大小已经减少了。
$ sudo du -sh /var/lib/snapd
3.9G /var/lib/snapd1.2.
如果这对你有用,你可以偶尔运行这个命令。
这个脚本是如何工作的?
如果你对这个脚本的作用感到好奇,让我来解释一下。
你已经看到了 snap list -all 命令的输出。它的输出被传递给 awk 命令。Awk 是一个强大的脚本工具。
awk ‘/disabled/{print 3}’ 部分在每一行中寻找字符串 disabled,如果找到它,它将提取第一列和第三列。
这个输出被进一步传递给 while 和 read 命令的组合。读取命令获取第一列的 Snap 包名和第三列的修订号变量。
然后,这些变量被用来运行 snap remove 命令,用 Snap 包名和它的修订号来删除。
只要发现有包含 disabled 字符串的行,就会运行 while 循环。
你拿回了你的空间了吗?
你可能会看到一些论坛建议将 Snap 软件包的保留值设置为 2。
sudo snap set system refresh.retain=21.
我认为现在不需要了。现在 Snap 的默认行为是为任何软件包保存两个版本。
总而言之,如果你的空间不够用,摆脱额外的软件包版本肯定是 释放 Ubuntu 磁盘空间的方法 之一。
以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !