Não, eles não são. Vamos esclarecer uma distinção aqui,
-
O sistema suporta "compilações reproduzíveis"?
Sim, todos os sistemas suportam pacotes determinísticos.
-
O sistema impõe "compilações reproduzíveis"?
Não, embora ajude a diagnosticar problemas, e estão sendo feitos trabalhos para tornar os pacotes reproduzíveis - os bugs estão sendo reportados e manipulados de qualquer maneira.
-
Tudo é, sem exceção, reproduzível?
Nem perto.
Agora vamos definir "compilações reproduzíveis"
Uma compilação é reproduzível se for fornecido o mesmo código-fonte, ambiente de criação e instruções de compilação, qualquer parte pode recriar cópias idênticas de bit a bit de todos os artefatos especificados.
Os atributos relevantes do ambiente de compilação, as instruções de compilação e o código-fonte, bem como os artefatos esperados reproduzíveis, são definidos pelos autores ou distribuidores. Os artefatos de uma construção são as partes dos resultados da construção que são a saída principal desejada.
Agora vamos falar sobre o que é necessário
Confira esta página em "Como" que estabelece três critérios
-
o sistema de compilação precisa ser totalmente determinístico: transformar uma determinada fonte deve sempre criar o mesmo resultado. Normalmente, a data e a hora atuais não devem ser gravadas e a saída sempre deve ser gravada na mesma ordem.
-
o conjunto de ferramentas usadas para realizar a compilação e, mais geralmente, o ambiente de compilação deve ser gravado ou predefinido.
-
os usuários devem ter uma maneira de recriar um build 3. suficientemente próximo, realizar o processo de compilação e verificar se a saída corresponde à compilação original.
Você pode encontrar mais documentação sobre sobre tudo isso aqui .
Por que o Ubuntu não é reproduzível atualmente, coisas como Perl atualmente falha porque -V
armazena os argumentos do compilador por conveniência - eles estão aguardando o GCC para corrigir esse envio. Muitas dessas funcionalidades podem simplesmente ser eliminadas. Alguns outros problemas: algumas páginas man e programas têm as datas de compilação compiladas, outras compilam em caminhos mutáveis para bibliotecas compartilhadas e coisas do tipo.
Não ser reproduzível não é um problema ou uma vulnerabilidade. Isso só dificulta a verificação de que você não foi adulterado e, atualmente, essa funcionalidade está sendo visualizada como mais valiosa.
Você pode seguir o progresso do Debian em direção ao determinismo aqui