NVIDIA 440.64 32 位库包破坏 64 位驱动程序包

NVIDIA 440.64 32 位库包破坏 64 位驱动程序包

几分钟前,我还在运行 Ubuntu 18.04 安装,使用的是 NVIDIA 440.59 专有驱动程序 (GTX 970)。然后我决定手动升级到 440.64,即使 apt 保留了它,现在 Steam 无法启动了,因为我后来发现,它依赖于 NVIDIA 32 位库。

问题是,安装 OpenGL 32 位库会破坏其他软件包:

-@-:~$ sudo apt-get install libnvidia-gl-440:i386 -s
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  libnvidia-cfg1-440 libnvidia-decode-440 libnvidia-encode-440 libnvidia-fbc1-440 libxnvctrl0 nvidia-compute-utils-440 nvidia-dkms-440
  nvidia-kernel-common-440 nvidia-kernel-source-440 nvidia-prime nvidia-settings nvidia-utils-440 screen-resolution-extra xserver-xorg-video-nvidia-440
Use 'sudo apt autoremove' to remove them.
The following packages will be REMOVED:
  libnvidia-gl-440 libnvidia-ifr1-440 nvidia-driver-440 // <====
The following NEW packages will be installed:
  libnvidia-gl-440:i386
0 upgraded, 1 newly installed, 3 to remove and 0 not upgraded.
Remv nvidia-driver-440 [440.64.00-0ubuntu1]
Remv libnvidia-ifr1-440 [440.64.00-0ubuntu1]
Remv libnvidia-gl-440 [440.64.00-0ubuntu1]
Inst libnvidia-gl-440:i386 (440.64-0ubuntu0~0.18.04.2 Proprietary GPU Drivers:18.04/bionic [i386])
Conf libnvidia-gl-440:i386 (440.64-0ubuntu0~0.18.04.2 Proprietary GPU Drivers:18.04/bionic [i386])

我必须假设 440.59 不会发生这种情况,因为我能够启动 steam 并运行我的 OpenGL/CUDA 程序。有什么方法可以强制它安装这些库吗?或者,是否可以恢复到 440.59,还是我必须降级到 435/430?驱动程序是从显卡驱动程序苯丙胺。

答案1

如果有人感兴趣的话,我仔细研究了一下,发现我添加了两个 NVIDIA 驱动程序源,一个是图形驱动程序 ppa,另一个是 CUDA repos。CUDA repos 中的版本(440.64.00-0ubuntu1,而不是440.64-0ubuntu0~0.18.04.2ppa 中的)是安装的主要候选版本,但没有提供 32 位库。因此,唯一的问题是尝试安装不同版本的 32 位库。

我所做的是清除所有 NVIDIA 软件包,暂时禁用 CUDA 存储库并重新安装所有内容。现在 CUDA 存储库的更新被保留,因为没有候选版本可以将 32 位库更新到该版本,但一切正常。

脚步

  • 删除 NVIDIA 驱动程序和库:

    $ sudo apt-get purge nvidia-* libnvidia-*
    
  • 禁用 CUDA repo,重命名cuda.list或者/etc/apt/sources.list.d注释掉其内容:

    $ sudo nano /etc/apt/sources.list.d/cuda.list
    #deb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64 /
    
  • 更新并检查候选版本:

    $ sudo apt-get update
    $ apt-cache policy nvidia-driver-[version] libnvidia-gl-[version]:i386
    

    我启用两个源后看起来是这样的,如果你禁用 CUDA repo,它们应该显示相同的版本表和相同的候选版本:

    nvidia-driver-440:
    Installed: 440.64-0ubuntu0~0.18.04.2
    Candidate: 440.64.00-0ubuntu1
    Version table:
        440.64.00-0ubuntu1 500
            500 http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64  Packages
    *** 440.64-0ubuntu0~0.18.04.2 500
            500 http://ppa.launchpad.net/graphics-drivers/ppa/ubuntu bionic/main amd64 Packages
            100 /var/lib/dpkg/status
        440.33.01-0ubuntu1 500
            500 http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64  Packages
    libnvidia-gl-440:i386:
    Installed: 440.64-0ubuntu0~0.18.04.2
    Candidate: 440.64-0ubuntu0~0.18.04.2
    Version table:
    *** 440.64-0ubuntu0~0.18.04.2 500
            500 http://ppa.launchpad.net/graphics-drivers/ppa/ubuntu bionic/main i386 Packages
            100 /var/lib/dpkg/status
    
  • 重新安装驱动程序,并根据需要手动安装 32 位库:

    $ sudo apt-get install nvidia-driver-[version]
    $ sudo apt-get install libnvidia-gl-[version]:i386
    
  • 您可以启用 CUDA repo,只要没有兼容的新版本的 32 位库,新的更新就会被保留。

答案2

我在运行 Steam 时也遇到了同样的问题 - 感谢Sneppy 的答案

# clean out those nvidia packages
# dpkg and awk are used to find and list the packages to remove
# this may not be perfect, but it works well and worked for me
sudo apt purge $(dpkg -l | awk '{print $2}' | grep nvidia)

# add the i386 architecture
sudo dpkg --add-architecture i386
sudo apt update

# install needed packages
sudo apt-get install nvidia-driver-440 libnvidia-gl-440:i386

# restart the system to ensure everything is reloaded nicely
#sudo reboot

相关内容