旧的Ubuntu核心snap版本正在占用大量磁盘空间。

我正在运行Ubuntu 16.10,安装了snapd和基本的core snap自发布以来。
一段时间后,我发现/snap/core目录中充满了多个旧版本。
要删除它们,我需要手动执行sudo snap remove core --revision 。

Snaps和垃圾回收部分在Snaps和snapcraft文档中解释说,每次更新一个snap软件包后,当前版本和之前的版本都会被安装,旧版本会自动删除(就像之前的情况一样)。

由于我在snap帮助中找不到更多信息,所以我想知道在snapd中是否有一个设置或开关命令可以启用自动删除那些旧的core snap软件包。
附加信息:我描述的情况适用于3台具有相同配置的机器。


2snapd的默认设置是保留3个版本,包括当前版本和前两个版本。你看到了多少个版本? - popey
2感谢这个信息 @popey!每当我发现超过两个“core”版本时,我会手动卸载最旧的一个,在大多数情况下,我看到有三个已安装的版本,但我不确定以前是否也找到过四个版本。为什么文档提供了不同的信息?我能否更改默认设置,只保留当前版本和上一个版本?也许你可以写个答案来解释一下? :) - cl-netbox
如果你看到的超过3个,那就是我脑子里的一个错误,所以我会将它提交到https://bugs.launchpad.net/ubuntu/+source/snapd。需要查看"snap changes"的输出,并在/snap/<appname>目录中显示多个已安装版本。 - popey
3个回答

这篇帖子列出了几种解决旧版snap删除的方法:
使用popey的手动脚本来删除“所有旧版本的snaps”。
#!/bin/bash
# https://superuser.com/a/1330590
# 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
并且对于“snap 2.34及更高版本”,设置“snap set system refresh.retain”由Mustapha Hadid提供,以仅存储每个快照的2个修订版本。
$ sudo snap set system refresh.retain=2 

The refresh.retain value can only be a number between 2 and 20 and has a default value of 3


5我已经运行了sudo snap set system refresh.retain=2命令,但某些应用程序仍然有三个副本,该怎么办? - Rabbit


使用类似这样的命令:-
sudo snap remove chromium       --revision 1461

哪里

chromium = example software
1461 = example revision

你可以使用"mount | grep snap"来查找版本
或者
snap list --all | awk '/disabled/{print $1, $3}' 

适用于旧版本