6.2. aptitude
, apt-get
und apt
Befehle
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.
Both tools are built on top of the same library and are thus very close, but the default behavior of apt
has been improved for interactive use and to actually do what most users expect. The APT developers reserve the right to change the public interface of this tool to further improve it. Conversely, 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 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.
For any work with APT, the list of available packages needs to be updated; this can be done simply through apt update
. Depending on the speed of your connection and configuration, the operation can take a while, since it involves downloading a certain number of (usually compressed) files (Packages
, Sources
, Translation-language-code
), which have gradually become bigger and bigger as Debian has developed (at least 10-16 MB of data for the main
section). Of course, installing from a CD-ROM/DVD set does not require any downloading — in this case, the operation is very fast.
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 – durch Löschen auch der Konfigurationsdateien.
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
GOING FURTHER Old package versions: snapshot.debian.org
and archive.debian.org
).
Beispiel 6.4. Installation der Unstable Version von spamassassin
#
apt install spamassassin/unstable
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.
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 -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.
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.
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.
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/
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.
If the Web can only be accessed through a proxy, add a line like
Acquire::http::proxy "http://yourproxy:3128"
. For an FTP proxy, write
Acquire::ftp::proxy "ftp://yourproxy"
. To discover more configuration options, read the
apt.conf(5) manual page (for details on manual pages, see
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 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 will never install an older version of a package (that is, a package whose version number is lower than the one of the currently installed package) except if its priority is higher than 1000 (or it is explicitly requested by the user, see
Abschnitt 6.2.2, „Installieren und Entfernen“). APT will always install the highest priority package which follows this constraint. If two packages have the same priority, APT installs the newest one (whose version number is the highest). If two packages of same version have the same priority but differ in their content, APT installs the version that is not installed (this rule has been created to cover the case of a package update without the increment of the revision number, which is usually required).
Konkreter ausgedrückt ein Paket, dessen Priorität ist
- < 0
wird niemals installiert werden,
- 1..99
wird nur installiert, wenn keine andere Version des Pakets bereits installiert ist,
- 100..499
wird nur installiert, wenn keine andere neuere Version installiert oder in einer anderen Distribution verfügbar ist,
- 500....989
wird nur installiert, wenn keine neuere Version installiert oder in der Zieldistribution verfügbar ist,
- 990..1000
wird installiert, außer wenn die installierte Version neuer ist,
- > 1000
wird immer installiert, auch wenn es APT dazu zwingt, auf eine ältere Version herabzustufen.
When APT checks /etc/apt/preferences
and /etc/apt/preferences.d/
, 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, 11 for Debian Bullseye). 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:
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.28 of Perl and that you want to ensure that upgrades will not install another version of it. You could use this entry:
To gain a better understanding of the mechanisms of priority and distribution or repository properties to pin do not hesitate to execute
apt-cache policy
to display the default priority associated with each package source, or
apt-cache policy package
to display the default priority for each available version and source of a package as explained in
Abschnitt 6.3.1, „The apt-cache policy
Command“.
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.
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 this situation, upgrades (
upgrade
and
full-upgrade
) are done within
Stable except for packages already upgraded to another distribution: those will follow updates available in the other distributions. We will explain this behavior with the help of the default priorities set by APT below. Do not hesitate to use
apt-cache policy
(
Abschnitt 6.3.1, „The apt-cache policy
Command“) to verify the given priorities.
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”.
Let's take the example of another package whose version 2 has been installed from Testing. Version 1 is available in Stable and version 3 in Unstable. Version 1 (of priority 990 — thus lower than 1000) is discarded because it is lower than the installed version. This only leaves version 2 and 3, both of priority 500. Faced with this alternative, APT selects the newest version, the one from Unstable. If you don't want a package installed from Testing to migrate to the version in Unstable, you have to assign a priority lower than 500 (490 for example) to packages coming from Unstable. You can modify /etc/apt/preferences
to this effect:
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 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):
$
aptitude why python3-debian
i aptitude Suggests apt-xapian-index
p apt-xapian-index Depends python3-debian (>= 0.1.14)
For example, we can use apt list ?automatic
to list all the packages automatically installed. To find packages automatically installed no longer depended upon by manually installed packages the pattern ?garbage
can be used.
Logic patterns can be combined with other packages to form more complex expressions. For instance, we could use a pattern like ?and(PATTERN, PATTERN)
. See apt-patterns(7) and glob(7) for all the patterns you can use and the complex expressions you can create with them.