在 Ubuntu 20.10 上安装 nvidia 驱动程序时又出现未满足依赖关系的情况 - 如何修复?

在 Ubuntu 20.10 上安装 nvidia 驱动程序时又出现未满足依赖关系的情况 - 如何修复?

从 20.04 到 20.10 进行 dist-upgrade 后,我现在有损坏的 NVidia 驱动程序,无法重新安装。无论我做什么,它都会以以下方式结束:

The following packages have unmet dependencies:
 nvidia-driver-460 : Depends: libnvidia-compute-460 (= 460.67-0ubuntu0~0.20.10.1) but 460.73.01-0ubuntu1 is to be installed
                     Depends: libnvidia-decode-460 (= 460.67-0ubuntu0~0.20.10.1) but it is not going to be installed
                     Depends: libnvidia-encode-460 (= 460.67-0ubuntu0~0.20.10.1) but it is not going to be installed
                     Recommends: nvidia-settings but it is not going to be installed
                     Recommends: nvidia-prime (>= 0.8) but it is not going to be installed
                     Recommends: libnvidia-compute-460:i386 (= 460.67-0ubuntu0~0.20.10.1)
                     Recommends: libnvidia-decode-460:i386 (= 460.67-0ubuntu0~0.20.10.1)
                     Recommends: libnvidia-encode-460:i386 (= 460.67-0ubuntu0~0.20.10.1)
                     Recommends: libnvidia-ifr1-460:i386 (= 460.67-0ubuntu0~0.20.10.1)
                     Recommends: libnvidia-fbc1-460:i386 (= 460.67-0ubuntu0~0.20.10.1)
                     Recommends: libnvidia-gl-460:i386 (= 460.67-0ubuntu0~0.20.10.1)
E: Unable to correct problems, you have held broken packages.

重要的部分似乎是依赖:libnvidia-compute-460 (= 460.67-0ubuntu0~0.20.10.1) 但需要安装 460.73.01-0ubuntu1

我尝试了各种方法来找到答案,比如重新添加 ppa 和

尝试将所有依赖项放在一行中:

sudo apt install libnvidia-common-440 libnvidia-compute-460 libnvidia-decode-460 libnvidia-encode-460

尝试过:

sudo apt-add-repository ppa:graphics-drivers/ppa
ubuntu-drivers devices
sudo apt install nvidia-driver-460

尝试重建来源:

sudo rm /etc/apt/sources.list 
sudo software-properties-gtk 

然后再次选择所有来源sudo apt-get update && sudo apt-get dist-upgrade -y,但问题是一样的。

还尝试过:

sudo apt -f install

没有不同。

然后我尝试:

sudo apt remove nvidia*
sudo apt autoremove
sudo ubuntu-drivers autoinstall

但结果是一样的。

我怎样才能解决这个问题?

答案1

也许这个 nvidia 驱动程序与最新内核不兼容。你可以在 Nvidia 的网站上找到有关旧版驱动程序的信息: https://www.nvidia.com/en-us/drivers/unix/legacy-gpu/

根据您的硬件(和内核),您可能有几种解决方案。

1/ 删除 nvidia 的驱动程序并安装 ubuntu 内核的通用显示驱动程序

sudo  systemctl  stop  lightdm.service

sudo  apt  purge  '^nvidia-*'

sudo  apt  install  xserver-xorg-video-nouveau

sudo  reboot  now

2/ 用 Ubuntu 中的另一个驱动程序替换 nvidia-driver-460,该驱动程序可能与您的 GPU 兼容,并且仍然为您的内核维护;您可以浏览以下文档:

3/ 尝试与您的硬件兼容的另一个 Nvidia 驱动程序;nvidia 提供兼容性信息和下载:

第一个解决方案看起来更简单但可能无法充分利用硬件的所有功能。

我希望这会有所帮助...

答案2

我发现,一些 nvidia 模块的 makefile 包含一个非常粗略的

CC=cc

行,然后继续编译,发出 gcc 特定的命令和指令,以在安装期间构建其模块。我怀疑生成该 makefile 的任何东西都没有意识到 cc 是系统默认 C 编译器的占位符,并且不需要是 gcc。

有些人更喜欢 clang 而不是 gcc,因此他们会覆盖系统的默认编译器。如果模块构建脚本假设您正在使用 gcc,则某些软件包将配置不正确,并在安装驱动程序时导致问题。我以前在使用 nvidia 驱动程序时遇到过这个问题。

因此,如果你将 cc 更改为你选择的内容,你应该尝试使用以下方法暂时将 cc 重新设置为 gcc

update-alternatives --config cc

以 root 身份登录,然后选择 gcc(通常为选项 0)。然后重试驱动程序安装。完成后,不要忘记将其改回之前的设置。

和不

CC=gcc apt install nvidia-driver-<version>

遗憾的是不起作用。

相关内容