Computerprogramme sind vergleichbar mit Kochrezepten und umfassen eine Folge von Anweisungen, die nacheinander abgearbeitet werden. Einfachere, kleine Programme sind häufig noch überschaubar und somit monolithisch. Sie beinhalten den gesamten Programmcode, der in einer einzigen Datei bereitgestellt wird.
Während zu Beginn der Informationsverarbeitung noch eine Tontafel, ein Holzstab mit Einkerbungen, ein Blatt Papier oder auch nur ein Lochstreifen zur Erfassung einer Folge von Anweisungen ausreichte, passt heutiger Programmcode nur noch selten auf eine einzige Bildschirmseite [Naumann-Abakus-Internet]. Ein Großteil der aktuell genutzten Software ist daher mehrteilig und überaus komplex. Dabei spielen viele, unterschiedliche Komponenten zusammen, erfüllen verschiedene Aufgaben und bedingen einander. Dazu gehören kompilierte Programme, Skripte, Bibliotheken, Daten und Konfigurationsdateien.
Die Paketierung der einzelnen Komponenten folgt eigenen Regeln, deren Konventionen nur zum Teil festgeschrieben sind und sich auch von Distribution zu Distribution etwas unterscheiden. Tabelle 2.3, „Paketierung der Komponenten am Beispiel von APT“ zeigt die Zerlegung in einzelne Pakete am Beispiel von APT. Dabei beinhaltet die linke Spalte den generischen Paketnamen ohne Nennung von Versionsnummer und Architektur, die mittlere Spalte die Kategorie, der das Paket zugeordnet ist (siehe „Sortierung der Pakete nach Verwendungszweck“ in Abschnitt 2.8, „Sortierung der Pakete nach Verwendungszweck“) und die rechte Spalte eine kurze Paketbeschreibung. Auf die genannten Bibliotheken gehen wir genauer in „APT und Bibliotheken“ in Kapitel 5, APT und Bibliotheken ein.
Tabelle 2.3. Paketierung der Komponenten am Beispiel von APT
Paketname | Paketkategorie | Komponente und Bedeutung |
---|---|---|
apt | Administration (admin) | Paketmanager für die Kommandozeile (siehe Abschnitt 6.2.2, „APT“) |
apt-doc | Dokumentation (doc) | Dokumentation zum Paket apt |
apt-transport-https | Administration (admin) | APT-Plugin für HTTPS-Support (obsolet seit APT 1.5) |
apt-utils | Administration (admin) | Hilfsprogramme für APT |
libapt-instX.Y | Bibliotheken (libs) | Laufzeitbibliothek zum Paketformat |
libapt-pkg.X.Y | Bibliotheken (libs) | Laufzeitbibliothek zur Paketverwaltung |
libapt-pkg-dev | Bibliotheken zur Entwicklung (libdevel) | Entwicklerdateien zu libapt-pkg |
libapt-pkg-doc | Dokumentation (doc) | Dokumentation zur Laufzeitbibliothek libapt-pkg |
libapt-pkg-perl | Bibliotheken (libs) | Laufzeitbibliothek zur Paketverwaltung, Perl-Schnittstelle |
In Abschnitt 2.11, „Benennung einer Paketdatei“ beleuchten wir die Benennung und Abfolge der Komponenten in den Paketnamen. Eine genaue Auflistung und zur Bedeutung der Paketkategorien lesen Sie in Abschnitt 2.8, „Sortierung der Pakete nach Verwendungszweck“ nach.
Die Ideen hinter der Zerlegung in einzelne Komponenten sind ganz unterschiedlich und ergeben sich aus der Entwicklung, dem Ausrollen und der nachfolgenden Pflege einer Software. Hauptmotivation ist dabei häufig, nicht das Rad jedes Mal neu erfinden zu müssen und stattdessen bereits bestehende Komponenten zu integrieren, die etabliert sind und bekanntermaßen einen gewissen Qualitätsstandard erfüllen. Im Open-Source-Bereich erfolgt die Entwicklung weltweit verteilt, daher ist hier eine Zerlegung in kleinere Einheiten und „Bausteine“ häufig von großem Nutzen. Aufgaben und Komponenten können dadurch besser an kleine, spezialisierte Teams verteilt werden.