debian - 使 git-buildpackage 与大 tarball 一起工作
问题描述
使用git-buildpackage时,有两种方式获取上游资源:
- 从上游分支检索它们;或者
- 将发布 tarball 导入存储库。
我的团队正在研究打包 Oracle Java。我们在 git 中开发我们的包并希望使用 gbp。显然,选项(1)是不可能的,因为来源不可用。但是选项(2)也不可行,因为这意味着将巨大的(200MB+)档案导入 git。
由于 Debian 的政策是针对专有软件的,因此您找不到太多关于此用例的文档。不过,一定有办法。
dpkg-buildpackage 也不够,因为get-orig-sources
已弃用。现在您应该使用 uscan 和debian/watch
/或 git-buildpackage。
解决方案
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-source
vsuscan
的问题与您所描述的问题正交。两者都是从远程位置获取源代码以开始打包新版本的方法。
在构建过程中也不会使用它们来获取其他缺失的上游源(您可能会感到困惑,因为它是get-orig-source
一个 Makefile 目标。但这个目标实际上从未被调用,除非由想要获取源的人手动调用)。
dpkg-buildpackage 也不够
为什么不?如果你在 dpkg-buildpackage 可以找到的地方有 orig-tarball,你当然可以使用它。
gbp
是一个非常好的集成工作流工具,它将 Debian 打包(所有内容/debian
)和上游快照保存在单个存储库中。
这可能不一定是您想要的工作流程(例如,因为您明确不想在打包存储库中包含上游源)。
在这种情况下,gbp
可能不是适合您的工具。
幸运的是,绝对没有任何东西可以强迫您使用此工具。随意使用git-dpm
,dpkg-buildpackage
或手动滚动您自己的包,无需任何帮助。
推荐阅读
- javascript - 如果我单击 ia 按钮,如何获取文本文件中的所有控制台日志、错误、警告
- django - 为什么 django authenticate 总是返回 none
- java - 如何通过 azure 设备配置服务将自定义错误消息从 azure 功能发送到 iot 设备?
- python - ModuleNotFoundError:没有名为“cv2”HARD 的模块
- python - 如何在 python 上制作具有不同大小的最后一个参数的 3D 矩阵
- android - 如何在底部片段代码中添加滑动
- python - MongoDB:最好使用带有限制的查找并在循环中跳过或使用无限制的查找来检索大量数据
- c# - 在 C# 中,GroupBy 是一个 List 的属性
- sql - 如何根据另一个表中另一列的值更新列
- google-maps - 无法关闭 Google 地图中的信息窗口。错误:未捕获的类型错误:无法读取未定义的属性“关闭”