Como posso evitar que o dpkg-buildpackage modifique a data de modificação do diretório / debian ao construir um pacote Debian?

3

Eu configurei um conjunto de ferramentas pbuilder para construir pacotes Debian nas variedades i386 e amd64 para o Ubuntu. Estou usando reprepro para gerenciar meu próprio repositório apt e dupload para carregar .changes , .dsc , .deb , .orig.tar.gz e .debian.tar.gz arquivos nele. Tudo isso está bem documentado e funciona.

Mas não estou conseguindo carregar a versão i386 de um pacote junto com a versão amd64 do mesmo pacote. Reprepro reclama com a seguinte mensagem:

File "pool/main/p/package/package_1.0.dsc" is already registered with different checksums!

A origem dos pacotes binários i368 e amd64 gerados são exatamente os mesmos e não foram modificados por mim. Como pode haver uma soma de verificação diferente?

Eu investiguei e descobri que a diferença de soma de verificação do arquivo .dsc é porque contém uma soma de verificação diferente do arquivo package_1.0.debian.tar.gz .

Investigações posteriores mostraram que o arquivo package_1.0.debian.tar.gz tem diferentes somas de verificação sempre que dpkg-buildpackage é invocado pelo conjunto de ferramentas de compilação do debian. O motivo é que ele altera o tempo de modificação do subdiretório /debian de um pacote Debian. O programa tar infelizmente inclui o tempo de modificação no arquivo resultante, levando a diferentes somas de verificação toda vez que o conjunto de ferramentas é executado.

Então, minha pergunta é: Como posso evitar que o dpkg-buildpackage modifique a data de modificação do diretório /debian ao criar um pacote Debian?

Se eu pudesse fazer isso, a soma de verificação dos arquivos package_1.0.debian.tar.gz e package_1.0.dsc permaneceria constante, e eu poderia fazer upload sem problemas para reprepro .

    
por Michael Franzl 17.09.2012 / 22:06

2 respostas

1

Não estou exatamente na mesma situação que você, mas espero que minha resposta aponte para o que você precisa.

Em vez de usar pbuilder , estou usando vários chroots para criar pacotes em amd64 e i386 . Eu gero o .dsc fora dos chroots usando debuild -S , depois copio os arquivos apropriados para os chroots. Não é a melhor maneira de fazer isso, eu percebo.

Dentro do primeiro chroot eu corro dpkg-buildpackage -b para construir os pacotes binários. No segundo chroot eu corro dpkg-buildpackage -B , para apenas construir os pacotes dependentes da arquitetura - ou seja, aqueles que não são duplicados.

Quando eu uso reprepro para enviar os pacotes para o repositório, os .debs do primeiro chroot (i386) com o destino "all" são copiados para todas as arquiteturas, assim como o i386 debs sendo copiado para i386 . Quando eu envio os pacotes do segundo chroot (amd64), os debs dependentes da arquitetura restantes ou amd64 são copiados.

    
por Roger Light 05.01.2013 / 01:34
0

Você pode tentar substituir o comando tar e adicionar o argumento --mtime=some_fixed_time a ele.

    
por Shnatsel 19.03.2014 / 20:00