几分钟前,我还在运行 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.2
ppa 中的)是安装的主要候选版本,但没有提供 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