如何查询Flatpak应用依赖及确认NVIDIA驱动依赖来源
我的机器上安装了四个Flatpak应用,执行flatpak list --app可查看应用列表:
$ flatpak list --app Name Application ID Version Branch Installation Obsidian md.obsidian.Obsidian 1.5.3 stable system GNU Image Manipulation Program org.gimp.GIMP 2.10.36 stable system Inkscape org.inkscape.Inkscape 1.3.2 stable system Shotcut org.shotcut.Shotcut 23.12.15 stable system
但执行flatpak list查看所有已安装内容时,发现存在NVIDIA驱动相关包:
$ flatpak list Name Application ID Version Branch Installation Obsidian md.obsidian.Obsidian 1.5.3 stable system SWH org.freedesktop.LinuxAudio.Plugins.swh 0.4.17 22.08 system Freedesktop Platform org.freedesktop.Platform 23.08.10 23.08 system Mesa org.freedesktop.Platform.GL.default 23.3.0 22.08 system Mesa (Extra) org.freedesktop.Platform.GL.default 23.3.0 22.08-extra system Mesa org.freedesktop.Platform.GL.default 23.3.2 23.08 system Mesa (Extra) org.freedesktop.Platform.GL.default 23.3.2 23.08-extra system nvidia-535-146-02 org.freedesktop.Platform.GL.nvidia-535-146-02 1.4 system Intel org.freedesktop.Platform.VAAPI.Intel 22.08 system Intel org.freedesktop.Platform.VAAPI.Intel 23.08 system openh264 org.freedesktop.Platform.openh264 2.1.0 2.2.0 system GNU Image Manipulation Program org.gimp.GIMP 2.10.36 stable system GNOME Application Platform version 44 org.gnome.Platform 44 system GNOME Application Platform version 45 org.gnome.Platform 45 system Yaru-dark Gtk Theme org.gtk.Gtk3theme.Yaru-dark 3.22 system Inkscape org.inkscape.Inkscape 1.3.2 stable system KDE Application Platform org.kde.Platform 6.5 system QGnomePlatform org.kde.PlatformTheme.QGnomePlatform 6.5 system QAdwaitaDecorations org.kde.WaylandDecoration.QAdwaitaDecorations 6.5 system QGnomePlatform-decoration org.kde.WaylandDecoration.QGnomePlatform-decoration 6.5 system Shotcut org.shotcut.Shotcut 23.12.15 stable system
我希望找出这四个已安装应用中,哪个引入了org.freedesktop.Platform.GL.nvidia-535-146-02作为依赖,但flatpak info无法提供完整的依赖信息,请问如何通过命令行查询该依赖的归属?
1. 检查应用关联的运行时及依赖
先逐个查看每个应用绑定的运行时:
flatpak info --show-runtime md.obsidian.Obsidian flatpak info --show-runtime org.gimp.GIMP flatpak info --show-runtime org.inkscape.Inkscape flatpak info --show-runtime org.shotcut.Shotcut
得到运行时ID后,用flatpak deps查看该运行时的完整依赖树,确认是否包含NVIDIA驱动扩展:
flatpak deps <获取到的运行时ID>
由于NVIDIA驱动包是org.freedesktop.Platform.GL.default的扩展,若某个应用的运行时依赖该GL组件,那这个应用就是间接引入NVIDIA驱动的来源。
2. 直接查看应用的完整依赖树
使用flatpak deps直接列出每个应用的所有直接/间接依赖,从中查找目标NVIDIA驱动包:
flatpak deps md.obsidian.Obsidian flatpak deps org.gimp.GIMP flatpak deps org.inkscape.Inkscape flatpak deps org.shotcut.Shotcut
在输出中搜索org.freedesktop.Platform.GL.nvidia-535-146-02,对应的应用即为依赖引入者。
3. 通过扩展包反向查找关联应用
先查看NVIDIA驱动扩展所属的父运行时:
flatpak info org.freedesktop.Platform.GL.nvidia-535-146-02
输出中的Parent字段会显示该扩展归属的运行时(比如org.freedesktop.Platform//23.08),再用以下命令找出所有使用该运行时的应用:
flatpak list --app --runtime=<父运行时ID>
例如父运行时为org.freedesktop.Platform//23.08,则执行:
flatpak list --app --runtime=org.freedesktop.Platform//23.08
结果中的应用就是间接引入该NVIDIA驱动包的来源。
内容的提问来源于stack exchange,提问作者Matthew Feickert

