如何正确签名修改和重新编译的软件包?


20

dpkg-buildpackage在获得apt-get source nginxnginx的反向版本后,进行了修改,debian/rules以包括uwsgi模块。该命令的最后结果是:

dpkg-deb: building package `nginx' in `../nginx_0.7.67-3~bpo50+1_i386.deb'.
dpkg-deb: building package `nginx-dbg' in `../nginx-dbg_0.7.67-3~bpo50+1_i386.deb'.
 signfile nginx_0.7.67-3~bpo50+1.dsc
gpg: keyring `/home/shogun/.gnupg/secring.gpg' created
gpg: skipped "Faidon Liambotis <paravoid@debian.org>": secret key not available
gpg: [stdin]: clearsign failed: secret key not available

 dpkg-genchanges  >../nginx_0.7.67-3~bpo50+1_i386.changes
dpkg-genchanges: warning: the current version (0.7.67-3~bpo50+1) is smaller than the previous one (0.7.67-3)
dpkg-genchanges: not including original source code in upload
dpkg-buildpackage: binary and diff upload (original source NOT included)
dpkg-buildpackage: warning: Failed to sign .dsc and .changes file

它抱怨说,因为我不是软件包的原始维护者,所以我的密钥不匹配。

这真的有必要吗?如果是的话,如何使用我的密钥进行gpg匹配?

Answers:


32

如果您为私人使用而构建了PGP签名的Debian软件包,则没有必要。当(新)Debian开发人员将新软件包上传到Debian的“不稳定”分支时,这只是常见的身份验证方法。

为避免错误消息,请使用:

dpkg-buildpackage -uc -us

(另请参见dpkg-buildpackage的联机帮助页)


我只是看了父目录,似乎它没有根据的修改日期创建那些.deb文件ls -al。由于gpg验证失败而无法创建它们,对吗?用您的新命令意味着它应该创建它们?还是我弄错了?
meder omuraliev

6

当您制作软件包的其他版本时(因为您更改了构建规则,所以这样做了),实际上应该添加一个changelog条目。这样,您的软件包将具有不同的版本号(因此您将立即知道它不是发行版中的标准软件包),并且您将看到更改的痕迹。

编辑debian/changelog,并添加一个模仿现有条目格式的条目。从今天起将其作为日期,并选择一个版本号like 0.7.67-3~bpo50+meder1(您想要显示dpkg --compare-versions您的版本较新的内容)。将您的电子邮件地址作为维护者;这样,您就可以清楚地表明这是您修改的软件包,并dpkg-buildpackage会要求您提供GPG密码。

如果您是Emacs用户,请安装该dpkg-dev-el软件包,然后使用C-c C-aC-c C-c命令添加并最终确定您的变更日志条目。


5

虽然没有必要对软件包进行签名,并且-uc -us可以使用这些选项来避免该步骤,但是对软件包进行签名也很有帮助,尤其是在其他人将使用它的情况下,或者您将通过不安全的通信路径发送它。而且一点也不难。

要生成良好的签名,请参见dpkg-buildpackage手册页。默认情况下,它使用gpg对软件包进行签名。从打印的错误消息来看,您似乎还没有生成gpg密钥。有关一些说明和背景,请参见例如GnuPrivacyGuardHowto-社区Ubuntu文档

如@Gilles所述,您还应该通过changelog文件更改软件包的版本号,并提供将要使用的gpg密钥的电子邮件地址。一个简单的方法就是运行dch --local foo命令,其中“ foo”是更改的关键字。如果你真的不想这样做,需要指定不同的维护或上传名称/地址,或特定键时要使用的签名,你也可以使用-m-e或者-k构建时的选项。

有关更多提示,请参见如何重建Debian软件包

当有人试图确定给定的程序包是否由他们信任的人签名时,就会出现棘手的部分。查看PGP信任网,以解决所涉及的细微问题。

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.