是否可以仅通过编写 debian/rules 编译两次并构建单独的包?
Posted
技术标签:
【中文标题】是否可以仅通过编写 debian/rules 编译两次并构建单独的包?【英文标题】:Is it possible to compile twice and build separate packages only by writing debian/rules? 【发布时间】:2018-01-29 13:57:21 【问题描述】:让我详细说明我的问题,并详细说明我试图完成的工作。
我的最终目标是拥有两个 debian 软件包:一个包含为 x86 构建的二进制文件,另一个包含为 ARM 构建的二进制文件。在 debian/control 中,我定义了两个不同的包,并且两个包的体系结构当前都设置为“任意”。
我尝试按照https://wiki.debian.org/PkgSplit 上的说明进行操作,并查看了 debhelper (http://www.fifi.org/doc/debhelper/examples/rules.multi2) 的 rules.multi2 示例,但到目前为止没有任何运气。
源代码是一个 Qt 项目,将同时用于 x86 和 ARM。
我正在使用 dpkg-buildpackage 成功构建,但无论我如何尝试,我的源代码都只编译一次。
达到我的目标的理想方法是什么,是否“简单”地在 debian/rules 中输入正确的信息才能使其工作,还是我必须采取其他方法?我不确定这是否可能。我只是走错了路(我是 debian 打包世界的新手)。
(在这个阶段我故意不包括我的 debian/control 和 debian/rules,如果需要,我会提供更多细节,因为在这个阶段它们有点乱)。
编辑: 我被这条评论引导到 PkgSplit https://askubuntu.com/questions/246718/change-environment-variables-in-debian-rules-according-to-debian-control-targets/908351#908351 但对我来说,答案有点神秘,因此非常感谢您的帮助。
【问题讨论】:
【参考方案1】:没有。
dpkg-buildpackage
的单次运行将为单个架构创建二进制包(amd64
、或i386
、或armhf
或s390x
或其他)。
只需多次调用dpkg-buildpackage
即可(交叉)构建多个架构:
dpkg-buildpackage -rfakeroot
dpkg-buildpackage -rfakeroot --host-arch i386
dpkg-buildpackage -rfakeroot --host-arch armhf
这将(最多)创建 3 个包:一个是本机架构(很可能是:amd64
),一个用于x86_32
(又名i386
)和一个用于覆盆子(armhf
)。
顺便说一句,PkgSplit 文档讨论了为同一架构创建多个包。例如当您有一个库时,您通常希望将其拆分为库部分(安装libfoo.so.1
)和开发部分(安装头文件)。
【讨论】:
那就解决了,感谢您提供如何实现它的信息。 PkgSplit 它让我走错了路,感谢您的澄清!以上是关于是否可以仅通过编写 debian/rules 编译两次并构建单独的包?的主要内容,如果未能解决你的问题,请参考以下文章