Ein Angebot von

Open Source

Debian oder Yocto – welches Linux-Buildsystem ist besser?

| Autor / Redakteur: Jan Altenberg / Franz Graser

Tux, das Linux-Maskottchen: Die Notwendigkeit für ein Buildsystem erklärt sich aus der Linux-Historie. Mit Buildsystemen wird quasi genau die Anwendungsumgebung auf Linux-Basis erstellt, die der Anwender für seine Zwecke benötigt.
Tux, das Linux-Maskottchen: Die Notwendigkeit für ein Buildsystem erklärt sich aus der Linux-Historie. Mit Buildsystemen wird quasi genau die Anwendungsumgebung auf Linux-Basis erstellt, die der Anwender für seine Zwecke benötigt. (Bild: Larry Ewing, Simon Budig)

Linux-Buildsysteme erstellen eine Kombination aus dem Linux-Kernel und der für eine bestimmte Anwendung relevanten Programme. Doch welches Buildsystem ist das richtige?

Der Hintergrund von Buildsystemen erschließt sich am besten durch einen Blick auf die Historie von freien UNIX-Systemen und von Linux. Der erste wichtige Schritt in Richtung Linux-basierter Geräte, wie wir sie heute kennen, war die Gründung der Free Software Foundation und dem GNU-Projekt mit der Zielsetzung der Implementierung eines freien UNIX-Systems. Hierzu gehören zum einen der Betriebssystemkern und zum anderen alle Werkzeuge und Programme, mit denen dieser sinnvoll genutzt werden kann.

In letzterem Punkt, der Erstellung von UNIX-Programmen (wie der Shell, des Compilers und der grafischen Oberfläche) war das GNU-Projekt sehr erfolgreich. Nur die Entwicklung des Betriebssystemkerns ging sehr schleppend voran. An diesem Punkt schließt nun die Erfolgsgeschichte von Linux an. Anfang der 1990er Jahre entstand das Betriebssystem Linux, als freier UNIX-Klon. Diese Entwicklung ging sehr rasch voran, womit für das GNU-Projekt nun ein geeigneter Betriebssystemkern zur Verfügung stand.

Warum ist ein Buildsystem notwendig?

Genau diese Kombination aus Linux-OS und den freien Werkzeugen des GNU-Projektes bietet die Basis für die Linuxsysteme, die wir heute kennen. Genau genommen ist Linux also nur ein Betriebssystemkern, der für den Anwender mit den unterschiedlichsten Programmen kombiniert werden kann. Diese Kombination wird allgemein als Distribution bezeichnet. Ein Buildsystem hat also die Aufgabe, genau diese Kombination zu erstellen.

Die Anforderungen klingen zunächst sehr einfach: Ein Buildsystem dient in erster Linie dazu, eine auf einen bestimmten Anwendungszweck abgestimmte Kombination aus dem Linux Kernel und diversen Applikationen zu erstellen. Doch bei genauerer Betrachtung sind die Randbedingungen, die ein Buildsystem erfüllen muss, deutlich komplexer. Im industriellen Umfeld genügt nicht nur die einfache Erstellung einer Software, auch die Reproduzierbarkeit muss gewährleistet sein.

Gerade die Reproduzierbarkeit stellt aufgrund der oft sehr langen Produktlebenszyklen eine besondere Herausforderung dar: Solche Systeme müssen auch über einen Zeitraum von mehr als zehn Jahren reproduzierbar zu erstellen sein.

Neben den technischen Randbedingungen kommt ein weiterer Aspekt ins Spiel: Die Lizenzverwaltung. Sowohl Linux als auch die Werkzeuge des GNU-Projektes sind unter Open-Source-Lizenzen gestellt, die mit verschiedenen Pflichten verbunden sind. Eine nicht zu vernachlässigende Aufgabe eines Buildsystemes ist es, eine Auflistung der in den erzeugten Distributionen verwendeten Lizenzen zu erstellen und den Anwender bei der Erfüllung der Lizenzpflichten (etwa bei der Bereitstellung der Quelltexte verwendeter Open-Source Komponenten) zu unterstützen.

Inhalt des Artikels:

Kommentar zu diesem Artikel abgeben

Schreiben Sie uns hier Ihre Meinung ...
(nicht registrierter User)

Zur Wahrung unserer Interessen speichern wir zusätzlich zu den o.g. Informationen die IP-Adresse. Dies dient ausschließlich dem Zweck, dass Sie als Urheber des Kommentars identifiziert werden können. Rechtliche Grundlage ist die Wahrung berechtigter Interessen gem. Art 6 Abs 1 lit. f) DSGVO.
Kommentar abschicken
copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Infos finden Sie unter www.mycontentfactory.de (ID: 43669337 / Open Source)