GPG 什么时候加载它的密钥?

When does GPG load its keys?

在 OpenWRT 安装中,我有一个更新脚本可以下载文件并检查其 GPG 签名。

如果我 运行 这个脚本在启动时 rc.d 优先级为 99(这是最后一个),我会得到一个 "gpg: Can't check signature: public key not found" 错误。如果我通过 Cron 或手动 运行 它,一切正常。

我还尝试在 运行 脚本之前添加 60 秒的睡眠。

有没有办法知道 GPG 何时完成初始化?

你能post你使用的脚本吗?

一个可能的解决方案是在检查签名之前添加 public 密钥导入作为脚本的一部分,因此它始终可用于 gpg。

这个答案也可以阐明这个错误:Can't check signature: public key not found

事实证明,rc.d 中的脚本不是 运行 作为 root,或者尚未指定 root home(?),因此 GPG 寻找签名的 home 目录不同(它正在查看 //.gnupg/ 而不是 /root/.gnupg/)。 在GPG中添加homedir参数允许指定目录;这有效:

gpg --homedir /root/.gnupg/ --verify update.gpg