如何验证 PGP 密钥是否已导入到 RPM 中?

如何验证 PGP 密钥是否已导入到 RPM 中?

可以通过以下方式导入密钥:

rpm --导入/路径/到/密钥

但是稍后如何判断您是否已经导入了该密钥呢?尝试重新导入它将失败并出现错误,我试图避免这种情况,因为我正在使用 Puppet 来安装密钥。

答案1

您可以使用 仔细检查密钥是否已导入rpm -qi gpg-pubkey-<version>-<release>。如果已安装,rpm 将为您提供有关它的所有信息,如果没有,它将退出并返回值 1,因此您可以向您的 puppet Recipe 添加一个unless参数:

exec { "rpm --import /path/to/package":
  # ...
  unless => "rpm -qi gpg-pubkey-<version>-<release> > /dev/null 2>&1"
}

答案2

导入的每个密钥都会添加一个 rpmdb 条目gpg-pubkey-<left(hex(fingerprint), 8)>-<encoded import date>。只需gpg-pubkey在 rpmdb 中检查该名称 ( ) 和相应的版本(十六进制密钥指纹的前 8 个字符)即可。

答案3

如果您只想验证密钥是否已导入(而不以编程方式处理此信息),您可以像这样列出所有密钥:

rpm -qi gpg-pubkey-\* | grep -E ^Packager

或者对于 ids:

rpm -qi gpg-pubkey-\* | grep -E "^Version  "

这对许多人来说似乎很明显,但我想对某些人来说,这是对问题(至少是标题)的更直接的回答。

答案4

对于我来说(在 Oracle Linux 7 上),有必要手动将其复制到:

/var/lib/rpm/pubkeys/RPM-GPG-KEY-${REPONAME}.key

我什至可以导入公钥两次,没有错误消息,但验证仍然失败。但我还没有找出原因。也许下次我会尝试:

yum makecache

据报道有时会有帮助,我希望我能找到一些关于什么在哪里、什么时候发生的清晰文档,而不必使用 strace 和 Google。

我希望这可以帮助别人...

相关内容