Debian muss reproduzierbare Pakete bereitstellen
(lists.debian.org)- Das Debian-Release-Team hat beschlossen, mitten im forky-Zyklus reproduzierbare Pakete bereitzustellen
- Die Migrationssoftware blockiert neue Pakete, die sich auf reproduce.debian.net nicht reproduzieren lassen
- Auch bei Regressionen der Reproduzierbarkeit in bestehenden Paketen in testing wird die Migration blockiert
- Für binNMUs wurde ebenfalls die Ausführung von autopkgtest hinzugefügt, wie bei source-full-Uploads
- Durch die Aufnahme von loong64 und Multi-Arch-Rebuilds ist die CI-Warteschlange größer geworden, weshalb Geduld gefragt ist
Reproduzierbarkeit von Debian-Paketen wird verpflichtend
- Das Debian-Release-Team hat zur Mitte des forky-Release-Zyklus entschieden, dass Debian reproduzierbare Pakete bereitstellen muss
- Diese Entscheidung wurde durch die Bemühungen des Reproducible Builds-Projekts ermöglicht
- Seit gestern ist die Migrationssoftware so aktiviert, dass sie die Migration neuer Pakete blockiert, die sich auf reproduce.debian.net nicht reproduzieren lassen
- Auch wenn bei bereits in testing vorhandenen Paketen Regressionen der Reproduzierbarkeit auftreten, wird die Migration blockiert
Qualitätssicherung und Verantwortung der Uploader
-
Ausführung von autopkgtest für testing-binNMUs
- Anfang dieses Jahres wurde der Migrationssoftware die Funktion hinzugefügt, binNMUs ebenso wie source-full-Uploads mit autopkgtest auszuführen
- Diese Funktion steht möglicherweise nicht in direktem Zusammenhang mit der Arbeit der meisten Maintainer, wird aber als weiterer Schritt zur Stärkung der Qualitätssicherung gesehen
-
Aufnahme der Architektur loong64 und wachsende CI-Warteschlange
- Vor zwei Wochen wurde die neue Architektur loong64 in das Archiv aufgenommen
- Debian erlaubt nur die Migration von Binärpaketen, die auf buildd gebaut wurden, und wegen der Multi-Arch-Anforderungen mussten auf allen Architekturen zahlreiche Pakete neu gebaut werden
- Wegen der zuvor hinzugefügten binNMU-Funktion ist die CI-Warteschlange derzeit recht groß, und das Release-Team bittet um etwas Geduld
-
Nachverfolgung nach dem Upload
- Uploader von Quellpaketen sind dafür verantwortlich sicherzustellen, dass das betreffende Paket migrieren kann
- Wenn ein Paket durch eine autopkgtest-Regression einer umgekehrten Testabhängigkeit blockiert wird und dafür ein Update dieser Abhängigkeit nötig ist, muss der Uploader einen Bug mit angemessener RC-Schwere einreichen
2 Kommentare
Hacker-News-Kommentare
Das ist ein großer Erfolg für Debian und die Welt der freien Software.
Allerdings hat es ziemlich lange gedauert, bis die Notwendigkeit verstanden wurde. Als ich 2007 auf debian-devel sagte, dass das nötig sei, bekam ich die Antwort, das sei eine gewaltige Zeitverschwendung. Tatsächlich war enorm viel Arbeit von vielen Leuten nötig, um hierher zu kommen, aber es war es absolut wert.
Deshalb halte ich „es war es wert“ nicht für richtig. Es erhöht nur die Hürden für Beiträge zu Debian, und ich habe schon viele Leute darüber klagen hören, dass Beiträge zu Debian ohnehin schwierig seien. Früher wurde das noch mit „wir brauchen jede Menge Prüfungen und Gegengewichte, damit die Pakete sauber ineinandergreifen“ verteidigt, aber das hier wirkt wie zusätzliche Schwierigkeit ohne echten Grund und mit nur geringem Nutzen.
Auf https://wiki.debian.org/ReproducibleBuilds gibt es mehr Informationen. Einiges ist veraltet, aber es gibt dort auch Diagramme, die die Zahl der in CI gebauten Pakete zeigen und wie viele davon reproduzierbare Builds sind.
Orange steht für FTBR, also „fails to build reproducibly“. Ich bin nicht besonders geübt darin, Zahlen aus solchen Diagrammen abzulesen, aber ich schätze grob ein paar Prozent, etwa 4–5 %.
Gute Sache. NetBSD hat seit 2017 vollständig reproduzierbare Builds. https://blog.netbsd.org/tnf/entry/netbsd_fully_reproducible_...
Zur Einordnung: Der Großteil der Debian-Pakete ist bereits reproduzierbar gebaut. Die übrigen, ungefähr 5 %, werden in dem Diagramm hier orange markiert: https://wiki.debian.org/ReproducibleBuilds
Debian hat große Fortschritte gemacht, aber wenn Debian sagt, es sei reproduzierbar, bedeutet das, dass für den eigenen Build Drittanbieter-Binärdateien herangezogen werden. Wenn wir sagen, es sei reproduzierbar, meinen wir, dass wir die gesamte Software-Lieferkette bis ans Ende zu 100 % aus Source Code bootstrappen.
Ich halte diesen Unterschied für wichtig.
https://stagex.tools
Ich freue mich wirklich über diese Veränderung. Nachdem ich 2021 über den SolarWinds-Angriff gelesen hatte und schockiert war, habe ich angefangen, mich an reproduzierbaren Builds zu beteiligen. [1]
Am treffendsten finde ich die Aussage von Magnus Ihse Bursie, der an reproduzierbaren Builds für OpenJDK gearbeitet hat: „Wenn Sie mich fragen, dann war die Tatsache, dass Compiler und Build-Tools irgendwann anfingen, nichtdeterministischen Output zu erzeugen, von Anfang an ein Bug.“ [2]
[1] https://www.linux.com/news/preventing-supply-chain-attacks-l...
[2] https://github.com/openjdk/jdk/pull/9152#issue-1270543997
Ich frage mich, warum das gerade jetzt ein Thema ist. Ich nutze Yocto für Embedded-Geräte, und reproduzierbare Builds ließen sich dort fast selbstverständlich umsetzen.
Auch Debian-Paketverwaltung lässt sich leicht aktivieren, daher wirkt es auf mich so, als müsste das doch längst alles möglich sein.
Reproduzierbare Builds sind in der industriellen IT eine essenzielle Methode. Debian steht dabei nicht unbedingt an der Spitze dieses Bereichs, sondern übernimmt eher eine branchenweite Praxis, die auch in anderen Betriebssystemen für Langzeitbetrieb und sicherheitsrelevante Einsatzzwecke genutzt wird.
Natürlich ist vieles davon heute auch deshalb leicht nutzbar, weil Yocto und die Debian-Entwickler bereits viel schwierige Arbeit geleistet haben.
Interessant ist, dass die Debian-Entwickler das nun als offensivere Richtlinie durchsetzen und es nicht mehr als Option, sondern als Standardnorm etablieren.
Für amd64 forky:
reproduced: 97.02%
good: 17586
bad: 511
fail: 30
unknown: 0
Diese Statistik sowie Statistiken für andere Architekturen und die Gründe für nicht reproduzierbare Builds finden sich auf https://reproduce.debian.net
Ich finde es immer überraschend, dass Debian das vorantreibt und nicht ein kommerzieller Vendor. Man sollte meinen, große Organisationen, die für RHEL und Ubuntu bezahlen, würden stark auf verifizierbare Binärdateien drängen.
Für freie Software ist das großartig, aber für jemanden, der Monopolist sein will, eher nicht.
Forbidden
You don't have permission to access this resource.
Apache Server at lists.debian.org Port 443
:/
Jedenfalls ist es auch in der Wayback Machine verfügbar: https://web.archive.org/web/20260510074120/https://lists.deb...
Lobste.rs-Kommentare
Aus Sicherheitssicht ist das eine gute Veränderung. Der Übergang kann mühsam sein, aber am Ende sorgt er für höheres Vertrauen bei Debian-Linux-Nutzern weltweit.
Ich frage mich, was der zentrale Vorteil für ein Projekt wie Debian ist. Geht es darum, dass jeder einen Nachweis dafür hat, dass keine Backdoor in den Binärdateien steckt?
Also dass dadurch das notwendige Vertrauen in Maintainer sinkt und zugleich das Risiko böswilliger Maintainer reduziert wird? Ich bin nicht skeptisch, ich habe nur nicht zu 100 % verstanden, warum Debian so viel Zeit darauf verwendet. Reproduzierbare Builds zu ermöglichen klingt ziemlich schwierig und arbeitsintensiv.
Im Kern geht es darum, einen Nachweis dafür zu liefern, dass der erzeugte Ausgabepaket tatsächlich aus genau diesem Quellcode entstanden ist und nicht aus einem versteckten zweiten Satz von Quellen. the reproducible-builds org has a bit of a 'why' which puts it better than i can
Reproduzierbare Builds herzustellen ist sehr schwierig. Schon Zeitstempel in der Compile-Pipeline können Unterschiede verursachen, ebenso die Metadaten erzeugter Archive. All diese Dinge müssen beseitigt werden, und manchmal sind dafür nicht einmal Patches am Paket selbst nötig, sondern an Upstream-Projekten wie CMake oder dem Go-Compiler. In vielen Fällen wurden solche Probleme früher nicht einmal in Betracht gezogen, daher ist Arbeit über den gesamten Build-Stack hinweg nötig. Diese Arbeit läuft allerdings schon lange, und ein großer Teil der zugrunde liegenden Infrastruktur ist bereits erledigt oder weit fortgeschritten.
Ist das, was Debian mit Reproduzierbarkeit meint, dasselbe Konzept wie bei NixOS?
NixOS arbeitet ebenfalls an reproduzierbaren Builds, und wenn ich mich richtig erinnere, ist zumindest das ISO sowohl beim Build als auch zur Laufzeit zu 100 % reproduzierbar. Aber das, was bei NixOS oft als Reproduzierbarkeit bezeichnet wird, ist nicht dasselbe wie die hier diskutierten „reproduzierbaren Builds“. Siehe dazu den foxboron-Artikel, auf den in einem Schwesterkommentar in diesem Thread verwiesen wird. Das ist eher Umgebungs-Reproduzierbarkeit oder „deterministische Builds“ und weiterhin wertvoll, aber nicht das, worum es hier geht.
Im Moment klingt das nach einem Ratschenmechanismus. Sind Dinge, die noch nie reproduzierbar gebaut wurden, weiterhin erlaubt?