I have Gnome 3.26, 3.28 and 3.34 on my machine (Ubuntu 18.04) and want to know if I can get rid of any of them to save disk space. Is there some kind of snap
command I can run that will show me?
2 Answers
Snap Commands to track connections
You may use command below to list all slots/plugs used.
snap connections
or for specific app, example:
$ snap connections snap-store Interface Plug Slot Notes appstream-metadata snap-store:appstream-metadata :appstream-metadata - content[gnome-3-38-2004] snap-store:gnome-3-38-2004 gnome-3-38-2004:gnome-3-38-2004 - content[gtk-3-themes] snap-store:gtk-3-themes gtk-common-themes:gtk-3-themes - content[icon-themes] snap-store:icon-themes gtk-common-themes:icon-themes - content[sound-themes] snap-store:sound-themes gtk-common-themes:sound-themes - dbus - snap-store:packagekit-svc - dbus - snap-store:snap-store - desktop snap-store:desktop :desktop - desktop-legacy snap-store:desktop-legacy :desktop-legacy - ...
or probably best option with reverse search:
$ snap connections gnome-3-38-2004 Interface Plug Slot Notes content[gnome-3-38-2004] firefox:gnome-3-38-2004 gnome-3-38-2004:gnome-3-38-2004 - content[gnome-3-38-2004] snap-store:gnome-3-38-2004 gnome-3-38-2004:gnome-3-38-2004 - content[gnome-3-38-2004] snapd-desktop-integration:gnome-3-38-2004 gnome-3-38-2004:gnome-3-38-2004
It may be worth adding, search by interface too:
$ snap interface content | grep gnome - firefox:gnome-3-38-2004 - snap-store:gnome-3-38-2004 - snapd-desktop-integration:gnome-3-38-2004 - gnome-3-38-2004:gnome-3-38-2004
Explaining snap connection
Due to the objective nature of snaps. Snap runs regular apps in confined environment. So each snap app that depends on another app, its developer has to declare the "connection" (or we may say plug-slot), mook765's answer here has used it for his approach (snap.yaml
contains the dependencies declaration). The type of the connection is called "interface" content[gnome-3-38-2004]
. And each connection composed of (one "slot" which is connected to either no, one or many "plugs"). Slot gnome-3-38-2004:gnome-3-38-2004
in this case is provided by gnome core snap, app declares and uses a plug ex:snap-store:gnome-3-38-2004
to that slot.
A good reference to read more: snapcraft.io: gnome-3-38-extension - plugs
Removing gnome-extension snap (Test)
Connections may auto/manually be connected or disconnected, that why I expect snap doesn't force uninstalling of dependent apps. I tested it within Ubuntu 22.04 in Virtual-box. Snap disconnects plug/slot and then removes the app. The app fails to run anyway.
$ snap remove gnome-3-38-2004
gnome-3-38-2004 removed
$ snap connections snap-store
Interface Plug Slot Notes
appstream-metadata snap-store:appstream-metadata :appstream-metadata -
content snap-store:gnome-3-38-2004 - -
content[gtk-3-themes] snap-store:gtk-3-themes gtk-common-themes:gtk-3-themes -
content[icon-themes] snap-store:icon-themes gtk-common-themes:icon-themes -
content[sound-themes] snap-store:sound-themes gtk-common-themes:sound-themes -
dbus - snap-store:packagekit-svc -
...
$ snap-store
ERROR: not connected to the gnome-3-38-2004 content interface.
$ firefox
ERROR: not connected to the gnome-3-38-2004 content interface.
-
1Interesting. So, for your example, it looks like the
gnome-3-38-2004
snap is used for thefirefox
,snap-store
andsnapd-desktop-integration
snaps. If you were to remove the gnome snap, presumably those other 3 snaps would be affected/break/need to be uninstalled as well. Do I have that right? Nov 5, 2022 at 14:31 -
BTW, I have no idea what connections, interfaces, plugs or slots are when it comes to snaps. I thought a snap was just a different way if installing software - so all these other terms are brand new to me. I guess I'd need to read the docs... Thanks for your help Nov 5, 2022 at 14:32
-
@charlesdeb You are right however you don't have to remove dependent apps, but they may have limited/partial functionality or completely break. (I didn't test it, i will soon, I have Ubuntu in a virtualbox).– user.dzNov 5, 2022 at 14:37
-
@charlesdeb About idioms, Snap create isolated runtime environment for each app. So each app needs another app, its developer has to declare the "connection", type of connection is called "interface". And each connection composed of (1 "slot" and 0 or many "plugs"). Slot in this case is provided by gnome core snap, each app that depend on gnome, declare and use a plug to that slot.– user.dzNov 5, 2022 at 14:42
-
1so why is firefox and chrome also using such an old library from 2004?– rubo77Nov 6, 2022 at 16:29
You can find out the dependencies of a snap by examining it's snap.yaml
-file which is
/snap/<snapname>/<revision>/meta/snap.yaml
The commands
~$ grep "default-provider:" /snap/*/*/meta/snap.yaml
~$ grep "base:" /snap/*/*/meta/snap.yaml
will produce a list of all needed dependencies for all installed snaps, a dependency not listed can safely be removed. See the example in this answer.
snap info <snap-name> --verbose
doesn't give me that dependency info.sudo snap services
which lists active services employed via snaps. For validation, you can also runsudo systemctl status snap.<service name>
. I hope that helps answer your question.snap list
gives you the list of snaps - and I see I now have Gnome 3.38 and Gnome 42 as well on my machine! But I first spotted this looking at disk space usage.sudo snap services
lists a canonical live patch service and a desktop integration thing - but nothing that says "gnome". My question was - as you have I think worked out - is "what will happen if I delete these gnome snaps?". I think the answer is here: askubuntu.com/questions/1155957/…. Bur I still don't know where these snaps came from or what ubuntu software relies on them.