저는 팩맨 패키지(기본적으로 일부 특수 메타데이터 파일이 포함된 타르볼)를 빌드하는 소프트웨어를 개발 중입니다. 테스트 스위트는 일부 패키지를 빌드한 다음 결과 패키지를 기록된 예상 결과와 비교합니다.
패키지에 기록되는 메타데이터 필드 중 하나는 패키지 설치 크기로, du -s --apparent-size
패키지하기 전에 루트 디렉터리에서 실행하여 결정됩니다.
이 모든 것은 제가 개발하는 로컬 Arch Linux 상자에서 잘 실행됩니다. 테스트가 실행될 때마다 이러한 패키지는 설치 크기를 바이트 단위로 포함하여 정확하게 재현됩니다(킬로바이트, 바이트도 아님!).
이제 Ubuntu-12.04 기반 컨테이너에서 실행되는 Travis에서도 이 테스트를 활성화했습니다(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