我已经配置了一个私有 APT 存储库(使用 Internet 上的资源,例如http://inodes.org/2009/09/14/building-a-private-ppa-on-ubuntu/)并且我是第一次上传我的包含我的 C++ 应用程序源代码的包。所以 reprepro 存储库是空的。
我使用以下命令来开始构建:
sudo reprepro -V -b /srv/reprepro processincoming incoming
然后构建开始,生成了很多输出,我可以看到pbuilder
正在编译项目源代码,一切都很好。我什至可以在result/
文件夹 debian packages 等中找到...
但是构建失败并出现POST_BUILD_FAILED因为 pbuilder 似乎更改了douane-testing_0.8.1-apt1.debian.tar.gz文件,并且 md5 总和现在不同,如下所示:
File "pool/main/d/douane-testing/douane-testing_0.8.1-apt1.debian.tar.gz" is already registered with different checksums!
md5 expected: 97257ae2c5790b84ed7bb1b412f1d518, got: df78f88b97cadc10bc0a73bf86442838
sha1 expected: ae93c44593e821696f72bee4d91ce4b6f261e529, got: d6f910ca5707ec92cb71601a4f4c72db0e5f18d9
sha256 expected: c3fac5ed112f89a8ed8d4137b34f173990d8a4b82b6212d1e0ada1cddc869b0e, got: ebdcc9ead44ea0dd99f2dc87decffcc5e3efaee64a8f62f54aec556ac19d579c
size expected: 2334, got: 2344
There have been errors!
我不明白为什么它会失败,因为当我比较两个包(具有那些 md5 总和)时,内容完全相同(我使用了差异工具,但没有差异,也没有新的或删除的文件)。我唯一能看到的是 pbuild 的存档比我上传的原始存档大 10 字节:
在我的开发机器上,带有 md5 97257ae2c5790b84ed7bb1b412f1d518的文件:
-rw-r--r-- 1 zedtux zedtux 2334 Feb 3 23:38 douane-testing_0.8.1-apt1.debian.tar.gz
在我的服务器上,带有 md5 df78f88b97cadc10bc0a73bf86442838的文件:
-rw-r--r-- 1 root root 2344 Feb 5 00:58 douane-testing_0.8.1-apt1.debian.tar.gz
我的服务器上有 pbuild 版本 0.213。
这种行为可能是什么原因,我该如何解决?
编辑
我怀疑 GPG 密钥有问题,它看起来丢失了,然后文件没有签名,所以 md5sum 不同。在构建过程中,我有以下几行:
I: Extracting source
gpgv: Signature made Wed Feb 5 22:04:37 2014 UTC using RSA key ID 9474CF36
gpgv: Can't check signature: public key not found
dpkg-source: warning: failed to verify signature on ./douane-testing_0.8.1-apt1.dsc
编辑 2
我试图找到手动创建 .debian.tar.gz 文件的命令。我发现的最好的如下:
tar cv debian | gzip --no-name --rsyncable -9 > douane-testing_0.8.1-apt1.debian.tar.gz
我没有得到相同的结果,dpkg-source
但我在我的服务器上尝试了相同的命令(我至少应该有相同的大小)但它不匹配......
可能是 Debian 和 Ubuntu 的压缩方式不同吗?