如何创建一个“已签名”的 deb 软件包。

我想创建一些deb软件包,但是我不知道如何对软件包进行“签名”。所以我想知道如何创建一个已签名的deb软件包。

4可能是重复的问题:从脚本或二进制文件创建.deb软件包 - Sampo Sarrala - codidact.org
1@SampoSarrala 这绝对不是重复的。 - Pilot6
2个回答

在Ubuntu/Debian系统上,软件包签名相当混乱。理论上,对deb软件包进行签名可以让接收者验证软件包在你签名后是否被修改过。但实际上,签名验证非常难以设置,并且默认情况下是禁用的。除非用户在本地进行了一系列设置,否则在安装软件包时不会进行签名验证。
要签署一个软件包,你可以使用debsigs或dpkg-sig。这两种签名是不兼容的,所以你需要确保接收方使用正确的工具来验证签名。
对于你和用户来说,dpkg-sig更容易使用,但debsigs是Ubuntu和Debian上内置支持的工具(默认情况下是禁用的)。
我写了一篇博文,详细介绍了签署和验证源代码包(.dsc文件)、二进制包(.deb文件)以及APT软件包仓库本身的所有技术细节。你可以在这里阅读:http://blog.packagecloud.io/eng/2014/10/28/howto-gpg-sign-verify-deb-packages-apt-repositories/

这个回答和链接的博客文章都没有提到一个事实,那就是二进制.deb软件包可以(并且在Debian/Ubuntu的官方打包链中也是如此)被包含在.changes文件中。 - arand
2这个链接没有指向任何地方! - KBNanda
这是吗?https://blog.packagecloud.io/how-to-gpg-sign-and-verify-deb-packages-and-apt-repositories/ - Bryan Larsen

在Debian/Ubuntu上,常用的软件包签名方式是通过.changes文件进行的。当构建一个软件包时,你通常会得到一个.changes文件,列出了构建结果(源码和/或二进制软件包)及其校验和。当你签署软件包时,通常会签署这个文件(从而通过其校验和验证软件包的完整性)。
签署一个.changes文件的最简单方法是使用debsign命令。
debsign hello_1.0_amd64.changes

如果您的gnupg密钥链中有主键,并且在运行dpkg-buildpackagedebuild时没有使用-us-uc开关,那么这将自动发生。