【问题标题】:Making git-buildpackage work with big tarballs使 git-buildpackage 与大 tarball 一起工作
【发布时间】:2018-07-12 14:00:01
【问题描述】:

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

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

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

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

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

【问题讨论】:

标签: debian packaging


【解决方案1】:

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-sourceuscan 的问题与您所描述的问题正交。 两者都是从远程位置获取源代码以开始打包新版本的方法。 也没有在构建过程中用于获取其他缺失的上游源(您可能会感到困惑,因为get-orig-source 是一个 Makefile 目标。但这个目标实际上从未被调用,除非手动调用由想要获取源代码的人提供)。

dpkg-buildpackage 也不够用

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

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

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

在这种情况下,gbp 可能不适合您。

幸运的是,绝对没有什么会迫使您使用此工具。随意使用git-dpmdpkg-buildpackage,或者在没有任何帮助的情况下手动滚动你自己的包。

【讨论】:

  • 感谢您的回答。问题确实是 git 本身处理大文件的方式。 Git LFS 在我们的案例中不可用,因为我们使用 CodeCommit。 Oracle 的档案中没有什么可以丢弃的。而且,确实,有带有巨大上游 tarball 的 FLOSS 包,但我怀疑这些 tarball 是否包含在开发包本身的 git repos 中!我们需要像在 AWS 上构建的东西,并且在自动化过程中获取上游档案会很好。
猜你喜欢
  • 1970-01-01
  • 2013-02-20
  • 1970-01-01
  • 1970-01-01
  • 2013-06-26
  • 2011-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多