debuild-密钥不可用(其他人的密钥)

debuild-密钥不可用(其他人的密钥)

我正在尝试使用 debuild 构建 cairo。

我读到最后,看到了这条消息:

gpg: skipped "Robert Ancell <[email protected]>": secret key not available

由于我不是罗伯特·安塞尔 (Robert Ancell),所以这很有意义 - 我如何让它使用我自己的密钥?

gpg --list-key outputs:
$ gpg --list-key /home/stu/.gnupg/pubring.gpg
 ----------------------------
pub   1024R/2ADA7053 2009-05-04 uid                  Launchpad PPA for Aleksander Morgado

pub   2048R/17F35B46 2015-01-28 uid                  Stuart Axon
<[email protected]> uid                  Launchpad PPA for Stuart
Axon <[email protected]> sub   2048R/B8E8ED59 2015-01-28

我有环境变量:

DEBSIGN_KEYID=17F35B46

答案1

debuild 要求输入上次编辑变更日志的用户的密钥。如果您要上传到 PPA,那么您的软件包必须与存储库中当前的软件包不同,因此您应该已经编辑了变更日志。

使用dch更新版本和更新日志,然后重建。debuild 将要求您输入密钥。(如果您不确定要使用哪个版本号,请查看在 Launchpad 帮助文档中。

答案2

使用-k选项来告诉debuild使用哪个键,例如

debuild -kB57F5641

-k请注意,和密钥ID之间不允许有空格。

答案3

我目前正在使用 XUbuntu 16.04“Xenial Xerus”,遇到了同样的问题:和都debuild返回debsign了此密钥不可用错误,虽然我确实创建了一个本地密钥,顺便说一下,我已经将其上传到了Ubuntu 密钥服务器, 也。

我已经尝试使用该-k选项手动设置密钥。我还将密钥设置为默认密钥,还编辑了文件debian/changelog,还做了许多其他事情,但都不起作用:我仍然收到相同的错误。

...然后我意识到我已经用gpg2代替GPG。猜猜我做了什么?

  • 首先,我打开了一个 shell 终端窗口并重命名了 gpg 二进制文件:

    sudo mv /usr/bin/gpg /usr/bin/gpg.bak
    
  • 然后我创建了一个gpg指向gpg2二进制文件的符号链接:

    sudo ln -s /usr/bin/gpg2 /usr/bin/gpg
    

在我这样做之后,诸如 等命令debuild -S -sa终于debsign some-file_source.changes起作用了。

我不知道debuilddebsign等到底出了什么问题dpkg-buildpackage,但我的印象是它们正在向 发送参数,gpg尽管只有gpg2才能解析(“理解”)这些参数。因此,创建符号链接(以便创建实际运行 gpg2 二进制文件的假 gpg 二进制文件)可以解决问题。

但还有更优雅的方法可以强制debsign使用gpg2

  • 设置-pgpg2选项debsign
  • 设置DEBSIGN_PROGRAM=gpg2/etc/devscripts.conf~/.devscripts

答案4

首先,每次软件包修订时,您都必须编辑变更日志。如果您对软件包进行更改,则必须这样做;您可以dch按照 Seth 的建议,使用 添加此类变更日志。

然而,如果你只是想制作一个没有其他变化,因此您只需安装该软件包,而不需要编辑更改日志,只需解决签名密钥问题即可。


我不相信这两个答案是 100% 完整的。因此,我将从这两个答案中略微借鉴,但在这里添加我自己的建议和解决方案,因为我nginx经常在合并软件包时这样做。

引用 Seth 的话,debuild将根据上次更改日志编辑器的内容确定密钥。这是自动的,您需要在最新更改日志条目的末尾更新更改日志以使用其中的凭据。


不过,正如 Florian 所说,您还可以使用该-kKEYIDNUM选项来debuild告诉它使用哪个密钥进行签名,并强制使用该密钥。


现在,我针对这两个问题提出了解决方案,即使用我想要签名的密钥自动进行签名...

很长一段时间以来,每当我以前的系统上的旧硬盘坏掉时,我都会遇到这个问题。我真的不想每次都编辑,也不想每次changelog都手动将选项传递给。-kdebuild

最后,MOTU 通过向我介绍明确指定使用什么密钥进行签名来帮助我解决了这个问题.devscripts,它debuild和其他人调用其中定义的内容的环境变量;这允许我添加选项dpkg-buildpackage,它debuild调用,将始终附加。

因此,为了使该-k选项在debuild您运行的每个单次操作中自动起作用,您可以将其添加到~/.devscripts文件中,并自动添加该-k选项,如下所示:

DEBUILD_DPKG_BUILDPACKAGE_OPTS="-kABCD1234"

这将使其持久地添加到debuild选项中;这也是一种强制您的密钥始终用于签名的方法。

这不仅对我的 Ubuntu 上传有帮助,而且对我的 PPA 上传也有帮助。

相关内容