我的机器(Ubuntu 18.04)上有 Gnome 3.26、3.28 和 3.34,我想知道是否可以删除其中任何一个以节省磁盘空间。是否有某种snap
命令可以运行来显示这些内容?
答案1
使用捕捉命令来跟踪连接
您可以使用以下命令列出所有使用的插槽/插头。
snap connections
或者针对特定的应用程序,例如:
$ 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 - ...
或者可能是反向搜索的最佳选择:
$ 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
也许值得添加,也可以通过界面进行搜索:
$ 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
解释快速连接
由于 Snap 的客观性。Snap 在受限环境中运行常规应用程序。因此,每个依赖于另一个应用程序的 Snap 应用程序,其开发人员都必须声明“连接”(或者我们可以说是插槽),mook765 的回答这里已将其用作其方法(snap.yaml
包含依赖项声明)。连接的类型称为“接口” content[gnome-3-38-2004]
。每个连接由(一个“插槽”组成,该插槽连接到零个、一个或多个“插头”)。在这种情况下,插槽gnome-3-38-2004:gnome-3-38-2004
由 gnome core snap 提供,应用程序声明并使用插头 ex:snap-store:gnome-3-38-2004
到该插槽。
一个很好的参考资料可以阅读更多:snapcraft.io:gnome-3-38-extension - 插件
删除 gnome-extension snap(测试)
连接可以自动/手动连接或断开,这就是我期望 snap 不会强制卸载相关应用程序的原因。我在 Virtual-box 中的 Ubuntu 22.04 中对其进行了测试。Snap 断开插头/插槽,然后删除应用程序。无论如何,应用程序都无法运行。
$ 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.
答案2
你可以通过检查 snap 文件来找到它的依赖项,snap.yaml
该文件是
/snap/<snapname>/<revision>/meta/snap.yaml
命令
~$ grep "default-provider:" /snap/*/*/meta/snap.yaml
~$ grep "base:" /snap/*/*/meta/snap.yaml
将生成所有已安装 snap 所需的依赖项列表,未列出的依赖项可以安全删除。请参阅示例这个答案。