Product SiteDocumentation Site

6.2. aptitude, apt-get und apt Befehle

APT ist ein gewaltiges Projekt, dessen ursprünglicher Entwurf eine graphische 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.
Both tools are built on top of the same library and are thus very close but the default behaviour of apt has been improved for interactive use and to actually do what most users expect. APT's developers reserve the right to change the public interface of this tool to further improve it. On the opposite, the public interface of apt-get is well defined and will not change in any backwards incompatible way. It is thus the tool that you want to use when you need to script package installation requests.
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 am meisten 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 apt, apt-get und aptitude gibt, werden diese Unterschiede detailliert.

6.2.1. Initialisierung

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 kann diese Operation eine Weile dauern, da dies bedeutet, eine gewisse Anzahl von 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 Satz keinerlei Herunterladen – in diesem Fall ist die Operation sehr schnell.

6.2.2. Installieren und Entfernen

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 – auch die Konfigurationsdateien werden gelöscht.
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.3. Installation der unstable Version von spamassassin

# apt install spamassassin/unstable
If the package to install has been made available to you under the form of a simple .deb file without any associated package repository, it is still possible to use APT to install it together with its dependencies (provided that the dependencies are available in the configured repositories) with a simple command: apt install ./path-to-the-package.deb. The leading ./ is important to make it clear that we are referring to a filename and not to the name of a package available in one of the repositories.

6.2.3. Das System aktualisieren

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 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.
Anders als apt und aptitude, kennt apt-get nicht den full-upgrade Befehl. Sie sollten statt dessen apt-get dist-upgrade (”distribution upgrade”) verwenden, den historischen und gut bekannten Befehl, der auch von apt und aptitude zur Vereinfachung für den Benutzer verwendbar ist.

6.2.4. Konfigurationsoptionen

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/ 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.
Falls auf das Web nur über einen Web-Proxy zugegriffen werden kann, fügen Sie eine Zeile wie Acquire::http::proxy "http://IhrProxy:3128" hinzu. Für einen FTP-Proxy schreiben Sie Acquire::ftp::proxy "ftp://IhrProxy". Um mehr über die Konfigurationsoptionen heraus zu finden, lesen Sie die Handbuchseite apt.conf(5) mit dem Befehl man apt.conf (für Einzelheiten zu Handbuchseiten siehe Abschnitt 7.1.1, „Handbuchseiten“).

6.2.5. Paketprioritäten verwalten

Einer der wichtigsten Aspekte bei der Konfiguration von APT ist die Verwaltung der Prioritäten, die jeder Paketquelle zugeordnet sind. Möchten Sie zum Beispiel eine stabile Distribution durch ein oder zwei neuere Pakete aus Testing, Unstable oder Experimental erweitern? Es ist möglich, jedem verfügbaren Paket eine Priorität zuzuweisen (dasselbe Paket kann mehrere Prioritäten haben, abhängig von seiner Version oder der Distribution, in der es vorkommt). Diese Prioritäten beeinflussen APTs Verhalten: Für jedes Paket wird die Version mit der höchsten Priorität ausgewählt (außer wenn diese Version älter ist, als die installierte und wenn ihre Priorität geringer als 1000 ist).
APT definiert verschiedene Standard-Prioritäten. Jede installierte Paketversion hat die Priorität 100. Eine nicht installierte Version erhält standardmäßig die Priorität 500, diese kann aber auf 990 angehoben werden, falls sie Teil der Ziel-Veröffentlichung ist (diese wird durch die Befehlszeilenoption -t oder die Konfigurationsanweisung APT::Default-Release festgelegt).
Sie können die Prioritäten ändern, indem Sie 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. 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öheren Versionsnummer). Falls zwei Pakete mit der derselben Version und derselben Priorität, 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).
Konkret wird ein Paket mit einer Priorität kleiner als 0 niemals installiert. Ein Paket mit einer Priorität zwischen 0 und 100 wird nur dann installiert, wenn keine andere Version des Pakets bereits installiert ist. Bei einer Priorität zwischen 100 und 500 wird das Paket nur dann installiert, wenn keine neuere Version installiert oder in einer anderen Distribution verfügbar ist. Zwischen einer Priorität von 501 und 990 wird ein Paket nur dann installiert, wenn keine neuere Version installiert oder in der Zieldistribution verfügbar ist. Liegt die Priorität zwischen 990 und 1000 wird das Paket nur dann installiert, wenn keine neuere Version installiert ist. Mit einer Priorität größer 1000 wird das Paket in jedem Fall installiert, selbst wenn dies APT zu einem Downgrade auf eine ältere Version zwingt.
When APT checks /etc/apt/preferences, it first takes into account the most specific entries (often those specifying the concerned package), then the more generic ones (including for example all the packages of a distribution). If several generic entries exist, the first match is used. The available selection criteria include the package's name and the source providing it. Every package source is identified by the information contained in a Release file that APT downloads together with the Packages files. It specifies the origin (usually “Debian” for the packages of official mirrors, but it can also be a person's or an organization's name for third-party repositories). It also gives the name of the distribution (usually Stable, Testing, Unstable or Experimental for the standard distributions provided by Debian) together with its version (for example 9 for Debian Stretch). Let's have a look at its syntax through some realistic case studies of this mechanism.
Angenommen, Sie wollen nur Pakete aus der stable-Version von Debian verwenden. Pakete anderer Versionen sollen nicht installiert werden, es sei denn, dies wird explizit gewünscht. In dem Falle können Sie folgenden Eintrag in der Datei /etc/apt/preferences vornehmen:
Package: *
Pin: release a=stable
Pin-Priority: 900

Package: *
Pin: release o=Debian
Pin-Priority: -10
a=stable bestimmt den Namen der ausgewählten Distribution. o=Debian beschränkt den Umfang auf Pakete mit der Herkunft "Debian".
Let's now assume that you have a server with several local programs depending on the version 5.24 of Perl and that you want to ensure that upgrades will not install another version of it. You could use this entry:
Package: perl
Pin: version 5.24*
Pin-Priority: 1001
Die Referenzdokumentation für diese Konfigurationsdatei finden Sie auf der Handbuchseite apt_preferences(5), die Sie mit man apt_preferences anzeigen lassen können.

6.2.6. Mit mehreren Distributionen arbeiten

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.
Alles beruht auf der Tatsache, dass APT nur Pakete gleich oder höher der installierten Version in Betracht zieht (unter der Annahme das /etc/apt/preferences für kein Paket eine Priorität größer als 1000 erzwingt).
Lassen Sie uns annehmen, Sie hätten Version 1 eines ersten Pakets aus Stable installiert und Version 2 und 3 wären in Testing bzw. in Unstable verfügbar. Die installierte Version hat eine Priorität von 100 aber die Version aus Stable (genau die gleiche) hat eine Priorität von 990 (weil sie Bestandteil der Zieldistribution ist). Pakete in Testing und Unstable haben eine Priorität von 500 (die Standardpriorität einer nicht installierten Version). Der Gewinner ist daher die Version 1 mit der Priorität 990. Das Paket "bleibt in Stable”.
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, das ein installiertes Paket aus Testing nach Unstable migriert, müssen Sie Paketen aus Unstable eine Priorität kleiner als 500 (490 zum Beispiel) zuweisen. Dazu können Sie /etc/apt/preferences anpassen:
Package: *
Pin: release a=unstable
Pin-Priority: 490

6.2.7. Automatisch installierte Pakete nachverfolgen

Eine der grundlegenden Funktionen von apt, ist das Verfolgen der über Abhängigkeiten installierten Pakete. Diese Pakete werden "automatisch" genannt und beinhalten beispielsweise oft Bibliotheken.
With this information, when packages are removed, the package managers can compute a list of automatic packages that are no longer needed (because there is no “manually installed” packages depending on them). apt-get autoremove or apt autoremove will get rid of those packages. aptitude does not have this command because it removes them automatically as soon as they are identified. In all cases, the tools display a clear message listing the affected packages.
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.4.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):
$ aptitude why python-debian
i   aptitude         Recommends apt-xapian-index         
i A apt-xapian-index Depends    python-debian (>= 0.1.15)