Sun*_*ear 17 package-management snap 20.04
在检查系统中安装的 snap 软件包时,我注意到某些软件包有重复的,其中一个软件包的修订版号过高,而另一个软件包的修订版号较新。对于这样重复的包,我的问题是:
以下是包含和不包含重复项的包的示例:
$ du -hcs /var/lib/snapd/snaps/*
31M /var/lib/snapd/snaps/2048x_3.snap
286M /var/lib/snapd/snaps/atom_282.snap
4.0K /var/lib/snapd/snaps/bare_5.snap
72M /var/lib/snapd/snaps/bitwarden_58.snap
72M /var/lib/snapd/snaps/bitwarden_59.snap
196M /var/lib/snapd/snaps/blender_1113.snap
214M /var/lib/snapd/snaps/blender_1237.snap
9.1M /var/lib/snapd/snaps/canonical-livepatch_119.snap
9.1M /var/lib/snapd/snaps/canonical-livepatch_126.snap
148M /var/lib/snapd/snaps/chromium_1854.snap
148M /var/lib/snapd/snaps/chromium_1864.snap
17M /var/lib/snapd/snaps/chromium-ffmpeg_23.snap
18M /var/lib/snapd/snaps/chromium-ffmpeg_24.snap
....
~$ ls -lh /var/lib/snapd/snaps/
total 12G
-rw------- 2 root root 31M Aug 5 06:23 2048x_3.snap
-rw------- 2 root root 286M Aug 5 08:35 atom_282.snap
-rw------- 2 root root 4.0K Sep 22 18:17 bare_5.snap
-rw------- 1 root root 72M Oct 30 00:20 bitwarden_58.snap
-rw------- 1 root root 72M Dec 9 04:28 bitwarden_59.snap
-rw------- 1 root root 196M Nov 18 04:06 blender_1113.snap
-rw------- 1 root root 214M Dec 4 09:39 blender_1237.snap
-rw------- 2 root root 9.1M Nov 17 21:06 canonical-livepatch_119.snap
-rw------- 2 root root 9.1M Nov 22 22:39 canonical-livepatch_126.snap
-rw------- 1 root root 148M Dec 16 04:28 chromium_1854.snap
-rw------- 1 root root 148M Jan 8 08:33 chromium_1864.snap
-rw------- 1 root root 17M Sep 3 06:29 chromium-ffmpeg_23.snap
-rw------- 2 root root 18M Nov 29 14:23 chromium-ffmpeg_24.snap
....
Run Code Online (Sandbox Code Playgroud)
在我正在查看的系统上,所使用的总磁盘空间/var/lib/snapd/snaps/*
为 12,180.248 MB。所有重复包(即同一包的旧版本)的磁盘空间为 4,163.1 MB。简而言之,较旧的修订版包目前占用了 12,180.248 MB 的 34.18%。这似乎是我之前没有意识到的使用 SNAP 应用程序的成本。
mat*_*igo 23
回答您的问题:
\n为什么它们是重复的?
\n\xe2\x87\xa2 它们是不同的修订(版本),而不是重复。
\n我可以删除旧的软件包以确保更好的磁盘空间管理吗?
\n\xe2\x87\xa2 是的。是你的毕竟,
\n如何删除旧包?
您可以在终端中执行此操作,如下所示:
\nsnap remove {snap} --revision={revision}\n
Run Code Online (Sandbox Code Playgroud)\n您还可以告诉系统要限制自己过去的版本数,如下所示:
\nsudo snap set system refresh.retain=2\n
Run Code Online (Sandbox Code Playgroud)\n注意:该值必须介于2
和之间,并且是类似或 的20
数字2
3
,以节省存储空间并允许在更新错误时回滚。
如果您想列出所有快照及其版本,可以运行以下命令:
\nsnap list --all\n
Run Code Online (Sandbox Code Playgroud)\n这会给你类似的东西:
\nName Version Rev Tracking Publisher Notes\nbare 1.0 5 latest/stable canonical\xe2\x9c\x93 base\ncanonical-livepatch 10.0.1 119 latest/stable canonical\xe2\x9c\x93 disabled\ncanonical-livepatch 10.1.2 126 latest/stable canonical\xe2\x9c\x93 -\ncore 16-2.52 11798 latest/stable canonical\xe2\x9c\x93 core,disabled\ncore 16-2.52.1 11993 latest/stable canonical\xe2\x9c\x93 core\ncore18 20211028 2253 latest/stable canonical\xe2\x9c\x93 base\ncore18 20211015 2246 latest/stable canonical\xe2\x9c\x93 base,disabled\ncore20 20211115 1242 latest/stable canonical\xe2\x9c\x93 base,disabled\ncore20 20211129 1270 latest/stable canonical\xe2\x9c\x93 base\ngnome-3-28-1804 3.28.0-19-g98f9e67.98f9e67 145 latest/stable canonical\xe2\x9c\x93 disabled\ngnome-3-28-1804 3.28.0-19-g98f9e67.98f9e67 161 latest/stable canonical\xe2\x9c\x93 -\ngnome-3-34-1804 0+git.3556cb3 77 latest/stable/\xe2\x80\xa6 canonical\xe2\x9c\x93 -\ngnome-3-34-1804 0+git.3556cb3 72 latest/stable/\xe2\x80\xa6 canonical\xe2\x9c\x93 disabled\ngnome-3-38-2004 0+git.cd626d1 87 latest/stable canonical\xe2\x9c\x93 -\ngnome-3-38-2004 0+git.6ba6040 76 latest/stable canonical\xe2\x9c\x93 disabled\ngtk-common-themes 0.1-52-gb92ac40 1515 latest/stable/\xe2\x80\xa6 canonical\xe2\x9c\x93 disabled\ngtk-common-themes 0.1-59-g7bca6ae 1519 latest/stable/\xe2\x80\xa6 canonical\xe2\x9c\x93 -\nsnap-store 3.38.0-66-gbd5b8f7 558 latest/stable/\xe2\x80\xa6 canonical\xe2\x9c\x93 -\nsnap-store 3.38.0-64-g23c4c77 547 latest/stable/\xe2\x80\xa6 canonical\xe2\x9c\x93 disabled\nsnapd 2.53.2 14066 latest/stable canonical\xe2\x9c\x93 snapd,disabled\nsnapd 2.53.4 14295 latest/stable canonical\xe2\x9c\x93 snapd\n
Run Code Online (Sandbox Code Playgroud)\n需要脚本吗?
\n重要信息:snap list --all
在继续之前,您需要检查计算机上的输出,如果您使用的区域设置不是 en_US.UTF-8
.
剧本:
\nsnap remove {snap} --revision={revision}\n
Run Code Online (Sandbox Code Playgroud)\n这将运行snap list -all
并提取包含单词 的行disabled
。根据您的区域设置,这将有所不同,因此首先检查函数的输出,然后更新awk \'/disabled/
以替换disabled
为输出中找到的标签。
将脚本保存到文件(例如scrub-snaps.sh
),然后将其设置为可执行:
sudo chmod +x scrub-snaps.sh\n
Run Code Online (Sandbox Code Playgroud)\n现在您可以运行它,记住使用sudo
:
sudo ./scrub-snaps.sh\n
Run Code Online (Sandbox Code Playgroud)\n注意: sudo
不是脚本的一部分,但如果您愿意将其添加到其中,可以添加。无论哪种方式,如果需要,系统都会提示您输入密码。
保留至少一个较旧版本的快照是设计中固有的。
Snap 包最初是为各种环境而设计的,在这些环境中通常没有人工管理和/或无法连接键盘和显示器……例如手机或物联网设备。弹性是这些系统的关键要求:如果应用程序崩溃或升级损坏,则需要某种形式的有保证的回滚,而无需人工干预。因此,需要至少拥有一个旧版本。
使用经典桌面和服务器的人们不太关心回滚功能。他们喜欢不同的快照设计元素:独立于操作系统的安全自动升级、只读squashfs防篡改、进程限制等。
但这都是单一标准,因此您也可以获得回滚功能。即使你认为你不会使用它。
您无法“禁用”快照的回滚功能——它并不是真正的“功能”,而是一个关键的设计元素。