// Datei: ./werkzeuge/werkzeuge-zur-paketverwaltung-ueberblick/ncurses-basiert/aptitude.adoc

// Baustelle: Fertig

[[aptitude]]

==== `aptitude` ====

// Stichworte für den Index
(((aptitude)))
(((Debianpaket, aptitude)))
Im Vergleich mit den anderen vorgestellten Programmen zur
Paketverwaltung ist `aptitude` eine recht komplexe und umfangreiche
Anwendung. Es ermöglicht Ihnen zwei unterschiedliche Wege der Bedienung
-- einerseits über die Kommandozeile mit Unterkommandos und Schaltern,
andererseits über eine Ncurses-basierte, interaktive, farbige
Bedienoberfläche im Terminal. Wieder aufgegeben wurden zwischenzeitlich
die Versuche, `aptitude` auch mit einer graphischen Bedienoberfläche
auszustatten (siehe <<Beckert-Blog-Aptitude-Gtk-Will-Vanish>>).

// Stichworte für den Index
(((Debianpaket, aptitude)))
(((Debianpaket, aptitude-common)))
Das Programm ist verteilt auf die beiden Pakete namens 'aptitude' und
'aptitude-common'. Da das Programm nicht zur Standardauswahl bei der
Installation von Debian GNU/Linux und Ubuntu gehört, richten Sie es am
besten über den Aufruf `apt-get install aptitude` auf ihrem Linuxsystem
ein. Das Paket `aptitude-common` wird über Paketabhängigkeiten
automatisch mitinstalliert.

Ähnlich wie APT arbeitet `aptitude` mit Paketen, die sich entweder
bereits lokal auf ihrem System befinden, oder noch auf einem Paketmirror
vorliegen und vor der Installation noch von dort bezogen werden.
Desweiteren bietet Ihnen das Programm die folgenden Funktionen (Auswahl,
jeweils Angabe der Unterkommandos auf der Kommandozeile):

// Stichworte für den Index
(((aptitude, download)))
(((aptitude, full-upgrade)))
(((aptitude, install)))
(((aptitude, reinstall)))
(((aptitude, remove)))
(((aptitude, safe-upgrade)))
(((aptitude, search ~i)))
(((aptitude, show)))
(((aptitude, update)))
(((aptitude, why)))
(((aptitude, why-not)))

* die Liste der installierten Pakete anzeigen und ausgeben
(<<liste-der-installierten-pakete-anzeigen-und-deuten>>) mit `aptitude search '~i'`
* Recherche und Paketliste filtern anhand von Paketkategorien,
Veröffentlichungen und Mustern (Teilzeichenketten, Reguläre Ausdrücke) bzgl. des Paketnamens,
der Metadaten und der Paketbeschreibung
* Paketstatus erfragen (<<paketstatus-erfragen>>) mit `aptitude show` 'Paketname'
* Paketdatei ins aktuelle Verzeichnis herunterladen 
(<<paketdatei-nur-herunterladen>>) mit `aptitude download` 'Paketname'
* Pakete zur Installation, Aktualisierung oder Löschung vormerken (siehe Mit `aptitude` Vormerkungen machen unter <<mit-aptitude-vormerkungen-machen>>)
* Paket installieren (<<pakete-installieren>>) mit `aptitude install` 'Paketname'
* Paket in einer bestimmten Version halten (nicht aktualisieren) (siehe <<ausgewahlte-pakete-aktualisieren>> und <<ausgewaehlte-pakete-nicht-aktualisieren>>)
* Pakete deinstallieren (<<pakete-deinstallieren>>) mit `aptitude remove` 'Paketname'
* Pakete erneut installieren (<<pakete-erneut-installieren>>) mit `aptitude reinstall` 'Paketname'
* installierte Paketliste oder die Veröffentlichung aktualisieren (<<pakete-aktualisieren>>) mit `aptitude update`, `aptitude safe-upgrade` und `aptitude full-upgrade`
* klären, warum ein Paket (nicht) installiert ist
(<<warum-ist-ein-paket-installiert>>) mit `aptitude why` 'Paketname' bzw. `aptitude why-not` 'Paketname'
* Paketabhängigkeiten mit `aptitude search ?depends` 'Paketname' anzeigen (<<paketabhaengigkeiten-anzeigen>>)

[TIP]
.Dokumentation zu `aptitude`
====
Für den vollständigen Funktionsumfang und als Einstieg zum Programm ist
das Lesen der Dokumentation zu `aptitude` <<aptitude-dokumentation>>
empfehlenswert. Neben der Bedienung enthält es alle Unterkommandos,
Optionen, Schalter und Möglichkeiten zur Konfiguration.
====

Wie bereits oben angerissen, können Sie `aptitude` über die
*Kommandozeile* benutzen. Die Unterkommandos und Schalter sind bzgl. der
Schreibweise und Bedeutung ähnlich derer von APT (siehe <<apt>>).

Um hingegen über die *Ncurses-basierte Bedienoberfläche* zu agieren,
starten Sie zunächst `aptitude` ohne weitere Optionen. Die mehrfarbige
Bedienoberfläche enthält mehrere Elemente. Ganz oben finden Sie die
verfügbaren, aktiven Tasten und deren Funktion. Über die Funktionstaste
kbd:[F10] oder alternativ mit Hilfe der Tastenkombination kbd:[Ctrl,T]
aktivieren Sie bspw. die Menüleiste. Einige Terminals wie bspw. das
Gnome-Terminal fangen die Funktionstaste ab und belegen diese für die
eigene Menüleiste. Über den Eintrag
menu:Bearbeiten[Tastenkombinationen, Menütastenkombinationen aktivieren]
(de)aktivieren
Sie das Verhalten. Mit Hilfe der Pfeiltasten navigieren Sie zwischen den
einzelnen Menüeinträgen hin und her bzw. wählen die gewünschte Aktion
aus.

Die beiden Fensterhälften darunter geben Ihnen eine Übersicht zu den
Softwarepaketen. In der oberen Hälfte stellt `aptitude` in einer
aufklappbaren Baumstruktur die Paketkategorien
(<<sortierung-der-pakete-nach-verwendungszweck>>), den
Distributionsbereich (<<distributionsbereiche>>) und den Paketnamen mit
Versionsnummer dar. Sichtbar wird dabei die Version des installierten
Pakets sowie der möglichen Aktualisierung
(<<benennung-versionsnummer>>). Die Auswahl in der Baumstruktur erfolgt
analog zu vi(m) mittels kbd:[j] und kbd:[k] (oder über die Pfeiltasten)
und kbd:[Enter]. Die einzelnen Strukturebenen klappen Sie mit den Tasten
kbd:[Enter], kbd:["["] und kbd:["\]"] auf und zu.

Dabei hinterlegt `aptitude` die einzelnen Pakete mit verschiedenen
Farben, deren Bedeutung Sie <<tab.aptitude-farben>> entnehmen. Das
Farbschema können Sie auch nach Gutdünken anpassen, genauer gehen wir
darauf in <<aptitude-farbschema-anpassen>> ein.

.Farben und deren Bedeutung bei `aptitude`
[options="header", id="tab.aptitude-farben"]
|=============================
| Farbkombination | Bedeutung
| schwarzer Hintergrund mit weißer Schrift | das Paket wird nicht verändert
| roter Hintergrund mit weißer Schrift | das Paket ist defekt oder kann nicht installiert werden
| blauer Hintergrund mit weißer Schrift | das Paket wird aktualisiert
| weißer Hintergrund mit schwarzer Schrift | die Paketversion bleibt
erhalten, kann jedoch aktualisiert werden
| grüner Hintergrund mit schwarzer Schrift | Paket wird installiert
| lila Hintergrund mit schwarzer Schrift | Paket wird entfernt (``deinstalliert'')
|=============================

Im unteren Fenster erhalten Sie eine Beschreibung -- entweder zur
ausgewählten Paketkategorie oder zum jeweiligen Paket. Zwischen den
beiden Fensterhälften wechseln Sie mittels der kbd:[Tab]-Taste hin
und her. Die Belegung weiterer Tasten entnehmen Sie bitte
<<tab.aptitude-tasten>>.

.Tasten bei `aptitude`
[options="header", cols="5,2", id="tab.aptitude-tasten"]
|=============================
| Aktion | Tastenbelegung
| Hilfe | kbd:[?]
| `aptitude` beenden (Vormerkungen werden gespeichert) | kbd:[Shift]+kbd:[q]
| `aptitude` abbrechen (alle Vormerkungen gehen verloren) | kbd:[Ctrl]+kbd[C]
| Info-Fenster ein- und ausblenden | kbd:[Shift]+kbd:[D]
| Zwischen den Info-Ansichten wechseln | kbd:[i]
| Zwischen beiden Fenstern hin- und herwechseln | kbd:[Tab]
| In das Menü von `aptitude` wechseln | kbd:[Ctrl]+kbd:[t] oder kbd:[F10]
| Paketlisten aktualisieren | kbd:[u]
| Ausgewähltes Paket auswählen | kbd:[+]
| Ausgewähltes Paket entfernen | kbd:[-]
|=============================

// * Weitere Tasten:
// ** Hilfe: kbd:[?]
// ** Beenden (Vormerkungen werden gespeichert): kbd:[Q] (Shift-q)
// ** Abbrechen (alle Vormerkungen gehen verloren): kbd:[Ctrl,c]
// ** Info-Fenster ein- und ausblenden: kbd:[D] (Shift-d)
// ** Zwischen den Info-Ansichten wechseln: kbd:[i]
// ** Ins Menü wechseln: kbd:[Ctrl,t] oder kbd:[F10]
// ** Paketlisten aktualisieren: kbd:[u]

// Stichworte für den Index
(((aptitude, interaktiver Abhängigkeitsauflöser)))
Auch wenn sich APT und `aptitude` größtenteils sehr ähnlich sind,
bestehen eine Reihe von feinen Unterschieden, die erst während der
Benutzung der Programme präsent werden. `aptitude` hat nützliche
Erweiterungen, wie z.B. einen *interaktiven Abhängigkeitsauflöser*
(siehe <<fig.aptitude-dependency-solver>>). Verändern Sie den geplanten
Paketbestand, indem Sie beispielsweise ein zusätzliches Paket markieren
und somit zur Installation vormerken, werden automatisch die notwendigen
Abhängigkeiten aufgelöst und ebenfalls vorgemerkt. Sie sehen somit
unmittelbar, welche Pakete im nächsten Schritt noch hinzukommen oder
wieder entfernt werden müssen. 

Sollte es dabei zu Paketkonflikten kommen, so werden Ihnen vorab
verschiedene Lösungsvarianten und deren Auswirkungen auf den
Paketbestand zur Auswahl gestellt. Im Gegensatz dazu präsentiert Ihnen
APT nur stets einen einzigen Vorschlag zur Aktualisierung.

Aus diesen angebotenen Varianten wählen Sie die Ihnen am besten passende
aus. In den letzten beiden Zeilen des Terminals listet `aptitude` auf,
wieviele Varianten es ermittelt hat, mit welchen Tasten Sie zwischen
diesen Varianten wechseln (siehe auch <<tab.aptitude-konflikte-loesen>>)
und wie Sie die gewünschte Variante letztendlich auswählen.

.package dependency solver in `aptitude`
image::werkzeuge/werkzeuge-zur-paketverwaltung-ueberblick/ncurses-basiert/aptitude-dependency-solver.png[id="fig.aptitude-dependency-solver", width="50%"]

.Tasten zur interaktiven Konfliktlösung bei `aptitude`
[options="header", cols="5,2", id="tab.aptitude-konflikte-loesen"]
|=============================
| Aktion | Tastenbelegung
| Vorschläge zur Konfliktlösung anzeigen | kbd:[e]
| Nächsten Vorschlag anzeigen | kbd:[.]
| Vorherigen Vorschlag anzeigen | kbd:[","]
| Ersten Vorschlag anzeigen | kbd:[<]
| Letzten Vorschlag anzeigen | kbd:[>]
| Teilvorschlag akzeptieren | kbd:[a]
| Teilvorschlag ablehnen (``reject'') | kbd:[r]
| Vorschlag anwenden | kbd:[!]
|=============================

// Stichworte für den Index
(((aptitude, Sortierung der Pakete nach Debtags)))
Darüber hinaus verfügt `aptitude` über eine Ansicht, in der Sie Pakete
nach *Debian-Tags (Debtags)* (siehe dazu
<<erweiterte-paketklassifikation-mit-debtags>>) sortiert betrachten
können. Damit stöbern Sie sehr effizient im Paketbestand. Das ist
insbesondere dann interessant, wenn Sie lediglich wissen, nach welcher
Funktionalität oder Art von Paket Sie suchen, jedoch den konkreten
Paketnamen nicht kennen.

// Stichworte für den Index
(((aptitude, Kategoriebrowser)))
Der ebenfalls im Menü in <<fig.aptitude-debtags-browser>> (noch)
angezeigte *Kategoriebrowser* gilt als veraltet{empty}footnote:[Es handelt
sich dabei um eine hart in `aptitude` verdrahtete und schon sehr lange
nicht mehr gepflegte Kategorisierung der Pakete], funktioniert seit
einigen Versionen nicht mehr und wird voraussichtlich demnächst ganz
entfernt <<aptitude-categorical-browser-to-be-removed>>. Der oben
angerissene Debtags-Browser ist der offizielle, wesentlich aktuellere
und besser gepflegte Ersatz dafür.

Im Erweiterungsteil gehen wir darauf ein, was passiert, wenn Sie APT und
`aptitude` miteinander mischen (<<apt-und-aptitude-mischen>>). Auch der
Konfiguration des Programms ist ein eigener Abschnitt gewidmet (siehe
``APT und `aptitude` auf die eigenen Bedürfnisse anpassen'' in
<<apt-und-aptitude-auf-die-eigenen-beduerfnisse-anpassen>>).

// Datei (Ende): ./werkzeuge/werkzeuge-zur-paketverwaltung-ueberblick/ncurses-basiert/aptitude.adoc
