O Ubuntu é determinista? Por que não?

2

O Ubuntu é determinista? Eu assumi que eles são, se eu recriar o processo de construção de mídia de instalação do Ubuntu , eu vou ter a mesma imagem, (bit-a-bit, com as mesmas somas de verificação) que a dos espelhos do Ubuntu.

Recentes postagens de Joanna Rutkowska (desenvolvedora líder de Qubes OS distro) sugere que não é assim:

  

atualmente a maioria dos projetos, incluindo todas as distribuições Linux, não constroem deterministicamente

Por que não?

    
por Nickolai Leschov 01.05.2015 / 18:13

2 respostas

-1

Para começar, eu não acho que Rutkowska estava falando sobre a construção de mídias de instalação deterministicamente, mas sobre pacotes (deb, rpm).

O Debian está trabalhando na construção de pacotes de forma reproduzível ( link ), mas ainda há muitos pacotes que não são compilados dessa forma. ..

Construir toda uma distribuição deterministicamente certamente é ainda mais um desafio.

    
por Jan 01.05.2015 / 23:20
-1

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

  1. 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.

  2. o conjunto de ferramentas usadas para realizar a compilação e, mais geralmente, o ambiente de compilação deve ser gravado ou predefinido.

  3. 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

    
por Evan Carroll 27.12.2017 / 02:48