如何在 Linux 中清理 Snap 包的版本
创始人
2024-03-02 10:06:08
0

Snap 软件包并不是每个人都喜欢的,但它们是 Ubuntu 生态系统中不可或缺的一部分。

它有其优点和缺点。其中一个缺点是,Snap 包通常体积较大,占用大量的磁盘空间。如果你的磁盘空间不够用,特别是在根分区上,这可能是一个问题。

让我分享一个巧妙的技巧,你可以用它来减少 Snap 包使用的磁盘空间。

清理旧的 Snap 包版本以释放磁盘空间

与 snap 有关的系统文件都存放在 /var/lib/snapd 目录下。根据你所安装的 Snap 包的数量,这个目录的大小可能在几 GB。不要只听我的一面之词。通过 使用 du 命令检查目录大小 来进行评估。

$ sudo du -sh /var/lib/snapd
5.4G    /var/lib/snapd

你也可以使用磁盘使用分析器这个 GUI 工具来查看 Ubuntu 的磁盘使用情况

Snap disk usage

这可真够多的,对吧?你可以在这里腾出一些磁盘空间。根据设计,Snap 至少会在你的系统上保留一个你所安装的软件包的旧版本。你可以通过使用 Snap 命令看到这种行为:

snap list --all

你应该看到同一个软件包被列了两次,而且版本和修订号都不同。

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"
    done

保存它并关闭编辑器。要运行这个脚本,把它放在你的主目录中,然后 在 Ubuntu 中打开终端,运行这个命令:

sudo bash clean-snap.sh

你可以看到,它开始删除旧版本的软件包。

Removing old snap package versions

如果你现在检查 Snap 使用的磁盘空间,你会发现现在的目录大小已经减少了。

$ sudo du -sh /var/lib/snapd
3.9G    /var/lib/snapd

如果这对你有用,你可以偶尔运行这个命令。

这个脚本是如何工作的?

如果你对这个脚本的作用感到好奇,让我来解释一下。

你已经看到了 snap list -all 命令的输出。它的输出被传递给 awk 命令。Awk 是一个强大的脚本工具。

awk '/disabled/{print $1, $3}' 部分在每一行中寻找字符串 disabled,如果找到它,它将提取第一列和第三列。

这个输出被进一步传递给 whileread 命令的组合。读取命令获取第一列的 Snap 包名和第三列的修订号变量。

然后,这些变量被用来运行 snap remove 命令,用 Snap 包名和它的修订号来删除。

只要发现有包含 disabled 字符串的行,就会运行 while 循环。

如果你对 shell 脚本略知一二,这一切就很容易理解了。如果你不熟悉,我们有一个 初学者的 bash 教程系列 给你。

你拿回了你的空间了吗?

你可能会看到一些论坛建议将 Snap 软件包的保留值设置为 2。

sudo snap set system refresh.retain=2

我认为现在不需要了。现在 Snap 的默认行为是为任何软件包保存两个版本。

总而言之,如果你的空间不够用,摆脱额外的软件包版本肯定是 释放 Ubuntu 磁盘空间的方法 之一。

如果这个教程帮助你释放了一些空间,请在评论区告诉我。


via: https://itsfoss.com/clean-snap-packages/

作者:Abhishek Prakash 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

相关内容

放弃Ubuntu吧!Deb...
过去几年,我看到不少读者在评论区、私信里吐槽Ubuntu:Snap...
2026-05-09 16:17:21
谷歌首款AI眼镜即将呼之欲...
据路透社消息,开云集团表示将在2027年与谷歌合作推出古驰(Guc...
2026-05-06 22:51:02
YouTube博主起诉Sn...
IT之家 1 月 27 日消息,据外媒 techcrunch 报道...
2026-01-27 08:17:55
颠覆传统的Besgnuli...
在现代科技迅速发展的背景下,越来越多的用户开始关注如何给老旧电脑注...
2026-01-19 19:26:08
Debian与Ubuntu...
在众多Linux发行版中,Debian和Ubuntu无疑是最受欢迎...
2025-12-05 10:46:28
多家Linux厂商拥抱Ub...
在最近举办的Ubuntu峰会上,多家Linux相关厂商展示了他们的...
2025-11-08 06:16:18

热门资讯

“Linux 中国” 开源社区... 这是一个艰难的决定 —— 这不是调侃,而是当你真正做出改变了你十几年生活轨迹的决定时,你就会明白这个...
硬核观察 #1263 德国铁路... #1 德国铁路公司招聘 Windows for Workgroups 3.11 管理员该职位要求了解...
人工智能教程(七):Sciki... 在本系列的 上一篇文章 中,我们用 TensorFlow 构建了第一个神经网络,然后还通过 Kera...
关闭 WSL 中正在运行的 L... 以下是使用 WSL 关闭在 Windows 内运行的 Linux 系统的不同方法。你使用 WSL 在...
MX Linux 23.2 “... 最新的 MX Linux 23.2 小版本更新带来了基本的改进和新增功能。MX Linux 推出了 ...
硬核观察 #1262 网络上最... #1 网络上最古老的软件存档库之一即将关闭美国新墨西哥州立大学(NMSU)最近宣布,即将于 2024...
如何在 RHEL 上通过绑定配... 在 Linux 中,你可以根据自己的需要创建高级网络设置,如 网络绑定 Network Bondin...
Linux Matrix 消息... Matrix 用户可以升级 Fractal 6 了!Fractal 是目前 最好的 Matrix 客...
如何通过 VLC 使用字幕 使用 VLC 媒体播放器播放和管理字幕的新手指南。我是一个超级动漫迷,如果你想观看最新的剧集,那么你...
硬核观察 #1261 X 计划... #1 X 计划在奥斯汀建立内容审核总部据报道,该部门将招聘 100 名全职员工,将主要关注 CSE ...