Il Comitato FESCo (Fedora Engineering Steering Committee), responsabile della parte tecnica dello sviluppo della distribuzione Fedora Linux, ha approvato il progetto per garantire la costruzione ripetibile dei pacchetti nell'uscita autunnale di Fedora 43. L'obiettivo dell'iniziativa è di applicare costruzioni ripetibili per almeno il 99% dei pacchetti nel repository.
Le costruzioni ripetibili permetteranno di creare i propri pacchetti RPM che corrispondono ai pacchetti binari pronti per il download. La corrispondenza è garantita a livello di metadati principali e dei file inclusi nei pacchetti (le uniche differenze saranno nei metadati riguardanti il tempo di costruzione, l'host di costruzione e la verifica tramite firma digitale). L'utente potrà verificare di persona che i file binari distribuiti nei pacchetti siano stati costruiti dai sorgenti forniti e non contengano modifiche nascoste. La verifica dell'identità della costruzione binaria consente di non fare affidamento unicamente sulla fiducia nella infrastruttura di costruzione della distribuzione, poiché la compromissione del compilatore o degli strumenti di costruzione potrebbe portare all'inserimento di backdoor nascoste.
Oltre alla sicurezza, le costruzioni ripetibili saranno utili anche per il controllo della qualità: i problemi nella realizzazione di costruzioni ripetibili sono spesso causati da errori o disordine nel codice, ad esempio dall'uso di pacchetti contrassegnati come "noarch" e da dipendenze legate a specifiche architetture hardware. Le costruzioni ripetibili semplificheranno anche lo sviluppo dei pacchetti: dopo piccole modifiche, i pacchetti ricostruiti differiranno solo per elementi direttamente collegati alla modifica apportata, il che renderà notevolmente più semplice il confronto delle versioni dei pacchetti e l'analisi delle modifiche.
Nella realizzazione delle costruzioni ripetibili si tengono in considerazione dettagli come la corrispondenza esatta delle dipendenze; uso di versioni e composizioni immutabili degli strumenti di costruzione; un insieme identico di opzioni e impostazioni per default; mantenimento dell'ordine di costruzione dei file (applicazione degli stessi metodi di ordinamento); disabilitazione dell'aggiunta di informazioni casuali da parte del compilatore, come valori casuali, riferimenti ai percorsi dei file e dati sulla data e ora di costruzione. Anche gli errori e le condizioni di competizione negli strumenti influiscono sulla riproducibilità delle costruzioni.
L'infrastruttura del progetto Fedora è già pronta per implementare le costruzioni ripetibili. Ad esempio, nelle versioni precedenti sono state apportate modifiche al sistema di costruzione per sincronizzare i metadati relativi all'orario di modifica dei file con il codice sorgente di riferimento (mtime ora non dipende più dal tempo di costruzione), oltre a garantire un ordine costante di enumerazione dei metadati e delle strutture nei file binari. A questo punto, la copertura delle costruzioni ripetibili è valutata al 90%. Per garantire costruzioni ripetibili nel restante 10% è necessario il coinvolgimento dei manutentori dei pacchetti problematici. Per incentivare la correzione di tali pacchetti, i problemi riscontrati nelle costruzioni ripetibili saranno considerati come errori di costruzione.
Progetti simili per garantire il supporto delle costruzioni ripetibili sono in fase di sviluppo anche per le distribuzioni Debian, Arch Linux, openSUSE e NixOS.
Fonte: opennet.ru
