从 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 兼容,并且仍然为您的内核维护;您可以浏览以下文档:
- https://www.nvidia.com/en-us/drivers/unix/legacy-gpu/
- https://packages.ubuntu.com/search?suite=groovy&arch=amd64&searchon=names&keywords=nvidia
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>
遗憾的是不起作用。