为了最好地确保 RPM 和 Debian 软件包存储库的安全性和可靠性, NVIDIA 从 2022 年 4 月 27 日开始更新并轮换apt
、dnf/yum
和zypper
软件包管理器使用的签名密钥。
如果不更新存储库签名密钥,则在尝试从 CUDA 存储库访问或安装软件包时,可能会出现软件包管理错误。
要确保继续访问最新的 NVIDIA 软件,请完成以下步骤。
删除过期的签名密钥
Debian 、 Ubuntu 、 WSL
$ sudo apt-key del 7fa2af80
软呢帽、瑞尔、 openSUSE 、 SLES
$ sudo rpm --erase gpg-pubkey-7fa2af80*
安装新密钥
对于基于 Debian 的发行版,包括 Ubuntu ,您还必须安装新的软件包或手动安装新的签名密钥。
安装新的 cuda 钥匙圈组件
为了避免手动密钥安装步骤的需要, NVIDIA 提供了一个新的帮助程序包,用于自动安装 NVIDIA 存储库的新签名密钥。
将以下命令中的$distro/$arch
替换为适合您的操作系统的值;例如:
- debian10/x86_64
- debian11/x86_64
- ubuntu1604/x86_64
- ubuntu1804 / cross linux sbsa
- ubuntu1804 / ppc64el
- Ubuntu 1804 / sbsa
- ubuntu1804/x86_64
- ubuntu2004 / cross linux sbsa
- Ubuntu 2004 / sbsa
- ubuntu2004/x86_64
- Ubuntu 2204 / sbsa
- ubuntu2204/x86_64
- wsl-ubuntu/x86_64
Debian 、 Ubuntu 、 WSL
$ wget https://developer.download.nvidia.com/compute/cuda/repos/$distro/$arch/cuda-keyring_1.0-1_all.deb
$ sudo dpkg -i cuda-keyring_1.0-1_all.deb
替代方法:手动安装新的签名密钥
如果无法安装 cuda 密钥环软件包,可以手动安装新的签名密钥(不是推荐的方法)。
Debian 、 Ubuntu 、 WSL
$ sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/$distro/$arch/3bf863cc.pub
RPM 发行版
在新安装时, Fedora 、 RHEL 、 openSUSE 或 SLES as dnf/yum/zypper
会在存储库签名密钥更改时提示您接受新密钥。在提示时接受更改。
将以下命令中的$distro/$arch
替换为适合您的操作系统的值;例如:
- fedora32/x86_64
- fedora33/x86_64
- fedora34/x86_64
- fedora35/x86_64
- opensuse15/x86_64
- 规则 7 / ppc64le
- rhel7/x86_64
- rhel8 / cross linux sbsa
- 规则 8 / ppc64le
- rhel8 / sbsa
- rhel8/x86_64
- sles15 / cross linux sbsa
- sles15 / sbsa
- sles15/x86_64
要在基于 RPM 的发行版(包括 Fedora 、 RHEL 和 SUSE )上升级,还必须运行以下命令。
Fedora 和 RHEL 8
$ sudo dnf config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/$distro/$arch/cuda-$distro.repo
RHEL 7
$ sudo yum-config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/rhel7/$arch/cuda-rhel7.repo
openSUSE 和 SLES
$ sudo zypper removerepo cuda-$distro-$arch
$ sudo zypper addrepo https://developer.download.nvidia.com/compute/cuda/repos/$distro/$arch/cuda-$distro.repo
使用容器
CUDA 使用旧的 NGC 基本容器构建的应用程序可能包含过时的存储库密钥。如果您使用这些映像作为基础构建 Docker 容器,并更新 package manager ,或在 Dockerfile 中安装其他 NVIDIA 软件包,这些命令可能会失败,就像在非容器系统上一样。要解决此问题,请将以前的命令集成到用于构建容器的 Dockerfile 中。
未使用 package manager 安装更新的现有容器不受此密钥轮换的影响。
与 NVIDIA GPU 运营商合作
如果您是 Ubuntu 发行版上 GPU 操作符的当前用户,您可能会受到 CUDA GPG 键旋转的影响,其中 GPU 操作符管理的一些容器可能无法启动,出现以下错误:
Stopping NVIDIA persistence daemon... Unloading NVIDIA driver kernel modules... Unmounting NVIDIA driver rootfs... Checking NVIDIA driver packages... Updating the package cache... W: GPG error: https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/ InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY A4B469963BF863CC E: The repository 'https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64 InRelease' is no longer signed.
NVIDIA 正在通过覆盖现有图像标签为驱动程序容器发布新图像。您可以通过更新现有clusterPolicy
以获取新图像来解决此错误:
$ kubectl edit clusterpolicy ... set driver.imagePullPolicy=Always
此步骤导致 GPU 操作员提取更新的图像。
GPU 操作员的新安装应不受此更改的影响,并且不需要任何clusterPolicy
更新。如果您在 RHEL 或 OpenShift 上使用 GPU 运算符,您也不会受到此更改的影响。