2.13. Paket-Priorität und essentielle Pakete

Jedes Paket beinhaltet ein Feld namens Priority – englisch für „Priorität“. Dabei geht es aber weniger um eine Rangfolge von Paketen, sondern um die Wichtigkeit eines Pakets bzw. um die Wahrscheinlichkeit, dass Sie dieses Paket installieren möchten.

Debian kennt die folgenden fünf Prioritätsstufen:

Die Begriffe in Klammern geben die Schlüsselworte wieder, die in der Paketbeschreibung genutzt werden. Jede dieser o.g. Stufen hat eine bestimmte Bedeutung.

Auflistung der Pakete mit einer festgelegten Priorität

In Abschnitt 8.9, „Pakete nach Prioritäten finden“ lesen Sie, wie Sie mit aptitude Pakete mit einer spezifischen Priorität finden.

2.13.1. Prioritätsstufe „erforderlich“ (required)

Dieser Prioritätsstufe sind Pakete zugeordnet, die für die korrekte Funktion des Betriebssystem unbedingt erforderlich sind. Dazu gehören beispielsweise dpkg, coreutils für die GNU Core Utilities mit den Befehlen wie ls, rm, cp, mv, das Init-System (seit Debian 8 Jessie das Metapaket init) und die C-Standard-Bibliotheken (libc6 auf den meisten Architekturen).

Entfernen Sie eines oder mehrere Pakete mit dieser Prioritätsstufe, kann das Ihre Installation so stark beschädigen, dass selbst das Werkzeug dpkg nicht mehr funktioniert.

Systeme, die nur aus Paketen der Prioritätsstufe „erforderlich“ bestehen, sind zwar lauffähig, aber im Normalfall nahezu unbenutzbar, da z.B. Pakete wie APT, less oder ein Texteditor fehlen. Die letztgenannten sind zum Betrieb nicht zwingend erforderlich[5].

2.13.2. Prioritätsstufe „wichtig“ (important)

In diese Prioritätsstufe gehören alle Pakete, die auf jedem UNIX- bzw. Debian-System zu erwarten sind oder ohne die das System nur sehr schwierig zu warten wäre. Das schließt auch Server ohne Monitor mit ein.

Als Pakete gehören neben apt u.a. gnupg und debian-archive-keyring für den Debian-Archiv-Schlüsselring zum Überprüfen der Signaturen von Paketlisten (siehe Abschnitt 8.32.1, „Prüfung eines Paketes auf Unversehrtheit“) dazu, ebenso OpenSSL, ein DHCP-Client, zwei Texteditoren (eine abgespeckte Variante von Vim sowie Nano), Kommandozeilenwerkzeuge zur Prozessverwaltung (ps, kill, free, top, uptime aus dem Paket procps), ein Syslog-Daemon, ein Cron-Daemon, Man-Pages, Netzwerk-Programme wie ping, traceroute und iptables sowie das Netzwerkschnittstellenverwaltungssystem ifupdown.

Diese Prioritätsstufe beinhaltet weder große Applikationen noch graphische Programme. Insbesondere gehören weder GNU Emacs noch TeX noch das X Window System oder das xterm in diese Kategorie.

2.13.3. Prioritätsstufe „standard“ (standard)

Haben Sie alle Pakete dieser Prioritätsstufe installiert, verfügen Sie über ein nicht allzu großes, aber auch nicht zu unkomfortables System ohne graphische Bedienoberfläche. Ein solches System wird im Debian Installer ausgewählt, wenn Sie als Administrator bei der Installation nicht explizit etwas anderes festlegen. Es enthält nur wenige größere Anwendungen und Daemons.

Dazu gehören u.a. ein abgespeckter Exim als lokales Mail-Server-Programm, die E-Mail-Programme mutt und mailx, eine vollständige Perl-Installation (d.h. Perl mitsamt allen „Core“-Modulen[6]), Python, Client-Anwendungen für SSH, FTP, Telnet, NFS und Whois, ein Text-Modus-Webbrowser (w3m) und der allgegenwärtige Textdateien-Betrachter less. Außerdem ist reportbug enthalten, ein Programm zum Melden von Fehlern in Debian (siehe dazu „Bugreports anzeigen“ in Abschnitt 37.3, „Bugreports anzeigen“).

2.13.4. Prioritätsstufe „optional“ (optional)

Dies ist in gewisser Weise der Standardwert für die Priorisierung eines Pakets. Alle Pakete, die in keine der anderen Stufen gehören, werden dieser Prioritätsstufe zugeordnet. Sie enthält deswegen auch den Großteil aller Pakete in Debian. Optional bedeutet in diesem Kontext, dass diese Pakete nicht von jedermann benötigt werden.

2.13.5. Prioritätsstufe „extra“ (extra)

In dieser Prioritätsstufe sind einerseits Pakete, die im Konflikt mit Paketen aus den anderen Prioritätsstufen stehen. Dazu zählen z.B. alternative Mail-Transport-Agents wie Postfix, alternative Cron-Daemons wie Cronie oder alternative Syslog-Daemons wie Syslog-NG oder die Syslog-Implementation aus Busybox.

Andererseits enthält sie aber auch Pakete, die nur in ganz bestimmten Fällen gebraucht werden, z.B. Programme zur Nutzung exotischer Hardware oder nur in bestimmten Umfeldern vorkommenden Daten, Pakete mit Debug-Symbolen für andere Pakete, Übergangspakete, etc. Beispielsweise sind viele Pakete aus dem Bereich „Wissenschaft“ mit dieser Priorisierung versehen.

2.13.6. Markierung „essentiell“ (essential)

Zusätzlich zu den bereits oben vorgestellten Prioritäten gibt es noch die Markierung essential. Diese Markierung tragen nur sehr grundlegende Pakete.

Eintrag in der Paketbeschreibung. 

Essential: yes

Pakete mit dieser Markierung müssen nicht explizit als Abhängigkeit bei anderen Paketen deklariert werden. In der Regel sind alle Pakete der Prioritätsstufe „erforderlich“ in dieser Form markiert, von denen kein anderes Paket dieser Stufe abhängt. Somit wird auch bei der Entfernung eines nicht-essentiellen Pakets der Stufe „erforderlich“ gewarnt. Das passiert jedoch nicht, wenn bei einer Umbenennung eines solchen Pakets das alte Paket entfernt wird, um für das neue Paket Platz zu machen oder weil es nicht mehr gebraucht wird (d.h. irgendwann nicht mehr notwendig ist).

Unter „Pakete nach Prioritäten finden“ in Abschnitt 8.9, „Pakete nach Prioritäten finden“ lesen Sie, wie Sie auflisten, welche Pakete genau auf Ihrer Version von Debian als essentiell markiert sind.

Weiterhin hat die Markierung „essentiell“ den Effekt, dass sich beispielsweise auch dpkg weigert, solche Pakete zu entfernen. Mit dem zusätzlichen Parameter --force-remove-essential übergehen Sie diese Voreinstellung und können die Aktion trotzdem durchführen (siehe dazu „Paketoperationen erzwingen“ in Abschnitt 8.45, „Paketoperationen erzwingen“).

apt-get und aptitude entfernen diese Pakete nur nach Eingabe des vollständigen Satzes „Ja, tue was ich sage!“ (apt-get) bzw. „Mir ist klar, dass das eine sehr schlechte Idee ist.“ (aptitude). Diese Sätze werden jeweils in der eingestellten Sprache Ihres Debiansystems angezeigt (Lokalisierung), sofern eine Übersetzung vorhanden ist. Nachfolgendes Beispiel zeigt die Bildschirmausgabe vor der Entfernung des Pakets init [Debian-Paket-init].

Eingabeaufforderung von apt-get vor der Entfernung des essentiellen Pakets init

# apt-get remove init
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut.
Statusinformationen werden eingelesen.... Fertig
Die folgenden Pakete werden ENTFERNT:
  init
WARNUNG: Die folgenden essentiellen Pakete werden entfernt.
Dies sollte NICHT geschehen, außer Sie wissen genau, was Sie tun!
  init
0 aktualisiert, 0 neu installiert, 1 zu entfernen und 0 nicht aktualisiert.
Nach dieser Operation werden 29,7 kB Plattenplatz freigegeben.
Sie sind im Begriff, etwas potentiell Schädliches zu tun.
Zum Fortfahren geben Sie bitte »Ja, tue was ich sage!« ein.
 ?]



[5] Hat z.B. ein System keine Netzwerkanbindung und wird deswegen nur sehr selten aktualisiert, ist APT nicht notwendig. Aktualisierungen können auch auf anderen Wegen, bspw. via USB-Stick oder SD-Karte mittels dpkg eingepflegt werden. Allerdings sind dann Abhängigkeiten ggf. manuell aufzulösen. Bei reinen Paketaktualisierungen ist dies nur sehr selten ein Problem, da die Abhängigkeiten im Normalfall auch schon von der vorherigen Paketversion gebraucht wurden.

[6] Perl selbst und ein paar wenige Perl-Module sind im Paket perl-base welches „essentiell“ ist.