我正在用地质学程序的源代码制作 Ubuntu 软件包。我可以在我的电脑上制作 deb 软件包,而且 Launchpad 也可以为 32 位操作系统制作二进制软件包。
我注意到 Launchpad 的一个奇怪行为。它从上传的源代码中为 i386 制作开发 (libfoo-dev) 和共享库 (libfoo),尽管它只从相同的代码为 amd64 制作二进制包。查看i386和amd64构建日志中,我发现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: any
in debian/control
。如果 -dev 包在 amd64 上的内容与在 i386 上的内容相同,则一切正常,您不会遇到问题。