安装 32 位 libnvidia-gl 和 64 位版本

Bra*_*ram 6 nvidia steam cuda

因为 linux 的 Steam 客户端只有 32 位二进制文​​件,所以我想在我的 64 位 Ubuntu 操作系统上安装libnvidia-gl:i386

但是,如果我这样做,包管理器想要卸载 cuda-11。但是,我需要 cuda-11。

如何在不干扰 cuda 的情况下让 64 位和 32 位版本的 libnvidia-gl 共存?

$ sudo apt install libnvidia-gl-455:i386
...
The following additional packages will be installed:
  libnvidia-common-455 libnvidia-compute-455 libnvidia-decode-455 libnvidia-encode-455 libnvidia-fbc1-455
The following packages will be REMOVED:
  cuda-11-1 cuda-demo-suite-11-1 cuda-drivers cuda-drivers-455 cuda-runtime-11-1 libnvidia-gl-455 libnvidia-ifr1-455 nvidia-driver-455
The following NEW packages will be installed:
  libnvidia-gl-455:i386
The following packages will be upgraded:
  libnvidia-common-455 libnvidia-compute-455 libnvidia-decode-455 libnvidia-encode-455 libnvidia-fbc1-455
5 upgraded, 1 newly installed, 8 to remove and 34 not upgraded.
Need to get 42.2 MB of archives.
After this operation, 195 MB disk space will be freed.
Do you want to continue? [Y/n] 
Run Code Online (Sandbox Code Playgroud)

Tim*_*mSC 4

2023 年 2 月更新:Nvidia 已恢复为 CUDA 提供 32 位库。这应该只是使用他们的存储库的一个原因。

Steam 和 Linux 上的大多数游戏都依赖于可用的 32 位 OpenGL 库。然而,Nvidia计划在一段时间内放弃对 CUDA 的 32 位支持。幸运的是,可以手动安装必要的 32 位库以使 Steam 运行。

我建议您先从Nvidia 存储库安装 CUDA 和 64 位驱动程序,然后检查安装的驱动程序版本。显然,32 位库文件必须与安装的驱动程序版本相匹配。可以通过使用安装程序提供的仅提取选项来获取适当的文件,例如,对于 465.19.01,获取驱动程序并执行 ./NVIDIA-Linux-x86_64-465.19.01.run -x

i386 库文件位于名为“32”的文件夹中。手动安装 32 位库:

chmod u+x NVIDIA-Linux-x86_64-465.19.01.run
./NVIDIA-Linux-x86_64-465.19.01.run -x
cd NVIDIA-Linux-x86_64-465.19.01
cd 32
sudo cp libEGL* libGLESv* libGLX* libnvidia-egl* libnvidia-gl* libnvidia-tls* /usr/lib32
Run Code Online (Sandbox Code Playgroud)

应该创建一些符号链接(根据需要更新版本号)(此步骤可能不需要?):

cd /usr/lib32
sudo ln -s libEGL_nvidia.so.465.19.01 libEGL_nvidia.so.0
sudo ln -s libGLESv1_CM_nvidia.so.465.19.01 libGLESv1_CM_nvidia.so.1
sudo ln -s libGLESv2_nvidia.so.465.19.01 libGLESv2_nvidia.so.2
sudo ln -s libGLX_nvidia.so.465.19.01 libGLX_indirect.so.0
sudo ln -s libGLX_nvidia.so.465.19.01 libGLX_nvidia.so.0
Run Code Online (Sandbox Code Playgroud)

如果您的 /usr/lib32 未检查库,请使用以下内容创建文件 /etc/ld.so.conf.d/nvidia32.conf:

/usr/lib32
Run Code Online (Sandbox Code Playgroud)

您可能需要运行此命令以使系统检测新库:

sudo ldconfig
Run Code Online (Sandbox Code Playgroud)

  • 我花了数年时间尝试让 Steam 在安装 CUDA 驱动程序的同时工作,这是*唯一*对我有用的解决方案。另一件需要注意的事情是,您安装的 32 位库*必须*与 CUDA 驱动程序的版本完全相同;当它更新时,您可以通过在这里搜索找到您需要的特定版本:https://www.nvidia.com/Download/Find.aspx?lang=en-us (2认同)

Too*_*ter 1

这是 Steam 的 github 页面上关于这个确切问题的线程。那里有一些解决方案/解决方法,但我没有时间检查所有这些(或者不喜欢破坏包管理器的解决方法),所以暂时放弃了。现在我有带有附加:i386库的 v460 驱动程序(我之前添加了外部架构)并暂时删除了 CUDA。

我认为最干净的方法是在 CUDA 环境中运行 Rapids docker 容器。另一方面,这迫使您学习 docker,配置新的 docker 环境,并可能引入一些其他 docker 相关问题,但至少这是一个保持一切干净并与原始系统分离的解决方案。在这个问题的github回复中有关于如何做到这一点的进一步解释。如果您真的不介意这种设置,那么这可能是您的选择。

就我而言,由于某些驱动程序和 cuda 存储库冲突,安装额外的库也存在问题:i386(他们禁用了驱动程序并删除了软件包)。:amd64我还必须使用 cuda 完全清除 nvidia,从中删除 cuda 存储库/etc/apt/sources.list并再次安装 nvidia 驱动程序(现在使用libnvidia-gl-460:i386)。如果您遇到问题,您可以随时检查库和驱动程序的状态:

apt-cache policy nvidia-driver-460 libnvidia-gl-460 libnvidia-gl-460:i386
Run Code Online (Sandbox Code Playgroud)