我是 rpm 打包的初学者,据我了解,由于 cpio 限制,rpm-build 在文件大小>4GB 时存在问题。因此,我使用 gnu split 将包中的大文件拆分为 512MB 的文件 [这是作为 rpmbuild 的一部分完成的,因为大文件是在构建时生成的]。我仍然看到错误:
“错误:在文件 /io1/dm/build/BUILDROOT/pkg/installdir/lib/clfsplitab 上创建存档失败:cpio:Bad magic”,其中 clfsplitab 是大文件的 512MB 分割。任何建议
如何追踪具体问题?或者是否有更好的方法来处理/生成大型有效负载包?
Update:如图所示,错误出现在 clfsplitab 上,即分割的第二个文件(因为 gnu split 通常分割带有后缀 aa、ab、ac 等的文件。看起来 cpio 无法识别文件类型,第一个文件是 tar,第二个文件是 tar)其余的是数据..gzip 压缩了分割部分)。它似乎只解决了一个错误,引发了同样的糟糕魔法错误,但这一次是在最后一部分。
Note:我可以控制 rpm 中文件的输出大小。理想情况下,转储的完整文件的大小约为 4g [分为 512mb 块]。但为了测试包大小确实没有问题,我稳步减小了生成的目标文件的大小,如果包低于 2G,它似乎可以正常工作,并且我获得了良好的 rpm。
如果我没记错的话,大小问题自 rpm 4.4.x 起就已得到解决。这看起来仍然像 cpio 问题吗,rpm 使用它进行归档?
从旧的RPM 4.6 文档 http://www.rpm.org/wiki/Releases/4.6.0:
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,4GB 对于 RPM 来说非常大,即使对于内部网络,我们仍然在谈论相当长一段时间来传输和安装它。如果这对您的系统至关重要,您是否考虑在最初构建服务器时将其纳入启动中?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)