![Aptly 发布 snaphost 找不到 GPG 密钥(Ubuntu 20.04)](https://linux22.com/image/1025951/Aptly%20%E5%8F%91%E5%B8%83%20snaphost%20%E6%89%BE%E4%B8%8D%E5%88%B0%20GPG%20%E5%AF%86%E9%92%A5%EF%BC%88Ubuntu%2020.04%EF%BC%89.png)
我正在尝试恰当地发布快照:
aptly publish snapshot --architectures all myrelease-0.1
如果我指定 --skip-signing,它就会起作用。但如果我不指定,我就会得到:
Loading packages...
Generating metadata files and linking package files...
Finalizing metadata files...
Signing file 'Release' with gpg, please enter your passphrase when prompted:
gpg: no default secret key: secret key not available
gpg: signing failed: secret key not available
ERROR: unable to publish: unable to detached sign file: exit status 2
我之前运行过:gpg --full-generate-key
,并成功完成。
我认为 aptly 正在寻找 ~/.gnupg/secring.gpg,它是空的,因为 gnupg 2.2 将私钥移到了它们自己的目录 (private-keys-v1.d)。但我不确定这一点。
有人成功获得在 Ubuntu 20.04 或 18.04 上签名吗?
答案1
首先,请注意,Aptly 应该明确使用 gpg v1.x:https://www.aptly.info/doc/feature/pgp-providers/
您可以使用生成密钥gpg1
,因为您的系统可能会将gpg
命令与gpg2
可执行文件进行符号链接。
至于密钥丢失......对我来说,我在 Ubuntu 20.04 上遇到了类似的问题:
我最终不得不在发布命令中明确声明与 GPG 相关的所有内容。生成时我没有使用任何“自定义”密钥环,只是使用了 GPG 默认值,但 Aptly 对此不太满意。
示例(用您的值替换值)...
aptly publish snapshot \
-secret-keyring="secring.gpg" \
-keyring="pubring.gpg" \
-passphrase="myPassword" \
-gpg-key="XYZ123" \
-batch \
-architectures="amd64" \
-distribution=focal \
foo
一旦它开始工作,您就可以开始精简参数,直到缩小导致问题的范围。在我的例子中,我使用的是 gpgv2 与 v1 混合使用,读取 v2 生成的密钥环时出现问题。在 v1 中重新生成密钥后,一切都按照默认设置运行。
参数参考:
user@host1:~ # aptly publish help snapshot |grep GPG
Valid GPG key is required for publishing.
-batch: run GPG with detached tty
-gpg-key="": GPG key ID to use when signing the release
-keyring=: GPG keyring to use (instead of default)
-passphrase="": GPG passhprase for the key (warning: could be insecure)
-passphrase-file="": GPG passhprase-file for the key (warning: could be insecure)
-secret-keyring="": GPG secret keyring to use (instead of default)
-skip-signing: don't sign Release files with GPG