使用dpkg-buildpackage签名软件包失败,但使用debsign成功。

我有以下的GPG密钥:
-----------------------------
pub   2048R/F516F2E7 2017-06-19
uid                  Ulad Kasach <email@provider.com>
sub   2048R/4057A05F 2017-06-19

当我尝试使用dpkg-buildpackage -kF516F2E7 -S -sa创建并签署一个软件包时,我遇到了以下错误:
gpg: skipped "F516F2E7": No secret key
gpg: dpkg-sign.1F6Q4CLd/<package name>.dsc: clearsign failed: No secret key

dpkg-buildpackage: error: failed to sign .dsc and .changes file

然而,如果我运行debsign -k F516F2E7 <package name>.dsc,它会成功。
有人知道为什么会这样吗?以及如何使dpkg-buildpackage成功?
4个回答

我之前也遇到了同样的问题,直到现在才解决。
看起来dpkg-buildpackage希望你在-k标志后面传递一个电子邮件地址,而不是密钥ID。
dpkg-buildpackage -kmyemail@mydomain.com

在此之后,我没有出现任何错误。

1把邮件转给-k是我没有想到的事情,谢谢! - goetz
这对我有用,我尝试了单独签名但没有成功。通过strace发现它在一个临时目录中寻找buildinfo文件。 - Adam D.

尝试:

sudo debuild -b -uc -us

该命令用于生成本地使用的未签名deb文件。

1我从这篇帖子上使用了 -uc -us 标志,并执行了以下操作:sudo dpkg-buildpackage -rfakeroot -b -uc -us。这样做和 debuild 有相同的效果吗? - qwerty9967
2@qwerty9967 是一样的,基于这个网站: http://man7.org/linux/man-pages/man1/dpkg-buildpackage.1.html - "-us, --unsigned-source" 和 "-uc, --unsigned-changes" - Wellington1993
对我来说,使用sudo dpkg-buildpackage -b -uc -us是解决方案。 - poka

虽然这并没有回答“为什么dpkg-buildpackage失败”的问题,但是通过用debuild替换dpkg-buildpackagedebuild接受dpkg-buildpackage参数),可以达到预期的结果。
简而言之:使用"str.replace"将dpkg-buildpackage替换为debuild以获得快速解决方案。

1构建成功。 - zhaofeng-shu33

看起来你没有导入你的私钥。尝试导入它:
gpg --import private-key-file.gpg