我正在開發一個建立 Pacman 套件的軟體(基本上是帶有一些特殊元資料檔案的 tarball)。測試套件建立一些包,然後將產生的包與記錄的預期結果進行比較。
包中記錄的元資料中的欄位之一是包的安裝大小,該大小是透過du -s --apparent-size
在打包之前在根目錄上運行來確定的。
所有這些在我開發的本機 Arch Linux 機器上都運作得很好。每次執行測試時,都會準確地再現這些包,包括其安裝的大小(以位元組為單位)(甚至不是千字節,位元組!)。
現在我還在 Travis 上啟用了此測試,它在基於 Ubuntu-12.04 的容器上運行(據我從 Travis 文件了解)。在那裡,測試大部分時間都會通過。最多時代的。有時,它計算出的安裝尺寸有 80-99% 的偏差。
下面是一個失敗的測試範例:https://travis-ci.org/holocm/holo/builds/89326780(考試就在那之前成功。
@@ -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 上重現此問題,雖然我看到它在那裡出現一兩次,但我也看不到那裡出現任何可以幫助我重現問題的模式。
也許這裡有人知道什麼可能導致這個問題?
編輯:哦,實際上我觀察到了一種模式。du
每個測試用例運行一次。當第一個測試案例失敗時,本次運行中的所有測試案例都將失敗。
答案1
嗯,@derobert 提示我將此作為答案
你遇到的問題是 AUFS ....檢查與之相關的問題,檢查它不在最新核心中的原因,檢查它的“穩定性”,檢查它的“POSIX 完整性”。 – Hvisage 1 月 24 日 20:55