O Comitê FESCo (Fedora Engineering Steering Committee), responsável pela parte técnica do desenvolvimento da distribuição Fedora Linux, aprovou um projeto para garantir compilações repetíveis de pacotes na versão de outono do Fedora 43. O objetivo da iniciativa é possibilitar que 99% dos pacotes no repositório sejam compiláveis de forma repetível.
As compilações repetíveis permitirão a criação de pacotes RPM personalizados que correspondem aos pacotes binários prontos disponibilizados para download. A correspondência é garantida no nível dos metadados principais e dos arquivos incluídos no pacote (o único diferencial serão os metadados relacionados ao tempo de compilação, ao host de compilação e à validação da assinatura digital). O usuário poderá verificar pessoalmente que os arquivos binários distribuídos nos pacotes foram compilados a partir dos códigos-fonte fornecidos e não contêm alterações ocultas. A verificação da identidade da compilação binária permite não depender apenas da confiança na infraestrutura de compilação da distribuição, pois a comprometimento do compilador ou das ferramentas de compilação pode resultar na inserção de backdoors ocultos.
Além da segurança, as compilações repetíveis também serão úteis para o controle de qualidade — os problemas ao tentar alcançar compilações repetíveis muitas vezes são causados por erros ou desordem no código, como a utilização de pacotes marcados como “noarch” com dependências ligadas a arquiteturas de hardware específicas. As compilações repetíveis também facilitarão o desenvolvimento de pacotes — após pequenas correções, os pacotes recompilados diferirão apenas nos elementos diretamente relacionados à modificação realizada, o que simplificará significativamente a comparação de versões de pacotes e análise de mudanças.
Ao formar compilações repetíveis, são considerados detalhes como a correspondência exata das dependências; o uso de um conjunto imutável e versões das ferramentas de compilação; um conjunto idêntico de opções e configurações padrão; a manutenção da ordem de compilação dos arquivos (uso dos mesmos métodos de ordenação); a desativação da adição de informações de serviço não persistentes pelo compilador, como valores aleatórios, referências a caminhos de arquivos e dados de data e hora da compilação. Erros e condições de corrida nas ferramentas também afetam a reprodutibilidade das compilações.
A infraestrutura do projeto Fedora já está preparada para a realização de builds reproduzíveis. Por exemplo, em lançamentos anteriores, foram feitas alterações no sistema de build que sincronizam os metadados sobre o tempo de modificação dos arquivos com o código fonte de referência (mtime agora não depende do tempo de build), além de garantir uma ordem constante de enumeração dos metadados e estruturas nos arquivos binários. Neste estágio, a cobertura de builds reproduzíveis é estimada em 90%. Para assegurar builds reproduzíveis nos 10% restantes, é necessário o envolvimento dos mantenedores dos pacotes problemáticos. Para incentivar a correção desses pacotes, falhas durante a realização de builds reproduzíveis serão tratadas como erros de build.
Projetos semelhantes para garantir o suporte a builds reproduzíveis também estão desenvolvendo as distribuições Debian, Arch Linux, openSUSE e NixOS.
Fonte: opennet.ru
