/var/lib/snapd/snaps retains huge amounts of data

I’ve been struggling with a full hard drive for a few years; blaming my use of nodejs/git etc. I’ve set refresh.retain to 2 and manually copied and checked a script from https://www.linuxuprising.com/2019/04/how-to-remove-old-snap-versions-to-free.html so that I can run it when my filesystem is full.

Finally I’ve figured out today that /var/lib/snapd/snaps still holds many older versions of downloaded snaps. I run du -h -x --max-depth=6 -t 1100000000 regularly and write it’s output to a timestampted file, so I can see that this folder has grown linearly from 2.8G at the end of 2020 to 6.2G today.

E.g. snap thinks there’s only one firefox version installed, but there is almost 2GB of Firefox snaps in that folder:

$ snap list --all |grep firef
firefox               119.0.1-1                   3358   latest/stable    mozilla**       -
$ ls -al /var/lib/snapd/snaps/ |grep firef
-rw-------  1 root root 254681088 May 31 11:08 firefox_2710.snap
-rw-------  1 root root 256638976 Jun  9 17:10 firefox_2760.snap
-rw-------  1 root root 256905216 Jul  5 10:57 firefox_2850.snap
-rw-------  1 root root 248733696 Aug  3 19:10 firefox_2952.snap
-rw-------  1 root root 248729600 Aug 16 16:18 firefox_2987.snap
-rw-------  1 root root 248418304 Sep 22 12:53 firefox_3131.snap
-rw-------  1 root root 251994112 Nov  7 14:08 firefox_3290.snap
-rw-------  1 root root 251990016 Nov  8 16:41 firefox_3358.snap

So basically I must have the same problem as this poster: https://superuser.com/questions/1811233/snap-list-all-does-not-show-everyting-in-var-lib-snapd-snaps

I was just going to purchase a new hard drive and glad I haven’t.

Is this on anyone’s radar or am I posting to the wrong forum?

2 Likes

This smells like a snapd bug, it should only keep two versions by default… you can use the --revision= option to the remove command to remove the older versions

1 Like

I am also seeing multiple revisions (9) of firefox in /var/lib/snapd/snaps/. Other snaps have two revisions. I’m on u22.04

1 Like

Given it’s firefox, which I’m guessing it quite often running, this may be a bug with refresh awareness. A blind guess, but perhaps the downloads aren’t being cleaned up properly if an update was postponed long enough to be superseded by yet another revision bump.

1 Like

It appears to be happening only with Firefox. I checked it now, and guess: there are 4 versions of Firefox, and the rest have only 2 versions. (I’m on u22.04)

Same thing is happening on my system (openSUSE Leap 15.5, snapd 2.61.1-lp155.1.1 from obs://build.opensuse.org/system:snappy) with Telegram-desktop.

thorens@kohama:~>
thorens@kohama:~> date
Tue Feb  6 11:06:59 EET 2024
thorens@kohama:~>
thorens@kohama:~>
thorens@kohama:~> sudo snap list telegram-desktop --all
Name              Version  Rev   Tracking       Publisher          Notes
telegram-desktop  4.14.9   5470  latest/stable  telegram-desktop✓  disabled
telegram-desktop  4.14.13  5525  latest/stable  telegram-desktop✓  -
thorens@kohama:~>
thorens@kohama:~>
thorens@kohama:~> ll /var/snap/telegram-desktop/
total 12
drwxr-xr-x 2 root root 4096 2020-01-10 11:31:25 5470
drwxr-xr-x 2 root root 4096 2020-01-10 11:31:25 5525
drwxr-xr-x 3 root root 4096 2021-09-27 07:55:52 common
lrwxrwxrwx 1 root root    4 2024-02-06 10:09:49 current -> 5525
thorens@kohama:~>
thorens@kohama:~>
thorens@kohama:~> mount | grep telegram-desktop
/var/lib/snapd/snaps/telegram-desktop_5470.snap on /snap/telegram-desktop/5470 type squashfs (ro,nodev,relatime,errors=continue,x-gdu.hide)
/var/lib/snapd/snaps/telegram-desktop_5525.snap on /snap/telegram-desktop/5525 type squashfs (ro,nodev,relatime,errors=continue,x-gdu.hide)
nsfs on /run/snapd/ns/telegram-desktop.mnt type nsfs (rw)
thorens@kohama:~>
thorens@kohama:~>
thorens@kohama:~> ll /var/lib/snapd/snaps/telegram-desktop_*
-rw------- 1 root root 409784320 2023-06-14 06:37:06 /var/lib/snapd/snaps/telegram-desktop_4806.snap
-rw------- 1 root root 410480640 2023-08-15 00:04:12 /var/lib/snapd/snaps/telegram-desktop_4899.snap
-rw------- 1 root root 425308160 2023-08-31 18:54:21 /var/lib/snapd/snaps/telegram-desktop_4980.snap
-rw------- 1 root root 425385984 2023-09-05 09:23:13 /var/lib/snapd/snaps/telegram-desktop_4989.snap
-rw------- 1 root root 425529344 2023-09-16 15:06:15 /var/lib/snapd/snaps/telegram-desktop_5034.snap
-rw------- 1 root root 425537536 2023-09-19 17:26:29 /var/lib/snapd/snaps/telegram-desktop_5050.snap
-rw------- 1 root root 425627648 2023-09-25 04:36:26 /var/lib/snapd/snaps/telegram-desktop_5062.snap
-rw------- 1 root root 426921984 2023-09-25 10:46:13 /var/lib/snapd/snaps/telegram-desktop_5076.snap
-rw------- 1 root root 433491968 2023-11-07 13:19:38 /var/lib/snapd/snaps/telegram-desktop_5188.snap
-rw------- 1 root root 433700864 2023-11-10 07:44:45 /var/lib/snapd/snaps/telegram-desktop_5204.snap
-rw------- 1 root root 434049024 2023-11-14 13:30:28 /var/lib/snapd/snaps/telegram-desktop_5220.snap
-rw------- 1 root root 434135040 2024-01-02 06:59:21 /var/lib/snapd/snaps/telegram-desktop_5334.snap
-rw------- 1 root root 434237440 2024-01-03 03:24:34 /var/lib/snapd/snaps/telegram-desktop_5368.snap
-rw------- 1 root root 434262016 2024-01-05 07:07:07 /var/lib/snapd/snaps/telegram-desktop_5378.snap
-rw------- 1 root root 434262016 2024-01-16 14:37:03 /var/lib/snapd/snaps/telegram-desktop_5402.snap
-rw------- 1 root root 434417664 2024-01-16 21:42:00 /var/lib/snapd/snaps/telegram-desktop_5434.snap
-rw------- 1 root root 434442240 2024-01-18 14:56:55 /var/lib/snapd/snaps/telegram-desktop_5439.snap
-rw------- 1 root root 434569216 2024-01-22 09:56:13 /var/lib/snapd/snaps/telegram-desktop_5470.snap
-rw------- 1 root root 434790400 2024-02-05 13:00:33 /var/lib/snapd/snaps/telegram-desktop_5509.snap
-rw------- 1 root root 434814976 2024-02-06 10:09:34 /var/lib/snapd/snaps/telegram-desktop_5525.snap
thorens@kohama:~>
thorens@kohama:~>
thorens@kohama:~> sudo snap remove telegram-desktop --revision=4806
revision 4806 of snap "telegram-desktop" is not installed
thorens@kohama:~>

I agree with with the suggestion that these missed cleanups are likely to be a snapd bug that is triggered by multiple pending updates.

Since snapd seems to only care about versions 5470 and 5525 I wonder if simply deleting all other telegram-desktop .snap-files manually from /var/lib/snapd/snaps would be safe?

I had the same issue with telegram, code, and some other snaps. I manually removed older snap versions that don’t show up on snap list --all, then ran snap refresh.

A few days in, everything’s good.

Tested on Ubuntu 20.04 and 22.04, on Intel and AMD.