在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/
在Debian/Ubuntu上,常用的软件包签名方式是通过.changes文件进行的。当构建一个软件包时,你通常会得到一个.changes文件,列出了构建结果(源码和/或二进制软件包)及其校验和。当你签署软件包时,通常会签署这个文件(从而通过其校验和验证软件包的完整性)。签署一个.changes文件的最简单方法是使用debsign命令。debsign hello_1.0_amd64.changes 如果您的gnupg密钥链中有主键,并且在运行dpkg-buildpackage或debuild时没有使用-us和-uc开关,那么这将自动发生。