如何知道哪些 snap 包使用了哪个版本的运行时

如何知道哪些 snap 包使用了哪个版本的运行时

我的机器(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 所需的依赖项列表,未列出的依赖项可以安全删除。请参阅示例这个答案

相关内容