我想删除 Ubuntu 22.04 上的密钥环密钥

我想删除 Ubuntu 22.04 上的密钥环密钥

这是我所做的:

cmd> export distro=ubuntu2204
cmd> export arch=x86_64
cmd> wget https://developer.download.nvidia.com/compute/cuda/repos/$distro/$arch/cuda-keyring_1.0-1_all.deb
cmd> sudo dpkg -i cuda-keyring_1.0-1_all.deb
(Reading database ... 326997 files and directories currently installed.)
Preparing to unpack cuda-keyring_1.0-1_all.deb ...
Unpacking cuda-keyring (1.0-1) over (1.0-1) ...
Setting up cuda-keyring (1.0-1) ...

A deprecated public CUDA GPG key appear to be installed.
To remove the key, run this command:
sudo apt-key del 7fa2af80

cmd> sudo apt-key del 7fa2af80
Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).
OK

“del” 是 Ubuntu 22.04 中唯一仍受支持的 apt-key 子命令。它似乎只发出了一条警告,运行正常。但如果我再次尝试安装 cuda 密钥,则会收到相同的错误。这个干扰密钥是否安装在其他地方,我是否也需要从那里删除它,然后才能安装新的密钥?

问题很简单:我如何删除它抱怨的密钥,以便可以安装新的 cuda-keyring?希望我不需要学习 gpg 理论就可以做到这一点。是的,我已经在 Google 上广泛搜索过这个问题,例如:“从“trusted.gpg.d”中删除 gpg 密钥”和许多其他变体。我认为任何涉及某种强制安装或强制密钥覆盖的答案也是可以的。

答案1

我决定在密钥环的 dpkg 安装上运行 strace。我发现一些 shell 脚本被写出并执行,打印出需要删除密钥的消息。我从来没有查看过 deb 文件,但弄清楚了如何操作,并找到了一个名为“postinst”的文件名。其中有:

...
keyexists="$(GNUPGHOME=/dev/null gpg /etc/apt/trusted.gpg 2>/dev/null | grep -i 7fa2af80)" || true
if [ ! -f "/etc/apt/trusted.gpg" ] || [ ! "$keyexists" ]; then
     removeKey="sudo apt-key del 7fa2af80"
...

如果密钥不存在,它会抱怨需要删除密钥!怎么会这样?简短的版本:我在网络上的其他地方的评论中找到了几乎相同的 shell 脚本,具有相同的“if”逻辑,但它适用于需要添加而不是删除密钥的情况。看起来有人没有费心更改“if”测试,而是为这个密钥环 deb 采用该脚本。这是一个 NVidia 错误,如果我能找到合适的论坛,我会尝试报告。

相关内容