Criando um pacote .deb de forma reproduzível

2

Isso vem de como aplicar o patch em um pacote debian Agora, depois de construir os pacotes, não tenho idéia se os pacotes foram criados corretamente ou não. Eu vi isso no diretório pai -

 ┌─[shirish@debian] - [~/games] - [5870]
└─[$] cat dpkg_1.18.15+nmu1_amd64.changes

Format: 1.8
Date: Mon, 21 Nov 2016 01:04:02 +0530
Source: dpkg
Binary: dpkg libdpkg-dev dpkg-dev libdpkg-perl dselect
Architecture: source amd64 all
Version: 1.18.15+nmu1
Distribution: UNRELEASED
Urgency: medium
Maintainer: Dpkg Developers <[email protected]>
Changed-By: shirish <shirish@debian>
Description:
 dpkg       - Debian package management system
 dpkg-dev   - Debian package development tools
 dselect    - Debian package management front-end
 libdpkg-dev - Debian package management static library
 libdpkg-perl - Dpkg perl modules
Changes:
 dpkg (1.18.15+nmu1) UNRELEASED; urgency=medium
 .
   * Non-maintainer upload.
   * Apply d-m-h fix from #844701
Checksums-Sha1:
 8e50f097f70d621071e1e22384c1d68da7693929 1169 dpkg_1.18.15+nmu1.dsc
 16aa8483b0ce8d9eb1f0daebca6da84578226966 4617028 dpkg_1.18.15+nmu1.tar.xz
 3f3eae9de5bb31e178a4acb32654e68410902bda 1238392 dpkg-dbgsym_1.18.15+nmu1_amd64.deb
 3877d627c7c70bd98f16ee0b71d80c69667a6885 1581332 dpkg-dev_1.18.15+nmu1_all.deb
 b678906567a0c8ba089a5eb109855eba608f60e7 2067816 dpkg_1.18.15+nmu1_amd64.deb
 6130872887cd4eeba0b0cc0d0c7354322709dfe7 280736 dselect-dbgsym_1.18.15+nmu1_amd64.deb
 58eb460ab48e1c802ee7ae439dc0295424ef7742 1270868 dselect_1.18.15+nmu1_amd64.deb
 41e17c39ced6f55b9e72d042255a7a9b647b2e8e 1040980 libdpkg-dev_1.18.15+nmu1_amd64.deb
 a38005cde488603a7ee5de9ce7bc307c79277bb9 1242182 libdpkg-perl_1.18.15+nmu1_all.deb
Checksums-Sha256:
 2c8cf8ab1256814aa7115009a4620da913b27935351872335cd429ae4e7a9c70 1169 dpkg_1.18.15+nmu1.dsc
 47390a1ca4a296852ef3c25c0bdc82217e49738438882a980e8da28dca0d809e 4617028 dpkg_1.18.15+nmu1.tar.xz
 4a47a968b5dd4b1e87c99e5de9e3fd31b610ebb1891989de3a72ef08afb3405b 1238392 dpkg-dbgsym_1.18.15+nmu1_amd64.deb
 a05ae6dcefd5bc9affe355c8dd4106b42f795678fa4de31bc063a9784fc845ab 1581332 dpkg-dev_1.18.15+nmu1_all.deb
 b9682da9975541f385b47cf1148028deea4a48a51156293589b124c6f706d7b7 2067816 dpkg_1.18.15+nmu1_amd64.deb
 d75479bb9005788d96e839ae8b2dde56701993ac6421df1f5aaf79634f008a48 280736 dselect-dbgsym_1.18.15+nmu1_amd64.deb
 8b317f45808d408485c566b9748522d63d556bcec7525dcaa442a9720073dd27 1270868 dselect_1.18.15+nmu1_amd64.deb
 e45e67c3ab034ed3d1bf9f268daba92ee3cc406c3b75ef2bd0354ec79dc30d7f 1040980 libdpkg-dev_1.18.15+nmu1_amd64.deb
 d75ff545c612a7eb5f4563bb3619cd33ea4d4baff6cade9452e94bb1e7b7a412 1242182 libdpkg-perl_1.18.15+nmu1_all.deb
Files:
 faab0ae6b71c8216a634cbef6759d122 1169 admin required dpkg_1.18.15+nmu1.dsc
 69eeaa680e11f291860217a9536e93dc 4617028 admin required dpkg_1.18.15+nmu1.tar.xz
 91961eae15e20a3bf2ad614cf42ee4ab 1238392 debug extra dpkg-dbgsym_1.18.15+nmu1_amd64.deb
 aa361b4cde6020393c75a601c51f54e6 1581332 utils optional dpkg-dev_1.18.15+nmu1_all.deb
 325a9629e03781c027f884a17ada0550 2067816 admin required dpkg_1.18.15+nmu1_amd64.deb
 75dbcd90ada67522d79206b65519865e 280736 debug extra dselect-dbgsym_1.18.15+nmu1_amd64.deb
 e490b38b2b132c26670635628e302941 1270868 admin optional dselect_1.18.15+nmu1_amd64.deb
 0d206c14b1ffd5cb6b09608e9774b3bf 1040980 libdevel optional libdpkg-dev_1.18.15+nmu1_amd64.deb
 e22e289a709d36d2186da60e07b68225 1242182 perl optional libdpkg-perl_1.18.15+nmu1_all.deb

Também vi uma árvore de compilação no mesmo diretório e a partir dos registros de data e hora que a árvore de compilação deve ter gerado somente na última etapa.

$dpkg-buildpackage -us -uc

Agora, as somas de verificação que são fornecidas, estas devem ser canônicas (ou seja, mesmo). Pelo menos, pelo menos, eu entendo que é a afirmação de compilações reproduzíveis. . Eu quero que eu e o mantenedor consigam checar a integridade dos pacotes construídos. Eu olhei para o manpage do dpkg-buildpackage e tentei procurar pela palavra-chave 'reproducible' mas não a encontrei lá.

    
por shirish 20.11.2016 / 22:53

1 resposta

3

O mantenedor só lhe pediu para verificar se o patch fornecido corrige as coisas. Se dpkg com o patch permitir que você instale libconfig-model-perl sem os erros que você estava recebendo, isso sugeriria que o patch corrige o problema. Se isso não acontecer, o patch também inclui uma saída mais detalhada, que deve ajudar a identificar o problema real. Isso é tudo o que é necessário - não há necessidade de se preocupar com compilações reproduzíveis.

Como você tem um arquivo .changes , sua compilação foi concluída com êxito; e como dpkg inclui uma ampla suíte de testes, você pode ter certeza de que ela foi criada corretamente.

De qualquer forma, construir um pacote reproduzível atualmente requer uma toolchain modificada , e as versões reproduzíveis respondem a uma pergunta muito específica: "dado um ambiente de construção idêntico , posso construir um pacote de forma idêntica a alguma referência?" É improvável que o mantenedor e você tenham um ambiente de criação idêntico.

As somas de verificação no arquivo .changes não são canônicas em um sentido reproduzível. Eles estão presentes por dois motivos:

  • para verificar se um pacote enviado para o arquivo foi enviado corretamente;
  • para verificar se um pacote enviado para o arquivo corresponde ao que foi assinado pelo usuário (isso é parte da "cadeia de integridade" dos pacotes Debian).

Espera-se que reconstruções sucessivas da mesma fonte resultem em diferentes somas de verificação.

    
por 20.11.2016 / 23:06