如何通过自己的Nvidia图形驱动程序使用由OpenGL构建的Flatpak应用和游戏

某些使用OpenGL支持构建并打包为Flatpak的应用程序和游戏无法使用专有的Nvidia驱动程序启动。本文介绍了如何在不安装开源驱动程序(Nouveau)的情况下启动Flatpak应用程序和游戏。
这是一个例子。我在Ubuntu 18.04桌面上使用自己的Nvidia驱动程序(nvidia-driver-390尝试启动安装为Flatpak的最新Krita 4.1(使用OpenGL支持构建)时,出现以下错误:

$ /usr/bin/flatpak run --branch=stable --arch=x86_64 --command=krita --file-forwarding org.kde.krita
Gtk-Message: Failed to load module "canberra-gtk-module"
Gtk-Message: Failed to load module "canberra-gtk-module"
libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast
Could not initialize GLX

似乎有一个Winepak游戏(Windows游戏与Wine捆绑在一起作为Flatpak软件包) 受影响的 通过这个Flatpak 问题问题,自2016年开始营业。
要修复在使用带有专有Nvidia图形驱动程序的OpenGL时启动Flatpak游戏和应用程序,必须为当前安装的专有Nvidia驱动程序安装运行时。这样做的方法如下:1.如果还没有,请添加FlatHub存储库。您可以找到适合您的Linux发行版的确切步骤 在这里.2。接下来,您需要知道系统上安装的Nvidia驱动程序的确切版本。此过程取决于您使用的Linux发行版,可能无法涵盖所有​​情况。以下步骤是面向Ubuntu(和Ubuntu风格)的,但是希望您可以了解系统上安装的Nvidia驱动程序版本。
要在Ubuntu上执行此操作, Software & Updates切换到 Additional Drivers 单击选项卡,并记下Nvidia驱动程序包的名称。
例如,这是 nvidia-driver-390 就我而言,您可以在此处看到:附加驱动程序选项卡NVIDIA专有Ubuntu

这还不是全部。仅找到Nvidia驱动程序的主要版本,但您还需要了解次要版本。要获得下一步所需的确切Nvidia驱动程序版本,请运行以下命令(应在基于Debian的Linux发行版(如Ubuntu,Linux Mint)上运行)。

apt-cache policy NVIDIA-PACKAGE-NAME

NVIDIA-PACKAGE-NAME是列出的Nvidia驱动程序包名称。 Software & Updates。例如,确定安装的确切版本 nvidia-driver-390 在包中执行以下命令:

$ apt-cache policy nvidia-driver-390
nvidia-driver-390:
  Installed: 390.48-0ubuntu3
  Candidate: 390.48-0ubuntu3
  Version table:
 *** 390.48-0ubuntu3 500
        500 http://ro.archive.ubuntu.com/ubuntu bionic/restricted amd64 Packages
        100 /var/lib/dpkg/status

在此命令的输出中, Installed 写下部分和版本号(不包括 -0ubuntu3 和类似)。您现在知道已安装的Nvidia驱动程序的确切版本(390.48 在我的示例中)。记住这一点,因为下一步将需要它。最后,您可以从FlatHub为自己安装的Nvidia图形驱动程序安装Nvidia运行时。
要列出FlatHub上所有可用的Nvidia运行时软件包,可以使用以下命令:

flatpak remote-ls flathub | grep nvidia

我们希望已安装的Nvidia驱动程序运行时在FlatHub上可用。您可以使用以下命令进行运行时安装:

  • 对于64位系统:
flatpak install flathub org.freedesktop.Platform.GL.nvidia-MAJORVERSION-MINORVERSION

将MAJORVERSION替换为计算机上安装的Nvidia驱动程序的主要版本(上例中为390),
MINORVERSION和次要版本(在第2步的示例中为48)。
例如,要安装Nvidia图形驱动程序版本390.48的运行时,必须使用以下命令:

flatpak install flathub org.freedesktop.Platform.GL.nvidia-390-48
  • 对于32位系统(或允许32位应用程序或游戏在64位上运行),请使用以下命令安装32位运行时:
flatpak install flathub org.freedesktop.Platform.GL32.nvidia-MAJORVERSION-MINORVERSION

再次,将MAJORVERSION替换为计算机上安装的Nvidia驱动程序的主要版本(上述示例中为390),将MINORVERSION替换为次要版本(步骤2中的示例为48)。
例如,要安装Nvidia图形驱动程序版本390.48的32位运行时,必须使用以下命令:

flatpak install flathub org.freedesktop.Platform.GL32.nvidia-390-48

这就是运行以OpenGL构建的Flatpak打包的应用程序或游戏所需的全部。

Sidebar