text: APT ist ein gewaltiges Projekt, dessen ursprünglicher Entwurf eine grafische Schnittstelle vorsah. Es basiert auf einer Bibliothek, die die Kernanwendung enthält und apt-get war das erste Frontend – befehlszeilenbasiert – das innerhalb des Projekts entwickelt wurde. apt ist ein zweites Kommandozeilen-basiertes Frontend von APT, das einige Designfehler von apt-get überwindet.
  Beide Tools basieren auf derselben Bibliothek und sind daher sehr nahe beieinander. Das Standardverhalten von apt wurde jedoch für die interaktive Verwendung verbessert, um das zu tun, was die meisten Benutzer erwarten. Die APT-Entwickler behalten sich das Recht vor, das öffentliche Schnittstelle dieses Tools zu ändern, um es weiter zu verbessern. Die öffentliche Schnittstelle von apt-get ist im Gegensatz dazu gut definiert und ändert sich in keiner Weise rückwärts-inkompatibel. Es ist daher das Tool, das Sie verwenden sollten, wenn Sie Installationsaufgaben skripten müssen.
  Zahlreiche andere grafische Oberflächen erschienen dann als externe Projekte: synaptic, aptitude (die sowohl eine Textmodus-Oberfläche als auch eine grafische - wenn auch noch nicht vollständig - enthält), wajig, etc. Die empfohlene Schnittstelle, apt, ist diejenige, die wir in den Beispielen in diesem Abschnitt verwenden werden. Beachten Sie jedoch, dass apt-get und aptitude eine sehr ähnliche Befehlszeilen-Syntax haben. Wenn es große Unterschiede zwischen diesen Befehlen gibt, werden diese detailliert.
  Bei jeder Verwendung von APT muss die Liste der verfügbaren Pakete aktualisiert werden; dies kann mit einem einfachen apt update erledigt werden. Abhängig von der Geschwindigkeit Ihrer Internetverbindung und Konfiguration kann diese Operation eine Weile dauern, da dies bedeutet, eine gewisse Anzahl von (üblicherweise komprimierten Packages/Sources/Translation-language-code-Dateien) die mit der Entwicklung von Debian nach und nach größer und größer wurden (mindestens 10 MB für die Daten des Abscnitts main). Selbstverständlich erfordert die Installation von einem CD-ROM/DVD-Satz keinerlei Herunterladen – in diesem Fall ist die Operation sehr schnell.
  TIPP Inkrementelle Aktualisierungen
  Das Ziel von apt update ist, von jeder Paketquelle die jeweilige Packages- (oder Sources--) Datei herunterzuladen. Allerdings können diese Dateien selbst nach dem Komprimieren mit xz recht groß bleiben (die Packages.xz für den Abschnitt main von Buster ist größer als 7 MB). Falls Sie regelmäßig aktualisieren wollen, kann das Herunterladen viel Zeit in Anspruch nehmen.
  Aus Performancegründen kann APT differentielle Dateien herunterladen, die nur die Änderungen seit der vorigen Aktualisierung beinhalten. Um dies zu erreichen, verteilen offizielle Spiegelserver von Debian verschiedene Dateien, die die Unterschiede zwischen einer Version der Packages-Datei und der folgenden Version auflisten. Sie werden bei jeder Aktualisierung der Archive erzeugt, und ein Verlauf von einer Woche wird vorgehalten. Jede dieser "Diff"-Dateien für Unstable ist nur ein paar Dutzend Kilobytes groß, sodass die Datenmenge eines wöchentlichen apt update oft nur ein Zehntel der Gesamtdateigröße beträgt. Für Stable und Testing mit weniger Änderungen ist der Gewinn noch deutlicher spürbar.
  Manchmal jedoch kann es wünschenswert sein, das Herunterladen der gesamten Packages-Datei zu erzwingen, besonders wenn die letzte Aktualisierung lange zurück liegt oder die Gesamtgröße der inkrementellen Differenz-Dateien nur wenig geringer ist. Dies kann auch interessant sein, wenn der Netzwerkzugriff sehr schnell aber der Prozessor der zu aktualisierenden Maschine ziemlich langsam ist, weil das Herunterladen schneller geht, als wiederholt die neue Version dieser Dateien zu berechnen (immer wieder die Unterschiede der jeweils ältesten Differenz-Datei auf die Paketliste anzuwenden). Dazu setzen Sie den APT-Konfigurationsparameter Acquire::PDiffs verwenden auf false.
  Die Optionen Acquire :: * steuern auch andere Aspekte des Downloads und sogar die Download-Methoden. Acquire :: Languages kann den Download von Translation-Sprachcode-Dateien einschränken oder deaktivieren und noch mehr Zeit sparen. Für eine vollständige Referenz siehe apt.conf(5).
  Mit APT können Pakete dem System hinzugefügt oder entfernt werden, genauer mit apt install Paket und apt remove Paket. In beiden Fällen installiert APT automatisch die nötigen Abhängigkeiten oder löscht die Pakete, die von dem zu entfernenden Paket abhängen. Der Befehl apt purge Paket ist mit einer vollständigen Deinstallation verbunden – durch Löschen auch der Konfigurationsdateien.
  Es ist möglich, apt (oder apt-get oder aptitude) zu bitten, bestimmte Pakete zu installieren und andere auf der gleichen Befehlszeile durch Hinzufügen eines Suffixes zu entfernen. Mit dem Befehl apt install fügen Sie "-" zu den Namen der Pakete hinzu, die Sie entfernen möchten. Mit dem Befehl apt remove fügen Sie "+" zu den Namen der Pakete hinzu, die Sie installieren möchten.
  # apt install Paket1 Paket2-
  # apt remove Paket1+ Paket2
  Damit kann man auch Pakete ausschließen, die sonst installiert würden, beispielsweise aufgrund der automatischen Installation eines Recommends-Vorschlags. Normalerweise wird das Programm zur Auflösung von Abhängigkeiten aufgrund dieser Information nach alternativen Lösungen suchen.
  TIPP apt --reinstall und aptitude reinstall
  Das Entfernen oder Verändern von Dateien aus einem Paket kann das System manchmal beschädigen. Die einfachste Art, diese Dateien wieder zu bekommen, ist, das betroffene Paket erneut zu installieren. Unglücklicherweise stellt das Paketierungssystem fest, dass das Paket bereits installiert ist, und weigert sich höflich, es erneut zu installieren; um dies zu vermeiden, benutzen Sie die Option --reinstall der Befehle apt und apt-get. Der folgende Befehl installiert das Paket postfix erneut, selbst falls es bereits vorhanden ist:
  Die Syntax von aptitude ist ein wenig anders, erzielt aber dasselbe Ergebnis wie mit aptitude reinstall postfix.
  Seien Sie vorsichtig! Das Benutzen von apt --reinstall um Pakete wiederherzustellen, die während eines Angriffs verändert wurden, ist sicherlich nicht ausreichend das System so wieder her zu stellen, wie es war. Abschnitt 14.7, "Umgang mit einem kompromittierten Rechner" beschreibt die bei einem gehackten zu unternehmenden Schritte im Detail.
  Diese Befehle stellen die Konfigurationsdateien nicht wieder her. Wie Sie in Abschnitt 5.2.3, "Checksummen, Liste der Konfigurationsdateien" erfahren haben (siehe auch Seitenleiste WEITERE SCHRITTE Zwinge dpkg, Fragen zur Konfigurationsdatei zu stellen), können Sie mit dem folgenden Befehl aufgefordert werden, die unveränderte Version zu installieren und sogar alle gelöschten Konfigurationsdateien wiederherzustellen.
  # apt --reinstall -o Dpkg::Options::="--force-confask,confmiss" install Paket
  Einige Pakete liefern die in /etc enthaltene Konfigurationsdatei nicht mit dem Paket. Stattdessen erstellen sie es während der Installation, indem sie entweder eine Skelettdatei kopieren oder es mit einem Skript schreiben. Die Datei /etc/inputrc ist beispielsweise eine Kopie von /usr/share/readline/ inputrc. In solchen Fällen funktionieren die oben gezeigten Befehle nicht.
  Falls die Datei sources.list mehrere Distributionen enthält, ist es möglich, die Version des zu installierenden Pakets anzugeben. Eine bestimmte Versionsnummer kann mit apt install Paket=Version angefordert werden, aber die Angabe ihrer Urspungsdistribution (Stable, Testing oder Unstable) – mit apt install Paket/Distribution – wird für gewöhnlich bevorzugt. Mit diesem Befehl ist es möglich, zu einer älteren Paketversion zurückzukehren (falls Sie zum Beispiel wissen, dass sie gut funktioniert), vorausgesetzt sie ist noch in einer der von der Datei sources.list genannten Quellen verfügbar. Ansonsten kann das Archiv snapshot.debian.org zu Hilfe kommen (siehe die Seitenleiste WEITERE SCHRITTE Alte Paketversionen: snapshot.debian.org).
  Beispiel 6.4. Installation der Unstable Version von spamassassin
  Wenn Ihnen das zu installierende Paket in Form einer einfachen .deb Datei ohne zugehöriges Paket-Repository zur Verfügung gestellt wurde, ist es immer noch möglich, APT zu verwenden, um es zusammen mit seinen Abhängigkeiten zu installieren (vorausgesetzt, dass die Abhängigkeiten in den konfigurierten Repositorys verfügbar sind) mit einem einfachen Befehl: apt install ./Pfad-zur-Paket-deb. Das führende ./ ist wichtig, um deutlich zu machen, dass wir uns auf einen Dateinamen beziehen und nicht auf den Namen eines Pakets, das in einem der Repositorys verfügbar ist.
  Regelmäßige Aktualisierungen werden empfohlen, weil sie die neuesten Sicherheitsupdates beinhalten. Zum Aktualisieren benutzen Sie apt upgrade, apt-get upgrade oder aptitude safe-upgrade (natürlich nach apt-get update). Dieser Befehl sucht nach installierten Paketen, die aktualisiert werden können, ohne irgendwelche Pakete zu entfernen. Mit anderen Worten, es ist das Ziel, eine minimal invasive Aktualisierung sicher zu stellen. apt-get ist ein wenig anspruchsvoller als aptitude oder apt, weil es sich weigert, Pakete zu installieren, die zuvor nicht installiert waren.
  apt wählt grundsätzlich die neueste Versionsnummer aus (außer bei Paketen aus Experimental und stable-backports, die standardmäßig ignoriert werden, unabhängig von ihrer Versionsnummer). Falls Sie Testing oder Unstable in Ihrer sources.list angegeben haben, wird apt upgrade den größten Teil Ihres Stable-Systems auf Testing oder Unstable umstellen, was möglicherweise nicht Ihre Absicht war.
  Um apt in einer bestimmten Distribution nach aktualisierten Paketen suchen zu lassen, benutzen Sie die Option -t oder --target-release gefolgt vom Namen der gewünschten Distribution (zum Beispiel apt -t stable upgrade). Um das Angeben dieser Option bei jedem Aufruf von apt zu vermeiden, können Sie APT::Default-Release "stable"; der Datei /etc/apt/apt.conf.d/local hinzufügen.
  Für wichtigere Aktualisierungen, wie den Übergang von einer Debian-Hauptversion zur nächsten, müssen Sie apt full-upgrade benutzen. Mit dieser Anweisung vollzieht apt die Aktualisierung selbst dann, wenn es einige veraltete Pakete entfernen oder neue Abhängigkeiten installieren muss. Dies ist ebenso der Befehl, den Benutzer verwenden, die täglich mit Debians Unstable-Veröffentlichung arbeiten und deren Entwicklung tagtäglich verfolgen. Es ist so einfach, dass es kaum einer Erklärung bedarf: APTs Ansehen begründet sich in dieser großartigen Funktionalität.
  Die Ergebnisse dieser Operationen werden in /var/log/apt/history.log und /var/log/apt/term.log protokolliert, während dpkg sein Protokoll in einer Datei mit dem Namen /var/log/dpkg.log führt.
  Neben den bereits erwähnten Konfigurationselementen ist es möglich, bestimmte Verhaltensweisen von APT durch das Hinzufügen von Vorschriften in einer Datei im Verzeichnis /etc/apt/apt.conf.d/ oder direkt in /etc/apt/apt.conf festzulegen. Erinnern Sie sich beispielsweise daran, dass es APT möglich ist, dpkg anzuweisen, durch Dateikonflikte hervorgerufene Fehler zu ignorieren, indem Sie DPkg::options { "--force-overwrite"; } angeben.
  Diese Struktur gibt dem Administrator der Maschine und den Paket-Betreuern einiges an Flexibilität. Tatsächlich kann der Administrator die Konfiguration der Software verändern, indem er dem fraglichen Verzeichnis eine gebrauchsfertige Datei hinzufügt, ohne eine bestehende Datei verändern zu müssen. Paket-Betreuer nutzen denselben Ansatz, wenn sie die Konfiguration einer anderen Software anpassen müssen, um sicherzustellen, dass beide Konfigurationen friedlich koexistieren können. Die Debian-Richtlinien (policy) verbieten jedoch ausdrücklich das Verändern von Konfigurationsdateien anderer Pakete — nur den Anwendern wird dieses gestattet. Erinnern Sie sich, dass während einer Paketaktualisierung der Benutzer eine Auswahlmöglichkeit erhält, welche Version der Konfigurationsdatei verwendet werden soll, falls eine Veränderung erkannt wurde. Jede fremde Änderung würde eine solche Abfrage auslösen, zur Verwunderung des Administrators, der sich sicher ist, nichts verändert zu haben.
  Sie können die Prioritäten ändern, indem Sie in einer Datei in /etc/apt/preferences.d/ oder der Datei /etc/apt/preferences Einträge mit den Namen der betroffenen Pakete, ihrer Version und Herkunft, sowie ihrer neuen Priorität hinzufügen.
  APT installiert keine ältere Version eines Pakets (das heißt, ein Paket, dessen Versionsnummer niedriger ist als die des gegenwärtig installierten Paketes), außer wenn deren Priorität höher als 1000 ist (oder es wird vom Benutzer ausdrücklich angefordert, siehe Abschnitt 6.2.2, "Installieren und Entfernen"). APT installiert immer das Paket mit der höchsten Priorität, das dieser Bedingung entspricht. Falls zwei Pakete dieselbe Priorität haben, installiert APT das neuere (das, mit der höchsten Versionsnummer). Falls zwei Pakete mit der derselben Version und derselben Priorität, aber einen unterschiedlichen Inhalt haben, installiert APT die Version, die nicht installiert ist (diese Regel wurde entworfen, um den Fall einer Paket-Aktualisierung ohne die eigentlich nötige Erhöhung der Revisionsnummer abzudecken).
  Konkreter ausgedrückt ein Paket, dessen Priorität ist
  wird niemals installiert werden,
  wird nur installiert, wenn keine andere Version des Pakets bereits installiert ist,
  wird nur installiert, wenn keine andere neuere Version installiert oder in einer anderen Distribution verfügbar ist,
  wird nur installiert, wenn keine neuere Version installiert oder in der Zieldistribution verfügbar ist,
  wird installiert, außer wenn die installierte Version neuer ist,
  wird immer installiert, auch wenn es APT dazu zwingt, auf eine ältere Version herabzustufen.
  Wenn APT /etc/apt/preferences und /etc/apt/preferences.d/ prüft, betrachtet es zuerst die spezifischsten Einträge (oftmals die Einträge, die das betreffende Paket beschreiben) und die allgemeineren (dies beinhaltet beispielsweise alle Pakete einer Distribution). Wenn mehrere allgemeine Einträge existieren, wird der erste Treffer genutzt. Die zur Verfügung stehenden Auswahlkriterien umfassen den Paketnamen und die zur Verfügung stellenden Quelle. Jede Paketquelle wird durch die Informationen in einer Release-Datei beschrieben, die APT zusammen mit den Packages-Dateien herunterlädt. Sie umfasst die Herkunft (bei Paketen der offiziellen Spiegel normalerweise "Debian", es können aber auch Personen- oder Organisationsnamen sein, falls es sich um Paketdepots Dritter handelt) und den Distributionsnamen (normalerweise Stable, Testing, Unstable oder Experimental bei den Debian von bereitgestellten Standarddistributionen) zusammen mit der Version (zum Beispiel 10 für Debian Buster). Betrachten wir die Syntax und Mechanismus anhand einiger Praxisbeispiele.
  Lassen Sie uns nun annehmen, die besäßen einen Server mit lokalen Programmen, die Perl in der Version 5.24 benötigen und Sie wollen sicherstellen, das Aktualisierungen keine neuere Version installieren. Sie könnten folgenden Eintrag benutzen:
  Um ein besseres Verständnis der Mechanismen der Priorität und der Verteilung oder der Repository-Eigenschaften zu erhalten, zögern Sie nicht, die apt-cache policy auszuführen, um die Standardpriorität anzuzeigen, die jeder Paketquelle oder apt-cache policy Paket zum Anzeigen der Standardpriorität für jede verfügbare Version und Quelle eines Pakets, wie in TIPP apt-cache policy erläutert.
  Die Referenzdokumentation für die Dateien /etc/apt/preferences und /etc/apt/preferences.d/ finden Sie auf der Handbuchseite apt_preferences(5), die Sie sich mit man apt_preferences anzeigen lassen können.
  Das ausgezeichnete Werkzeug apt versucht, die Pakete von anderen Distributionen zu übernehmen. Nachdem man vielleicht ein Stable System installiert hat, möchte man evtl. ein Software Paket aus Testing oder Unstable ausprobieren, ohne all zu weit vom ursprünglichen Zustand des Systems abzuweichen.
  Selbst wenn Sie beim Mischen von Paketen aus unterschiedlichen Distributionen gelegentlich auf Probleme stossen sollten, apt verwaltet ein solches Nebeneinander sehr gut und beschränkt die Risiken sehr effektiv. Die beste Vorgehensweise ist, alle benutzten Distributionen in /etc/apt/sources.list einzutragen (es gibt Leute, die immer alle drei Distributionen eintragen, aber beachten Sie, dass Unstable nur für erfahrene Anwender vorgesehen ist) und die Referenzdistribution mit dem APT::Default-Release Parameter fest zu legen (siehe Abschnitt 6.2.3, "Das System aktualisieren").
  Nehmen wir einmal an, Stable sei Ihre Referenzdistribution aber Testing und Unstable seien auch in Ihrer sources.list-Datei gelistet. In diesem Fall können Sie apt install package/testing nutzen, um ein Paket aus Testing zu installieren. Sollte die Installation auf Grund von nicht auflösbaren Abhängigkeiten scheitern, lassen sich diese Abhängigkeiten in Testing durch Angabe des -t testing Parameters lösen. Dies gilt gleichermassen für Unstable.
  In dieser Situation werden Aktualisierungen (upgrade und full-upgrade) in Stable vorgenommen, ausgenommen Pakete, die bereits auf eine andere Distribution aktualisiert wurden: Diese folgen den Aktualisierungen der anderen Distributionen. Wir erklären dieses Verhalten mit Hilfe der von APT gesetzten Standardprioritäten weiter unten. Benutzen Sie apt-cache policy (siehe Seitenleiste TIPP apt-cache policy), um die gesetzten Prioritäten zu überprüfen.
  Nehmen wir ein anderes Beispiel: Die Version 2 eines Pakets wurde aus Testing installiert. Version 1 ist in Stable verfügbar und Version 3 in Unstable. Version 1 (mit der Priorität 990 – also niedriger als 1000) wird verworfen, da die Versionsnummer geringer als die der installierten Version ist. Bleiben nur Version 2 und 3, beide mit einer Priorität von 500. Mit dieser Alternative konfrontiert, wählt APT die neueste Version aus, die Version aus Unstable. Wenn Sie nicht wollen, dass ein installiertes Paket aus Testing nach Unstable migriert, müssen Sie Pakete aus Unstable eine Priorität kleiner als 500 (490 zum Beispiel) zuweisen. Dazu können Sie /etc/apt/preferences anpassen:
  Eine der grundlegenden Funktionen von apt, ist das Verfolgen der über Abhängigkeiten installierten Pakete. Diese Pakete werden "automatisch" genannt und beinhalten oft Bibliotheken.
  Mit diesen Informationen können die Paketmanager beim Entfernen von Paketen eine Liste der automatischen Pakete errechnen, die nicht mehr benötigt werden (weil es keine "manuell installierten" Pakete gibt, die von ihnen abhängen). Mit apt-get autoremove oder apt autoremove werden diese Pakete entfernt. aptitude verfügt nicht über diesen Befehl, da es sie automatisch entfernt, sobald sie identifiziert werden. In allen Fällen zeigen die Werkzeuge eine klare Meldung mit einer Liste der betroffenen Pakete an.
  Es ist eine gute Idee, jedes Paket als automatisch zu markieren, das man nicht direkt benötigt, damit diese automatisch entfernt werden, wenn sie nicht weiter benötigt werden. apt-mark auto Paket markiert das betreffenbde Paket als automatisch, während apt-mark manual Paket das Gegenteil tut. aptitude markauto und aptitude unmarkauto arbeiten gleichermaßen, obwohl sie mehr Möglichkeiten bieten, viele Pakete auf einmal zu markieren (siehe Abschnitt 6.5.1, "aptitude"). Die konsolenbasierte interaktive Benutzerschnittstelle von aptitude macht es ebenfalls leicht, das "automatisch"-Flag zu überprüfen.
  Manchmal möchte man wissen, warum ein automatisch installiertes Paket installiert wurde. Um auf der Kommandozeile an diese Information zu gelangen, können Sie aptitude why Paket benutzen (apt und apt-get haben keine entsprechende Funktion):
  Früher, als apt, apt-get und aptitude automatische Pakete noch nicht überwachen konnten, gab es zwei Werkzeuge, die eine Liste nicht benötigter Pakete erstellen: deborphan und debfoster. Beide können immer noch nützlich sein.
  deborphan durchsucht die libs und oldlibs Bereiche (in Abwesenheit weiterer Anweisungen) standardmäßig nach Paketen, die aktuell installiert sind, aber von keinem anderen Paket benötigt werden. Die zurückgelieferte Liste kann dann als Basis für das Entfernen nicht benötigter Pakete dienen.