Komitet FESCo (Fedora Engineering Steering Committee), odpowiedzialny za techniczną część rozwoju dystrybucji Fedora Linux, zatwierdził projekt zapewnienia powtarzalnych budów pakietów w jesiennej wersji Fedora 43. Celem inicjatywy jest umożliwienie stosowania powtarzalnych budów dla co najmniej 99% pakietów w repozytorium.
Powtarzalne budowy umożliwią tworzenie własnych pakietów RPM, które będą zgodne z dostępnymi do pobrania gotowymi pakietami binarnymi. Zgodność będzie zapewniona na poziomie podstawowych metadanych oraz plików zawartych w pakiecie (różnić się będą tylko metadane dotyczące czasu budowy, hosta budowy i potwierdzenia podpisem cyfrowym). Użytkownik będzie mógł osobiście przekonać się, że dystrybuowane w pakietach pliki binarne zostały zbudowane z dostarczanych źródeł i nie zawierają ukrytych zmian. Weryfikacja tożsamości budowy binarnej pozwala unikać polegania jedynie na zaufaniu do infrastruktury budowlanej dystrybucji; kompromitacja kompilatora lub narzędzi budowlanych może prowadzić do wprowadzenia ukrytych backdoorów.
Oprócz bezpieczeństwa powtarzalne budowy będą również przydatne do kontroli jakości — problemy w dążeniu do osiągnięcia powtarzalnych budów często są spowodowane błędami lub chaosem w kodzie, na przykład użyciem w pakietach oznaczonych jako „noarch” zależności przypisanych do określonych architektur sprzętowych. Powtarzalne budowy również uproszczą rozwój pakietów — po niewielkich poprawkach zrekonstruowane pakiety będą różnić się tylko elementami bezpośrednio związanymi z wprowadzoną zmianą, co znacznie ułatwi porównywanie wersji pakietów i analizowanie zmian.
Podczas formowania powtarzalnych budów uwzględniane są takie niuanse, jak dokładne dopasowanie zależności; użycie niezmiennego zestawu i wersji narzędzi budowlanych; identyczny zestaw opcji i ustawień domyślnych; zachowanie kolejności budowy plików (stosowanie tych samych metod sortowania); wyłączenie dodawania przez kompilator nieprzewidywalnych informacji pomocniczych, takich jak losowe wartości, odniesienia do ścieżek plików oraz dane o dacie i czasie budowy. Na reprodukowalność budów wpływają również błędy i stany wyścigu w narzędziach budowlanych.
Infrastruktura projektu Fedora jest już przygotowana do realizacji powtarzalnych kompilacji. Na przykład, w poprzednich wydaniach w systemie kompilacyjnym wprowadzono zmiany synchronizujące metadane dotyczące czasu modyfikacji plików z referencyjnym kodem źródłowym (mtime nie zależy już od czasu kompilacji), a także zapewniające stałą kolejność wyliczania metadanych i struktur w plikach binarnych. Na obecnym etapie zasięg powtarzalnych kompilacji szacowany jest na 90%. Aby zapewnić powtarzalne kompilacje w pozostałych 10%, konieczny jest udział opiekunów problematycznych pakietów. Aby zachęcić do wprowadzania poprawek w takich pakietach, usterki podczas powtarzalnych kompilacji zamierzają traktować jako błędy kompilacji.
Podobne projekty mające na celu wsparcie powtarzalnych kompilacji rozwijają również dystrybucje Debian, Arch Linux, openSUSE i NixOS.
Źródło: opennet.ru
