私は Pacman パッケージ (基本的にはいくつかの特別なメタデータ ファイルを含む tarball) をビルドするソフトウェアに取り組んでいます。テスト スイートはいくつかのパッケージをビルドし、その結果得られたパッケージを記録された予想結果と比較します。
パッケージに記録されるメタデータのフィールドの 1 つは、パッケージのインストール サイズです。du -s --apparent-size
これは、tar する前にルート ディレクトリで実行することによって決定されます。
これらはすべて、私が開発しているローカルの Arch Linux ボックスで完全に正常に動作します。パッケージは、インストールされたサイズ (バイト単位、キロバイトではなくバイト単位) も含めて、テストを実行するたびに正確に再現されます。
今、私はこのテストを Travis でも有効にしました。Travis のドキュメントから私が理解している限りでは、このテストは Ubuntu-12.04 ベースのコンテナーで実行されます。そこでは、ほとんどの場合、テストは成功します。ほとんど時々、インストールされたサイズが 80 ~ 99% ずれて計算されることがあります。
失敗したテストの例を次に示します。https://travis-ci.org/holocm/holo/builds/89326780(テストその直前成功しました。)関連する差分の1つは
@@ -37,7 +37,7 @@
pkgdesc = my foo bar package
url =
packager = Unknown Packager
- size = 37728
+ size = 1464
arch = any
license = custom:none
replaces = foo-bar<2.1
これに関して不可解なのは、明らかなパターンがなく、時々しか発生しないということです。テストでは、いつものように同じファイルを配置し、du -s --apparent-size
結果のツリーで実行し、完全に間違った結果に到達します。Ubuntu 12.04 VM でこれを再現しようとしましたが、1、2 回発生したことは確認しましたが、問題を再現するのに役立つパターンは確認できませんでした。
この問題の原因について、何か考えをお持ちの方はいらっしゃいますか?
編集: ああ、実は私が観察したパターンが 1 つあります。du
テストケースごとに 1 回実行されます。最初のテストケースで失敗すると、この実行のすべてのテストケースで失敗します。
答え1
さて、@derobertからこれを回答として投稿するように促されました
あなたが抱えている問題は AUFS です...それに関連する問題を確認し、最新のカーネルに含まれていない理由を確認し、「安定性」を確認し、「POSIX の完全性」を確認してください。 – Hvisage 1 月 24 日 20:55