这是我第一次尝试为不同架构构建Debian/Ubuntu软件包。为此,我决定使用pbuilder,并使用来自https://jodal.no/2015/03/08/building-arm-debs-with-pbuilder/的.pbuilderrc脚本。然后,我使用
问题是pbuilder似乎重新打包了.debian.tar.gz文件(并更改为.xz),并重新创建了.dsc文件。两个tar文件的内容相似,只有权限和时间戳发生了变化,在.dsc文件中我看到了一些细微的修改以及不同的校验和。
现在的问题是,我无法将这两个构建的结果放入一个
我的问题现在是:
- 我如何避免重新构建源代码包? - 这种构建多架构包的工作流程可行吗? - 是否有更好的方法,例如更好的交叉构建工具? - 对于与架构无关的二进制包,我假设会遇到类似的问题。我如何将它们整合到这个工作流程中?
dpkg-buildpackage -S
或dpkg-source -b
来创建.dsc文件。使用这个文件,我调用...sudo OS=ubuntu DIST=trusty ARCH=amd64 pbuilder --build $dscfile
sudo OS=ubuntu DIST=trusty ARCH=armhf pbuilder --build $dscfile
问题是pbuilder似乎重新打包了.debian.tar.gz文件(并更改为.xz),并重新创建了.dsc文件。两个tar文件的内容相似,只有权限和时间戳发生了变化,在.dsc文件中我看到了一些细微的修改以及不同的校验和。
- libpj2 deb comm optional
+ libpj2 deb comm optional arch=any
- b42ddedc2d8b210ec10b4db4271997569aab448d 29942 pjproject_2.1.0.0.ast20130823-1.test20.debian.tar.gz
+ 11646618842914086b78ce0e191f6e2cfbe0965d 25548 pjproject_2.1.0.0.ast20130823-1.test20.debian.tar.xz
现在的问题是,我无法将这两个构建的结果放入一个
reprepro
仓库中。#reprepro -Vb . includedsc trusty $dscfile
reprepro -Vb . include trusty /var/cache/pbuilder/ubuntu-trusty-amd64/result/*.changes
reprepro -Vb . include trusty /var/cache/pbuilder/ubuntu-trusty-armhf/result/*.changes
因为它不接受.dsc文件的不同校验和。
File "pool/test/p/pjproject/pjproject_2.1.0.0.ast20130823-1.test20.debian.tar.xz" is already registered with different checksums!
md5 expected: 2f5bcb162dedd309a9d9ecba733d1036, got: bc30e1f502f7b36c10e9709dfe75e60b
sha1 expected: 11646618842914086b78ce0e191f6e2cfbe0965d, got: 94c6ecebe07a93c7505058019b6f64a73a9625a5
sha256 expected: 0642aa4d78b1cc91d06cc6fe406380b76aa7de5fb26105ea052d447f36f65d19, got: cfa085ac5904eadc21a849958118ce597fe03d78fd8cc82f225c33cbcb663462
我的问题现在是:
- 我如何避免重新构建源代码包? - 这种构建多架构包的工作流程可行吗? - 是否有更好的方法,例如更好的交叉构建工具? - 对于与架构无关的二进制包,我假设会遇到类似的问题。我如何将它们整合到这个工作流程中?