如何在Ubuntu上防止NVIDIA驱动程序自动升级?

15

昨晚我在我的Ubuntu工作站上训练模型,今天早上醒来后看到了这个消息:

Failed to initialize NVML: Driver/library version mismatch

显然,NVIDIA系统驱动程序自动更新了,现在我需要重新启动机器才能使用我的GPU... 我该如何防止NVIDIA的自动更新?


不确定为什么人们想要关闭这个。解决方案很明显吗?如果不是,也许你应该留下一些反馈! - vgoklani
2
我认为你的问题非常重要,不应该被关闭。如果我的解决方案解决了你的问题,请标记为已接受。谢谢! - Eljas Hyyrynen
3个回答

18
如果这是由于未经监控的升级引起的(很可能),那么您应该将NVIDIA驱动程序添加到其黑名单中。像这样将nvidia-libnvidia-添加到/etc/apt/apt.conf.d/50unattended-upgrades中:
Unattended-Upgrade::Package-Blacklist {
        "nvidia-";
        "libnvidia-";
        ...
}

如果在 apt list --installed | grep nv 的输出中看到其他 NVIDIA 驱动程序名称,请考虑添加其他行。


我有一个媒体服务器,其中包含nvidia-container-runtime for docker以及nvenc/nvdec。我的所有nvidia软件包名称都与正则表达式“^(lib)?nvidia-”匹配。此外,一些“linux-*-nvidia-*”软件包已经被默认的无人值守升级规则覆盖。 - snake_case

2

我想你遇到了同样的问题。这是由于Ubuntu上所谓的无人值守升级引起的。

解决方案1:检查更改的软件包并还原更新

检查apt历史记录日志

less /var/log/apt/history.log

然后您可以看到哪些软件包已更改。使用aptaptitude来恢复更改。

解决方案2:禁用自动升级

使用此指南来禁用未经授权的升级。请考虑此解决方案是否适合您,因为在此更改后,您必须手动安装安全更新。

解决方案3: 保留特定软件包

使用此指南了解如何保留某些软件包。如上所述,请阅读apt历史记录,以确定您必须保留哪些软件包,可能是CUDA相关软件包,如nvidia-cuda-toolkit。由于您的帖子中缺少一些信息,很难说。您可以这样查看所有与nvidia相关的软件包。

dpkg -l *nvidia*

我希望我的解决方案中至少有一种适用于您:)
附言:您需要更改标题。 NVIDIA本身不会升级您系统上的任何内容。是Ubuntu引起了您的问题;)

4
禁用未经授权的升级不是更好的解决方案,而是将NVIDIA软件包添加到未经授权升级黑名单文件中:/etc/apt/apt.conf.d/50unattended-upgrades - RVRX
@RVRX听起来确实是无人值守升级的好解决方案。 - Eljas Hyyrynen

0
如果你检查你的/var/log/dpkg.log文件,你会发现它在早上自动升级你的nvidia*和libnvidia*软件包,就像截图中显示的那样。一个更激进的禁用方法是执行sudo apt remove unattended-upgrades命令。参考链接

screenshot1 screenshot2


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接