如何验证PGP密钥已导入RPM?


13

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

rpm-导入/ path / to / key

但是,以后如何知道是否已导入此密钥?尝试重新导入它会失败并显示错误,我正在尝试避免这种情况,因为我正在使用Puppet安装密钥。

Answers:


10

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

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

2
我发现一些代码的更好方法:KEYFILE=/etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release; KEYID=$(echo $(gpg --throw-keyids < $KEYFILE)|cut -c11-18|tr [A-Z] [a-z]); rpm -q gpg-pubkey-$KEYID
lsd

2
剪切将您绑定到特定的布局,该布局在我的RHEL6测试系统上不起作用。而且gpg现在包括子键和pub键。因此,我最终使用了KEYID=$(gpg --throw-keyids $KEYFILE | sed -n '/^pub/s|^[^/]*/\([[:alnum:]]*\) .*|\1|p' | tr [[:upper:]] [[:lower:]])
dannysauer 2015年


2

如果只想验证密钥是否已导入(无需以编程方式处理此信息),则可以列出所有密钥,如下所示:

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

或ID:

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

这对于许多人来说似乎很明显,但我认为对于某些问题(至少是标题),这是一个更直接的答案。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.