Estou trabalhando em um software que cria pacotes Pacman (que basicamente são tarballs com alguns arquivos de metadados especiais). A suíte de testes constrói alguns pacotes e então compara o pacote resultante com um resultado esperado registrado.
Um dos campos nos metadados registrados no pacote é o tamanho instalado do pacote, determinado pela execução du -s --apparent-size
no diretório raiz antes de tará-lo.
Tudo isso funciona perfeitamente em minhas caixas locais do Arch Linux onde desenvolvo. Os pacotes, incluindo o tamanho instalado em bytes (nem mesmo kilobytes, bytes!) são reproduzidos exatamente toda vez que executo o teste.
Agora também habilitei este teste no Travis, onde ele é executado (pelo que entendi nos documentos do Travis) em um contêiner baseado no Ubuntu-12.04. Lá, o teste passa na maioria das vezes.Maioriados tempos. Às vezes, ele calcula tamanhos instalados com diferenças de 80 a 99%.
Aqui está um exemplo de teste que falhou:https://travis-ci.org/holocm/holo/builds/89326780(O testepouco antes dissobem-sucedido.) Uma das diferenças relevantes é
@@ -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
O que é intrigante nisso é que isso só acontece algumas vezes, sem nenhum padrão aparente. O teste organiza os mesmos arquivos de sempre, é executado du -s --apparent-size
na árvore resultante e chega a um resultado completamente errado. Tentei reproduzir isso em uma VM Ubuntu 12.04 e, embora tenha visto isso aparecer lá uma ou duas vezes, também não consegui ver nenhum padrão surgindo que pudesse me ajudar a reproduzir o problema.
Talvez alguém aqui tenha uma ideia do que poderia causar esse problema?
EDIT: Ah, há um padrão que observei, na verdade. du
é executado uma vez para cada caso de teste. Quando falhar no primeiro caso de teste, falhará em todos os casos de teste nesta execução.
Responder1
Bem, fui solicitado a colocar isso como resposta por @derobert
O problema que você tem é AUFS.... verifique os problemas associados a ele, verifique os motivos pelos quais não está nos kernels mais recentes, verifique sua "estabilidade", verifique sua "completude POSIX". – Hvisage 24 de janeiro às 20h55