【问题标题】:Building a .deb Debian package on other distributions在其他发行版上构建 .deb Debian 软件包
【发布时间】:2026-01-05 09:00:01
【问题描述】:

我需要创建一个 Debian 软件包。使用 dpkg 很容易,效果很好。但由于我无法控制的原因,我必须切换到 RHEL5 环境进行构建,因此 dpkg 不可用。

我最好的攻击策略是什么?以下是我的想法:

  • 想法:获取 dpkg 二进制文件并包含在源代码中。 问题:我真的不知道这意味着什么。
  • 想法:找到合适的工具来在其他发行版上创建 .deb。 问题:没有成功搜索。
  • 想法:手动构建并压缩它。 (重新发明 dpkg)问题:费力、容易出错、脆弱、多余

TLDR 最佳答案如下:在 Docker 容器中构建。谢谢,贾科莫。

【问题讨论】:

  • 也许姊妹网站“Unix and Linux”可能有答案(OTOH,你也在这个话题上)。

标签: debian deb rhel5


【解决方案1】:

这取决于你在做什么。

如果您正在构建一个“二进制”包(二进制作为架构特定的),您需要一个类似于目标的环境(例如库等)。但是,如果您正在构建一个独立于架构的包,这可能会更容易(例如,仅由 Python 代码或其他解释器创建的 Python 库)。

无论如何,如果您无法对其进行测试(并进行正确的自动测试),则需要将输出视为垃圾。不要分发它。

作为 Debian 开发人员,我们在干净的环境中构建包,可以是虚拟机/docker 或 chroot 环境(但所有基础包也是如此)。这确实有助于找到正确的依赖项,还有助于进行安装/卸载测试(使用 puiparts)等。这已经在 10 年前完成了,所以现在更容易了。只需安装一个最小的 docker 镜像来构建 Debian 包,然后使用它。然后安装另一个(更标准的)并在“真正的”Debian 环境中测试您的软件包。 Debian 打包文档应该有这方面的信息(参见例如 https://wiki.debian.org/PackagingWithDocker ,只是你应该更改第一部分:在 RH 上安装 docker,但这应该很简单:docker 在 RH 或 Debian 上是相同的(或者在 Windows 或 Mac 上,但是这里可能没有bash shell,所以调用docker的方式也可能会改变))。

如果您从未构建过 .deb,则您必须至少有一个环境。打包操作可能很繁琐(许多源代码不允许在自定义目录上安装二进制文件)。

注意:在较早的时候,您可能会在您的第二个和第三个解决方案之间进行混合。您可以手动构建软件包(它们只是 ar 文件,RH 使用 cpio 归档格式),但 Debian 的主要工具也是脚本(主要是 Perl)。您应该只找到一些其他工具(例如fakeroot,您可能已经找到了二进制文件,或者您应该构建它)。无论如何,从源代码构建这样的工具并不是那么复杂(它们不是巨大的“现代”包,它们只是非常小的工具,几乎没有依赖关系)。

【讨论】:

  • 接受了简短的回答:“在 docker 容器中构建”。尽管在我的情况下,服务器上没有构建任何二进制文件。从字面上看,它只是需要构建的 deb 存档。所有二进制文件都在 Debian 环境中构建。但由于我的设置很奇怪(我无法更改它),我接受这是一个更好的一般答案。但即使在我的情况下,在容器中运行适当的 dpkg 分发也是最好的方法。
  • 注意:在这种情况下,您可以复制和使用 dpkg(和 dpkg-buildpackage)。我认为它们仍然只是几个 perl 脚本。
最近更新 更多