首页 > 解决方案 > 使 git-buildpackage 与大 tarball 一起工作

问题描述

使用git-buildpackage时,有两种方式获取上游资源:

  1. 从上游分支检索它们;或者
  2. 将发布 tarball 导入存储库。

我的团队正在研究打包 Oracle Java。我们在 git 中开发我们的包并希望使用 gbp。显然,选项(1)是不可能的,因为来源不可用。但是选项(2)也不可行,因为这意味着将巨大的(200MB+)档案导入 git。

由于 Debian 的政策是针对专有软件的,因此您找不到太多关于此用例的文档。不过,一定有办法。

dpkg-buildpackage 也不够,因为get-orig-sources已弃用。现在您应该使用 uscan 和debian/watch/或 git-buildpackage。

标签: debianpackaging

解决方案


git buildpackage大文件没有问题。

是什么让你觉得有?将“巨大”的 tarball 导入 git 存储库时,您预计会出现哪些问题?它们有关系gbp吗?或者它只是git处理大型二进制 blob 的方式(这实际上是完全不同的问题)。git-lfs如果您真的关心大型存储库大小,您可能想要结帐或类似的东西。

由于 Debian 的政策是针对专有软件的,因此您找不到太多关于此用例的文档。

哪个用例?拥有庞大的发行版 tarball 并不是专有软件所独有的。(思考游戏……有数以百万计的数据附带FLOSS 游戏)。

所以你的选择是: - 要么包含大型上游 tarball - 要么重新打包它们以丢弃你不需要的东西(例如,W32、W64 和 BeOS 的预编译二进制文件在 Debian 包的上下文中通常是无用的,但是可以极大地扩大包装尺寸)。获取上游 tarball 的标准工具 ( uscan) 包括在导入新的上游版本时自动删除文件的机制。

get-orig-source 已弃用

所以呢?您引用的文章明确指出它“存在于 debian/rules 文件中绝对没问题”。此外,git-orig-sourcevsuscan的问题与您所描述的问题正交。两者都是从远程位置获取源代码以开始打包新版本的方法。 在构建过程中也不会使用它们来获取其他缺失的上游源(您可能会感到困惑,因为它get-orig-source一个 Makefile 目标。但这个目标实际上从未被调用,除非由想要获取源的人手动调用)。

dpkg-buildpackage 也不够

为什么不?如果你在 dpkg-buildpackage 可以找到的地方有 orig-tarball,你当然可以使用它。

gbp是一个非常好的集成工作流工具,它将 Debian 打包(所有内容/debian)和上游快照保存在单个存储库中。

这可能不一定是您想要的工作流程(例如,因为您明确不想在打包存储库中包含上游源)。

在这种情况下,gbp可能不是适合您的工具。

幸运的是,绝对没有任何东西可以强迫您使用此工具。随意使用git-dpm,dpkg-buildpackage或手动滚动您自己的包,无需任何帮助。


推荐阅读