4

OS: Ubuntu 20.04

The following is the output of snap list on a new install of Ubuntu 20.04:

$ snap list
Name                             Version             Rev   Tracking         Publisher   Notes
core18                           20200311            1705  latest/stable    canonical✓  base
gnome-3-34-1804                  0+git.2c86692       27    latest/stable/…  canonical✓  -
gtk-common-themes                0.1-36-gc75f853     1506  latest/stable/…  canonical✓  -
snap-store                       3.36.0-74-ga164ec9  433   latest/stable/…  canonical✓  -
snapd                            2.44.3              7264  latest/stable    canonical✓  snapd
$

And this is what I see after installing a variety of snaps (and removing some):

$ snap list
Name                             Version                     Rev   Tracking         Publisher   Notes
core                             16-2.44.3                   9066  latest/stable    canonical✔  core
core18 •                         20200427                    1754  latest/stable    canonical✔  base
firefox *                        77.0b2-1                    358   latest/beta      mozilla✔    -
gnome-3-28-1804                  3.28.0-16-g27c9498.27c9498  116   latest/stable    canonical✔  -
gnome-3-34-1804 •                0+git.2c86692               27    latest/stable/…  canonical✔  -
gnome-system-monitor *           3.32.0-27-g32ed970e06       135   latest/stable    canonical✔  -
gtk-common-themes •              0.1-36-gc75f853             1506  latest/stable/…  canonical✔  -
kanagram *                       20.04.0                     51    latest/stable    kde✔        -
kcolorchooser *                  20.04.0                     57    latest/stable    kde✔        -
kde-frameworks-5                 5.47.0                      27    latest/stable    kde✔        -
kde-frameworks-5-core18          5.61.0                      32    latest/stable    kde✔        -
kde-frameworks-5-qt-5-14-core18  5.68.0                      4     latest/stable    kde✔        -
kolourpaint *                    20.04.0                     56    latest/stable    kde✔        -
ksnip *                          1.7.0                       46    latest/edge      dporobic    -
okular *                         20.04.0                     98    latest/stable    kde✔        -
snap-store •                     3.36.0-74-ga164ec9          433   latest/stable/…  canonical✔  -
snapd •                          2.44.3                      7264  latest/stable    canonical✔  snapd
$

For ease of discussion, let's call

  • the five original snaps (tagged with next to their names) "system snaps"
  • the snaps I knowingly installed (tagged with * next to their names) "primary snaps"
  • and the other snaps "supporting snaps"
    • core
    • gnome-3-28-1804
    • kde-frameworks-5
    • kde-frameworks-5-core18
    • kde-frameworks-5-qt-5-14-core18

Given that a snap and a minimum of two revisions are stored by the system, and that some supporting snaps can be a couple of hundred MB (ls -lh /var/lib/snapd/snaps), it would be worth knowing which secondary snaps can be removed if the primary snap has been already removed.

But how does one "map" the supporting snaps to the primary snaps?

In my case, I can run snap connections okular to intuit that kde-frameworks-5-qt-5-14-core18 was installed as a consequence of sudo snap install okular.

But snap connections … works only if the relevant snap is still installed. I had installed but then removed falkon, featherpad, kcalc, konversation, palapeli, and the stable version of ksnip.

Is there a log file related to installing and removing snaps akin to /var/log/dpkg.log or /var/log/apt/history.log?

If not, how else is one to know if a "supporting" snap is still required?


A related, but unanswered, question is here: How can I list manually installed snaps and remove no longer needed automatically installed ones?

  • 1
    Have you ever tried to remove one of the "supporting" snaps? I just did, if the snap is still in use by other snaps, you will get an error message. Another hint can be found in the snap.yaml-files (each snap has one) in /snap/snapname/current/meta, look for the lines base: and default-provider:, but this would be cumbersome if many snaps are installed. – mook765 May 6 at 14:47
  • I think your idea of trying to remove "supporting" snaps is neat. There shouldn't be too many of them and so quite feasible. Looking at the .yaml would require the primary snap to still be present. – DK Bose May 6 at 15:07
  • Looking at all .yaml-file would make it possible to exclude still needed snaps. If we have a "supporting" snap installed which is not needed anymore, this snap wouldn't appear in any of the o.yaml-files of other snaps. But that's obviously cumbersome. – mook765 May 6 at 15:12
  • Ok, I just tested. Removing supporting snaps is possible even if the primary snap is still present. At least that's the case for all the kde-frameworks-5 ones. – DK Bose May 6 at 15:12
  • Oh, good to know. I tested it with the core18-snap and got error: cannot remove "core18": snap "core18" is not removable: snap is being used by snaps gnome-3-28-1804, gtk-common-themes, snap-store and wire. Looks like we have to wait for the devs to implement an autoremove feature similar to apt. – mook765 May 6 at 15:16
2

Examining the snap.yaml files of all installed snaps may help us to know which "supporting" snaps are needed. Not listed "supporting" snaps can be removed.

Example:

~$ grep "default-provider:" /snap/*/*/meta/snap.yaml
/snap/snap-store/415/meta/snap.yaml:    default-provider: gnome-3-28-1804
/snap/snap-store/415/meta/snap.yaml:    default-provider: gtk-common-themes
/snap/snap-store/415/meta/snap.yaml:    default-provider: gtk-common-themes
/snap/snap-store/415/meta/snap.yaml:    default-provider: gtk-common-themes
/snap/snap-store/current/meta/snap.yaml:    default-provider: gnome-3-28-1804
/snap/snap-store/current/meta/snap.yaml:    default-provider: gtk-common-themes
/snap/snap-store/current/meta/snap.yaml:    default-provider: gtk-common-themes
/snap/snap-store/current/meta/snap.yaml:    default-provider: gtk-common-themes
/snap/wire/132/meta/snap.yaml:    default-provider: gnome-3-28-1804
/snap/wire/132/meta/snap.yaml:    default-provider: gtk-common-themes
/snap/wire/132/meta/snap.yaml:    default-provider: gtk-common-themes
/snap/wire/132/meta/snap.yaml:    default-provider: gtk-common-themes
/snap/wire/current/meta/snap.yaml:    default-provider: gnome-3-28-1804
/snap/wire/current/meta/snap.yaml:    default-provider: gtk-common-themes
/snap/wire/current/meta/snap.yaml:    default-provider: gtk-common-themes
/snap/wire/current/meta/snap.yaml:    default-provider: gtk-common-themes
~$ grep "base:" /snap/*/*/meta/snap.yaml
/snap/gnome-3-28-1804/116/meta/snap.yaml:base: core18
/snap/gnome-3-28-1804/current/meta/snap.yaml:base: core18
/snap/gtk-common-themes/1506/meta/snap.yaml:base: core18
/snap/gtk-common-themes/current/meta/snap.yaml:base: core18
/snap/snap-store/415/meta/snap.yaml:base: core18
/snap/snap-store/current/meta/snap.yaml:base: core18
/snap/wire/132/meta/snap.yaml:base: core18
/snap/wire/current/meta/snap.yaml:base: core18
| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.