18.1. Hintergrund: Warum alternative Standardprogramme?

In Debian stellen mehrere Programme bzw. Pakete eine ähnliche oder gleiche Fähigkeit bereit. Damit entscheiden Sie, welches Werkzeug zum Einsatz kommt. Ubuntu fährt hier eine wesentlich restriktivere Politik.

Das betrifft auf der einen Seite sehr generische Funktionalitäten wie z.B. die eines Webbrowsers, eines (Text-)Editors oder eines Pagers, aber auch sehr spezifische Funktionalitäten, für die einfach mehrere Implementierungen vorliegen. Zu Letzteren gehören bspw. das Schweizer Taschenmesser für TCP/IP namens netcat oder die Skriptsprache awk. Letztere liegt in drei Varianten vor — in der eher umfangreicheren Implementation des GNU Projektes (gawk), in der kleineren und schnelleren Implementation von Mike Brennan (mawk) und in der originalen Awk-Implementation [awk].

Weiterhin gibt es in Debian von einigen Programmen mehr als eine Programmgeneration.

In Debian 8 Jessie gibt z.B. verschiedene Veröffentlichungen von GCC und Automake. GCC ist in den beiden Versionen 4.8 und 4.9 enthalten und Automake in den Versionen 1.11 und 1.14. Einer der Gründe für die verschiedenen Versionen ist, dass manche Pakete in Debian z.B. nur mit einer bestimmten Generation eines Compilers übersetzt werden können. So werden z.B. in Debian 8 Jessie alle Linuxkernel mit GCC 4.8 kompiliert, während GCC 4.9 der Standardcompiler ist. Je nach Einsatzzweck eines Systems kann es entsprechend auch hilfreich sein, den Standardcompiler systemweit auf eine bestimmte Generation festzulegen.

In Debian 9 Stretch ist dagegen GCC wieder nur noch in einer Version enthalten, nämlich 6.3.0. Dafür ist OpenSSL hingegen in zwei verschiedenen Versionen enthalten — 1.1.0 und 1.0.2. Hintergrund ist hier, dass bestimmte Programme (noch) nicht sauber mit der neueren OpenSSL-Version kompiliert werden können und die dazu notwendigen Änderungen nicht-trivial sind. So ist z.B. Apache gegen OpenSSL 1.0.2 gelinkt, weil noch nicht alle SSL-nutzenden Apache-Module sauber mit OpenSSL 1.1 zusammenarbeiten. Eine Standard-Version in dem Sinne, wie es sie beim GCC gibt, existiert hier jedoch nicht. Gegen welche OpenSSL-Version ein Programm kompiliert und später gelinkt wird, hängt davon ab, welches der beiden sich gegenseitig ausschließenden Pakete libssl-dev (OpenSSL 1.1) oder libssl1.0-dev (OpenSSL 1.0.2) installiert ist.

Ein weiterer Grund für die Verwendung des Alternativen-Systems innerhalb desselben Binärpakets oder von Binärpaketen auf der Basis desselben Sourcepakets sind unterschiedliche Konfigurationen oder variierende Abhängigkeiten. Beispiel eins ist GNU Emacs, welcher in drei Varianten vorliegt:

Ein zweites Beispiel ist der Windowmanager dwm, bei welchem die Konfiguration zum Kompilierzeitpunkt festgelegt wird. Das Paket dwm [Debian-Paket-dwm] enthält daher vier Programme mit einer jeweils unterschiedlichen Konfiguration — dwm.default, dwm.maintainer, dwm.web und dwm.winkey. Über das Alternativen-System legen Sie fest, welches davon verwendet wird, wenn Sie lediglich dwm aufrufen.

Viele Administratoren haben zudem sehr genaue Vorstellungen, welche Programme verwendet werden sollten, wenn sie unter dem generischen Programmnamen aufgerufen werden.