我dpkg-buildpackage
在获得apt-get source nginx
nginx 的 backports 版本并修改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
Run Code Online (Sandbox Code Playgroud)
它抱怨说因为我不是包的原始维护者,所以我的密钥不匹配。
这真的有必要吗?如果有,我怎样才能让它使用我的密钥来进行 gpg 匹配?
Sig*_*num 34
如果您为自己的私人使用构建了 PGP 签名的 Debian 软件包,则它们不是必需的。这只是(官方)Debian 开发人员在将新软件包上传到 Debian “unstable” 分支时常用的身份验证方法。
为避免错误消息,只需使用:
dpkg-buildpackage -uc -us
(另请参阅 dpkg-buildpackage 的联机帮助页)
当你制作一个不同版本的包时(就像你所做的那样,因为你改变了构建规则),你真的应该添加一个更改日志条目。这样,您的包将具有不同的版本号(因此您会立即知道它不是发行版中的标准包),并且您将跟踪更改的内容。
编辑debian/changelog
,并添加一个模仿现有条目格式的条目。从今天开始日期,并选择一个版本号like 0.7.67-3~bpo50+meder1
(你想要一些dpkg --compare-versions
表明你的版本更新的东西)。将您的电子邮件地址设为维护者;这样,您就可以清楚地表明这是您修改的软件包,并且dpkg-buildpackage
会要求您提供 GPG 密码。
如果您是 Emacs 用户,请安装该dpkg-dev-el
软件包,然后使用C-c C-a
和C-c C-c
命令添加和完成更改日志条目。
虽然签名包不是必需的,并且-uc -us
可以使用选项来避免该步骤,但签名包也很有帮助,特别是如果其他人将使用它,或者您将通过不安全的通信路径发送它。而且一点也不难。
要生成好的签名,请参阅dpkg-buildpackage的手册页。默认情况下,它使用 gpg 对包进行签名。从它打印的错误消息来看,您似乎还没有生成 gpg 密钥。有关一些说明和背景,请参阅例如GnuPrivacyGuardHowto - 社区 Ubuntu 文档。
正如@Gilles 所指出的,您还应该通过更改日志文件更改包版本号,并提供您将使用的 gpg 密钥的电子邮件地址。一种简单的方法是运行dch --local foo
命令,其中“foo”是更改的关键字。如果您真的不想这样做,并且需要指定不同的维护者或上传者名称/地址,或者签名时使用的特定密钥,您也可以在构建时使用-m
,-e
或-k
选项。
有关更多提示,请参阅如何重建 Debian 软件包。
当有人试图确定给定的包是否由他们信任的人签名时,棘手的部分就出现了。查看 PGP 信任网络以处理所涉及的微妙问题。
归档时间: |
|
查看次数: |
24770 次 |
最近记录: |