Bemerkung: Das Original ist neuer als diese Übersetzung.

Autobuilder-Netz

Das Autobuilder-Netz ist eine Debian-Entwicklung die hilft, die Paket-Neuübersetzung für alle Architekturen, die Debian derzeit unterstützt, zu beschleunigen. Dieses Netz besteht aus mehreren Maschinen, die ein spezielles Software-Paket namens buildd verwenden, um Pakete aus dem Debian-Archiv herauszuholen und sie für die Ziel-Architektur neu zu bauen.

Warum wird das Autobuilder-Netz benötigt?

Die Debian-Distribution unterstützt etliche Architekturen, aber die Paket-Betreuer kompilieren Binärversionen gewöhnlich nur für eine einzige Architektur (normalerweise i386). Entwickler für andere Architekturen müssen auf neue Versionen von Paketen aufpassen und diese rekompilieren, falls sie aktuell zu der Intel-Distribution bleiben wollen.

Als Debian/m68k (die erste nicht-Intel-Portierung) begann, wurde all dies manuell durchgeführt: Entwickler beobachteten die Upload-Mailingliste für neue Pakete und nahmen einige von ihnen zum Bauen. Die Koordination, dass kein Paket zweimal von verschiedenen Leuten gebaut werde, geschah über Ankündigungen auf einer Mailingliste. Es ist offensichtlich, dass diese Prozedur fehlerbehaftet und zeitraubend ist. Dies war allerdings lange der normale Weg, um nicht-i386-Distributionen aktuell zu halten.

Das build-Daemon-System automatisiert den Großteil dieses Prozesses. Es besteht aus einer Reihe von Skripten (die in Perl und Python geschrieben sind), die sich im Laufe der Zeit entwickelt haben, um den Portierern bei verschiedenen Aufgaben zu helfen. Sie haben sich schließlich in ein System entwickelt, dass in der Lage ist, nicht-i386 Debian-Distributionen fast automatisch aktuell zu halten.

Wie funktioniert buildd?

Buildd ist der Name, der normalerweise der vom Autobuilder-Netz verwandten Software gegeben wird, aber tatsächlich besteht es aus einer Reihe von verschiedenen Teilen:

wanna-build
ein Werkzeug, dass bei der Koordination des (Neu-)Bauens über eine Datenbank hilft, die eine Liste von Paketen und ihrem Status hält. Dort ist eine zentrale Datenbank pro Architektur vorhanden, die Paket-Statusse, Versionen und einige andere Informationen aufbewahrt.
buildd
ein Daemon, der periodisch die von wanna-build verwaltete Datenbank überprüft und sbuild aufruft, um Pakete zu bauen. Er behält Fehler und Erfolge beim Bauen im Auge und wird auch das Paket hochladen, nachdem der Bau-Bericht vom Administrator bestätigt wurde.
sbuild
ist für die eigentliche Übersetzung von Paketen in isolierten Chroots zuständig. Es verwendet dafür hauptsächlich normale Debian-Werkzeuge, kümmert sich aber auch um Quell-Abhängigkeiten und einige andere kleine Macken.
quinn-diff
Füttert die wanna-build-Datenbank mit neuen Paketen. Es vergleicht die verfügbaren Pakete-Versionen für zwei Architekturen und gibt die Unterschiede aus (vergleicht eine Quell-Datei und eine Paket-Datei). Weitere Informationen über quinn-diff sind hier erhältlich.
andrea
Ein Werkzeug, dass einige Quellabhängigkeiten automatisch generiert und mit manuell hinzugefügten Abhängigkeiten zusammenführt.

Alle diese Teile arbeiten zusammen, um das Bau-Netz zum Laufen zu bekommen.

Was muss ein Debian-Entwickler machen?

In der Tat muss ein durchschnittlicher Debian-Entwickler das buildd-Netz nicht explizit benutzen. Immer wenn er ein Paket in das Archiv hochlädt (binär übersetzt für eine gegebene Architektur) wird es zu der Datenbank für alle Architekturen (im Zustand Needs-Build) hinzugefügt. Bau-Maschinen fragen die Datenbank nach Paketen in diesem Zustand ab und werden routinemäßig Pakete von dieser Liste nehmen. Die Liste wird nach vorherigem Übersetzungszustand, Priorität, Abschnitt und schließlich Paketnamen priorisiert.

Falls der Bau auf allen Architekturen gelingt, braucht der Betreuer nichts zu machen. Alle diese Binärpakete werden auf die Haupt-Site der Architektur hochgeladen. Falls der Bau nicht gelingt, kommt das Paket in einen speziellen Zustand (Failed oder Dep-Wait, falls sie von speziellen Bau-Abhängigkeiten abhängt, die nicht verfügbar sind). Der Administrator des Autobuilders wird die Pakete, die nicht bauen, durchsehen und wird dies dem Betreuer zurückmelden, gewöhnlich indem er einen Fehler in der Fehlerdatenbank öffnet.

Manchmal braucht ein Paket lange, um auf einer gegebenen Architektur zu bauen und dies hält das Paket vom Übergang nach Testing ab. Unglücklicherweise muss das Paket warten, bis eine Maschine es einsammelt. Buildd-Administratoren werden keine Bitten, den Bau zu beschleunigen, akzeptieren, da die Prioritäten-Liste bereits festgelegt ist.

Sie können den Status verschiedener buildd-Versuche von Paketen, die zu einem bestimmten Betreuer gehören, überprüfen, indem Sie die buildd-Protokolle überprüfen. Diese Protokolle sind auch vom Paket-Betreuer-Überblick aus verlinkt.

Für weitere Informationen über die verschiedenen Zustände, in denen ein Paket sein kann, lesen Sie bitte die wanna-build-states.

Wo kann ich weitere Informationen finden?

Natürlich sind sowohl die Dokumentation als auch der Quellcode, der für diese verschiedenen Werkzeuge verfügbar ist, der beste Weg um herauszufinden, wie das buildd-Netz arbeitet. Zusätzlich enthält der Portieren und portiert werden-Abschnitt der Debian-Entwicklerreferenz ergänzende Informationen über die Funktionsweise und stellt auch einige Informationen über Paket-Bauer und Portierungs-Werkzeuge bereit, die sowohl an dem Prozess des Aufsetzens als auch des Wartens des buildd-Netzes beteiligt sind.

Auf der Buildd-Statusseite sind einige Statistiken über das Autobuilder-Netz verfügbar.

Wie kann ich meinen eigenen Auto-Builder-Knoten aufsetzen?

Es gibt mehrere Gründe, warum ein Entwickler (oder Benutzer) einen Autobuilder aufsetzen und betreiben möchte:

Sie können weitere Information darüber, wie Sie einen Autobuilder aufsetzen können lesen.


Diese Einführung in das Autobuilder-Netz wurde mit Teilen und Stücken bereitgestellt von Roman Hodek, Christian T. Steigies, Wouter Verhelst, Andreas Barth, Francesco Paolo Lovergine und Javier Fernández-Sanguino geschrieben.