如何使得支持 OpenGL 的 Flatpak 應用和遊戲在專有 Nvidia 圖形驅動下工作
這有個例子。我在我的 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 遊戲(以 Flatpak 方式打包的綁定了 Wine 的 Windows 遊戲)似乎也受到了這個問題的影響,這個問題從 2016 年出現至今。
要修復使用 OpenGL 和專有 Nvidia 圖形驅動時無法啟動的 Flatpak 遊戲和應用的問題,你需要為已安裝的專有驅動安裝一個運行時環境。以下是步驟。
1、如果尚未添加 FlatHub 倉庫,請添加它。你可以在此處找到針對 Linux 發行版的說明。
2、現在,你需要確定系統上安裝的專有 Nvidia 驅動的確切版本。
這一步取決於你使用的 Linux 發行版,我無法涵蓋所有情況。下面的說明是面向 Ubuntu(以及 Ubuntu 風格的版本),但希望你可以自己弄清楚系統上安裝的 Nvidia 驅動版本。
要在 Ubuntu 中執行此操作,請打開 「軟體與更新」,切換到 「附加驅動」 選項卡並記下 Nvidia 驅動包的名稱。
比如,你可以看到我的是 「nvidia-driver-390」:
這裡還沒完成。我們只是找到了 Nvidia 驅動的主要版本,但我們還需要知道次要版本。要獲得我們下一步所需的確切 Nvidia 驅動版本,請運行此命令(應該適用於任何基於 Debian 的 Linux 發行版,如 Ubuntu、Linux Mint 等):
apt-cache policy NVIDIA-PACKAGE-NAME
這裡的 「NVIDIA-PACKAGE-NAME」 是 「軟體與更新」 中列出的 Nvidia 驅動包名稱。例如,要查看 「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」)。記住它,因為下一步我們需要。
3、最後,你可以從 FlatHub 為你已安裝的專有 Nvidia 圖形驅動安裝運行時環境。
要列出 FlatHub 上所有可用的 Nvidia 運行時包,你可以使用以下命令:
flatpak remote-ls flathub | grep nvidia
幸運地是 FlatHub 上提供這個 Nvidia 驅動的運行時環境。你現在可以使用以下命令繼續安裝運行時:
針對 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 位系統(或能夠在 64 位上運行 32 位的應用或遊戲),使用以下命令安裝 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 的應用或遊戲的方法。
via: https://www.linuxuprising.com/2018/06/how-to-get-flatpak-apps-and-games-built.html
作者:Logix 選題:lujun9972 譯者:geekpi 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive