저는 팩맨 패키지(기본적으로 일부 특수 메타데이터 파일이 포함된 타르볼)를 구축하는 소프트웨어를 개발 중입니다. 테스트 스위트는 일부 패키지를 빌드한 다음 결과 패키지를 기록된 예상 결과와 비교합니다.
du -s --apparent-size
패키지에 기록된 메타데이터의 필드 중 하나 는 패키지를 tar하기 전에 루트 디렉터리에서 실행하여 결정되는 패키지의 설치된 크기입니다 .
이 모든 것은 내가 개발하는 로컬 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