我可以删除重复的快照包的旧版本包吗?

Sun*_*ear 17 package-management snap 20.04

在检查系统中安装的 snap 软件包时,我注意到某些软件包有重复的,其中一个软件包的修订版号过高,而另一个软件包的修订版号较新。对于这样重复的包,我的问题是:

  1. 为什么它们是重复的?
  2. 我可以删除旧的软件包以确保更好的磁盘空间管理吗?
  3. 如何删除旧包?

以下是包含和不包含重复项的包的示例:

$ 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

如何删除旧包?

\n

您可以在终端中执行此操作,如下所示:

\n
snap remove {snap} --revision={revision}\n
Run Code Online (Sandbox Code Playgroud)\n

您还可以告诉系统要限制自己过去的版本数,如下所示:

\n
sudo snap set system refresh.retain=2\n
Run Code Online (Sandbox Code Playgroud)\n

注意:该值必须介于2和之间,并且是类似或 的20数字23,以节省存储空间并允许在更新错误时回滚。

\n

如果您想列出所有快照及其版本,可以运行以下命令:

\n
snap list --all\n
Run Code Online (Sandbox Code Playgroud)\n

这会给你类似的东西:

\n
Name                 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

需要脚本吗?

\n

重要信息:snap list --all在继续之前,您需要检查计算机上的输出,如果您使用的区域设置不是 en_US.UTF-8.

\n

剧本:

\n
snap remove {snap} --revision={revision}\n
Run Code Online (Sandbox Code Playgroud)\n

这将运行snap list -all并提取包含单词 的行disabled。根据您的区域设置,这将有所不同,因此首先检查函数的输出,然后更新awk \'/disabled/以替换disabled为输出中找到的标签。

\n

将脚本保存到文件(例如scrub-snaps.sh),然后将其设置为可执行:

\n
sudo chmod +x scrub-snaps.sh\n
Run Code Online (Sandbox Code Playgroud)\n

现在您可以运行它,记住使用sudo

\n
sudo ./scrub-snaps.sh\n
Run Code Online (Sandbox Code Playgroud)\n

注意: sudo不是脚本的一部分,但如果您愿意将其添加到其中,可以添加。无论哪种方式,如果需要,系统都会提示您输入密码。

\n


use*_*733 8

保留至少一个较旧版本的快照是设计中固有的。

Snap 包最初是为各种环境而设计的,在这些环境中通常没有人工管理和/或无法连接键盘和显示器……例如手机或物联网设备。弹性是这些系统的关键要求:如果应用程序崩溃或升级损坏,则需要某种形式的有保证的回滚,而无需人工干预。因此,需要至少拥有一个旧版本。

使用经典桌面和服务器的人们不太关心回滚功能。他们喜欢不同的快照设计元素:独立于操作系统的安全自动升级、只读squashfs防篡改、进程限制等。

但这都是单一标准,因此您也可以获得回滚功能。即使你认为你不会使用它。

您无法“禁用”快照的回滚功能——它并不是真正的“功能”,而是一个关键的设计元素。