4

我是 rpm 打包的初学者,据我了解,由于 cpio 限制,rpm-build 文件大小> 4GB 存在问题。所以我用 gnu 将包中的大文件拆分为 512MB 的文件 [这是作为 rpmbuild 的一部分完成的,因为大文件是在构建时间生成的]。我仍然看到错误:“错误:在文件 /io1/dm/build/BUILDROOT/pkg/installdir/lib/clfsplitab 上创建存档失败:cpio:Bad magic”其中 clfsplitab 是大文件的 512MB 拆分。关于如何追踪确切问题的任何建议?还是有更好的方法来处理/生成大型有效载荷包?
更新:如图所示,错误出现在 clfsplitab 上,即拆分的第二个文件(因为 gnu split 通常拆分后缀为 aa、ab、ac 等的文件。看起来 cpio 无法识别文件类型,第一个文件是 tar,第二个其余的是数据..gzip 压缩了拆分部分)。似乎只解决了一个错误来引发同样的坏魔法错误,但这次是在最后一部分。
笔记:我可以控制 rpm 中文件的输出大小。理想情况下,转储的完整文件大小约为 4g [分成 512mb 块]。但是为了测试包大小确实没有问题,我稳定地减小了生成的目标文件的大小,如果包低于 2G,它似乎可以正常工作,并且我得到了一个很好的 rpm。如果我没记错的话,尺寸问题自 rpm 4.4.x 起已修复。这看起来仍然像 cpio 问题,rpm 用于归档吗?

4

2 回答 2

0

从旧的RPM 4.6 文档

Large package support

Packages can now theoretically be up to 64bit sizes, and individual files within packages are limited to 4GB each due to cpio format limitation whereas they were previously limited to ~2GB. Large packages (over ~2GB in size) are incompatible and unreadable with previous versions of RPM due to requiring 64bit integer type support in headers, "normal" sized packages are fully compatible with older versions however.
Limitations on accepted header size can cause limit the practical package size when the number of files in a package is extremely high. 

所以是的,这很可能仍然是一个 CPIO 问题。您使用的是哪个版本的 RPM?我认为您应该重新评估您的 RPM,对于 RPM 来说 4GB 非常大,即使对于内部网络,我们仍在讨论很长一段时间来传输和安装它。如果这对您的系统很重要,您是否考虑在最初构建服务器时将其纳入 kickstart?

于 2013-03-02T05:00:58.543 回答
0

虽然非常规,但我通过在 rpmrc 中指定 'cpiobin' 使用 'tar' 而不是 cpio 解决了这个问题。

于 2014-01-06T04:42:02.307 回答