为什么 Launchpad 对 64 位和 32 位软件包的处理方式不同?

为什么 Launchpad 对 64 位和 32 位软件包的处理方式不同?

我正在用地质学程序的源代码制作 Ubuntu 软件包。我可以在我的电脑上制作 deb 软件包,而且 Launchpad 也可以为 32 位操作系统制作二进制软件包。

我注意到 Launchpad 的一个奇怪行为。它从上传的源代码中为 i386 制作开发 (libfoo-dev) 和共享库 (libfoo),尽管它只从相同的代码为 amd64 制作二进制包。查看i386amd64构建日志中,我发现debian/rules binary-arch调用的是 for amd64 而不是debian/rules binary。这导致我的源代码无法为 amd64 生成开发包。

我该如何解决这个问题?如果ppa:soroush-r/geopsy-deb您想查看,可以查看构建日志和软件包源。

答案1

独立于架构的软件包(在Architecture: all中设置debian/control)仅在一种架构上构建,即 Ubuntu 的 i386。只有依赖于架构的软件包才会在所有其他架构上构建。这就是为什么debian/rules binary在 i386 上调用 ,但debian/rules binary-arch在 amd64、armhf 和 powerpc 上调用 。

您为 -dev 包设置Architecture: all。如果 -dev 包在每个架构上都相同,则此设置正确。您将看到 .deb 包将以 _all.deb 结尾,而不是 _amd64.deb 或 _i386.deb。_all.deb 将在 i386 上构建,但也将在 amd64 上使用。

如果您需要 amd64 -dev 包的不同内容,则应将 -dev 包的体系结构更改为Architecture: anyin debian/control。如果 -dev 包在 amd64 上的内容与在 i386 上的内容相同,则一切正常,您不会遇到问题。

相关内容