Das FESCo (Fedora Engineering Steering Committee), das für den technischen Teil der Entwicklung des Fedora Linux-Distributions verantwortlich ist, hat ein Projekt zur Gewährleistung wiederholbarer Paket-Bauten im Herbst-Release von Fedora 43 genehmigt. Ziel der Initiative ist es, wiederholbare Bauten für mindestens 99% der Pakete im Repository anzubieten.
Wiederholbare Bauten ermöglichen die Erstellung eigener RPM-Pakete, die mit den zum Download angebotenen fertigen Binärpaketen übereinstimmen. Die Übereinstimmung erfolgt auf der Ebene der grundlegenden Metadaten und der im Paket enthaltenen Dateien (die einzigen Unterschiede werden in den Metadaten über die Bauzeit, den Bau-Host und die digitale Signatur bestehen). Benutzer können sich persönlich davon überzeugen, dass die in den Paketen verbreiteten Binärdateien aus den bereitgestellten Quelltexten erstellt wurden und keine versteckten Änderungen enthalten. Die Überprüfung der Identität des Binärbaus ermöglicht es, sich nicht nur auf das Vertrauen in die Bauinfrastruktur der Distribution zu verlassen; eine Kompromittierung des Compilers oder der Bauwerkzeuge könnte zur Einschleusung versteckter Backdoors führen.
Neben der Sicherheit werden wiederholbare Bauten auch für die Qualitätskontrolle von Nutzen sein – Probleme beim Versuch, wiederholbare Bauten zu erreichen, sind oft auf Fehler oder Unordnung im Code zurückzuführen, beispielsweise auf die Verwendung von Paketen, die als „noarch“ gekennzeichnet sind, sowie auf Abhängigkeiten, die an bestimmte Hardware-Architekturen gebunden sind. Wiederholbare Bauten vereinfachen auch die Paketentwicklung – nach geringfügigen Anpassungen werden die neu aufgebauten Pakete nur durch Elemente unterscheiden, die direkt mit der vorgenommenen Änderung verbunden sind, was den Vergleich von Paketen und die Analyse von Änderungen erheblich erleichtert.
Bei der Erstellung wiederholbarer Builds werden solche Nuancen berücksichtigt, wie die exakte Übereinstimmung der Abhängigkeiten; die Verwendung unveränderter Bestandteile und Versionen des Build-Toolsets; identische Sätze von Optionen und Standardeinstellungen; die Beibehaltung der Reihenfolge des Baus von Dateien (Anwendung derselben Sortiermethoden); die Deaktivierung durch den Compiler hinzugefügter nicht konstanter Metainformationen, wie zufällig generierte Werte, Verweise auf Dateipfade und Daten zum Datum und zur Uhrzeit des Builds. Auf die Reproduzierbarkeit der Builds wirken sich auch Fehler und Race Conditions in den Tools aus.
Die Infrastruktur des Fedora-Projekts ist bereits bereit für wiederholbare Builds. Beispielsweise wurden in früheren Versionen Änderungen am Build-System vorgenommen, die die Metadaten zum Änderungszeitpunkt der Dateien mit dem Referenz-Quellcode synchronisieren (mtime ist jetzt unabhängig von der Build-Zeit), sowie eine konstante Reihenfolge der Auflistung von Metadaten und Strukturen in Binärdateien sicherstellen. In dieser Phase wird der Anteil der wiederholbaren Builds auf 90 % geschätzt. Für die verbleibenden 10 % ist die Mitwirkung der Maintainer von problematischen Paketen erforderlich, um wiederholbare Builds zu gewährleisten. Um die Änderung solcher Pakete zu fördern, sollen Fehler bei der Durchführung wiederholbarer Builds als Build-Fehler behandelt werden.
Ähnliche Projekte zur Unterstützung wiederholbarer Builds entwickeln auch die Distributionen Debian, Arch Linux, openSUSE und NixOS.
Quelle: opennet.ru
