4

私はrpmパッケージングの初心者であり、cpioの制限により、rpm-buildには4GBを超えるファイルサイズの問題があることを理解しています。そこで、パッケージ内の大きなファイルを gnu 分割で 512MB のファイルに分割しました [大きなファイルはビルド時に生成されるため、これは rpmbuild の一部として行われます]。「エラー: ファイル /io1/dm/build/BUILDROOT/pkg/installdir/lib/clfsplitab でアーカイブの作成に失敗しました: cpio: Bad magic」というエラーがまだ表示されます。ここで、clfsplitab は大きなファイルの 512 MB の分割です。正確な問題を追跡する方法に関する提案はありますか? または、大きなペイロード パッケージを処理/生成するためのより良い方法はありますか?
アップデート:示されているように、エラーはclfsplitab、つまり分割の2番目のファイルにありました(gnu分割は通常、aa、ab、acなどの接尾辞が付いたファイルを分割するためです.cpioはファイルの種類を認識できなかったようです.最初のファイルはtar、2番目のファイル)残りはデータでした..分割部分をgzipで圧縮しました)。同じ悪い魔法のエラーを発生させるエラーを 1 つだけ解決したようですが、今回は最後の部分です。
ノート:rpm に入るファイルの出力サイズを制御できます。理想的には、ダンプされる完全なファイルのサイズは約 4g [512mb ブロックに分割されます] です。しかし、実際にパッケージ サイズに問題がないことをテストするために、生成されるオブジェクト ファイルのサイズを着実に減らしました。パッケージが 2G を下回ると、正しく動作するように見え、良好な rpm が得られます。私の記憶が正しければ、サイズの問題は rpm 4.4.x 以降で修正されています。これは、アーカイブ用に rpm で使用される cpio の問題のように見えますか?

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 は非常に大きいです。これを転送してインストールするために、まだかなり長い間話し合っている内部ネットワークでも同様です。これがシステムにとって重要である場合、最初にサーバーを構築するときにこれをキックスタートに組み込むことを検討しましたか?

于 2013-03-02T05:00:58.543 に答える
0

型破りではありますが、rpmrc で「cpiobin」を指定して、cpio の代わりに「tar」を使用することで問題を回避しました。

于 2014-01-06T04:42:02.307 に答える