// Datei: ./praxis/apt-und-aptitude-auf-die-eigenen-beduerfnisse-anpassen/konfiguration-von-apt-anzeigen.adoc

// Baustelle: Rohtext

[[konfiguration-von-apt-anzeigen]]
=== Konfiguration von APT anzeigen ===

// Stichworte für den Index
(((apt-config, dump)))
(((apt-config, -c)))
(((apt-config, -o)))
(((apt-config, --config-file)))
(((apt-config, --empty)))
(((apt-config, --format)))
(((apt-config, --no-empty)))
(((apt-config, --option)))
(((apt, Konfiguration anzeigen)))
(((Debianpaket, apt)))
Zu diesem Zweck steht Ihnen das Werkzeug `apt-config` zur Verfügung. Es ist
Bestandteil des Debianpakets 'apt' <<Debian-Paket-apt>>. Das Ziel des von 
den Entwicklern gewählten Schnittstellendesigns besteht in der leichten 
Benutzbarkeit des Programms -- auch von Shellskripten aus (siehe dazu 
<<Debian-Wiki-AptConf>>).

Die Konfiguration von APT erhalten Sie mit dem Schalter `dump`. Nachfolgend 
sehen Sie einen Auszug der Ausgabe. Um diese Informationen zusammenzustellen, 
kombiniert `apt-config` die Inhalte der einzelnen Module zur Konfiguration 
(siehe dazu <<konfigurationsdateien-von-apt>>).

.Ausgabe der aktuellen Einstellungen von APT mittels `apt-config`
----
$ apt-config dump
APT "";
APT::Architecture "i386";
APT::Build-Essential "";
APT::Build-Essential:: "build-essential";
APT::Install-Recommends "true";
APT::Install-Suggests "0";
APT::Authentication "";
APT::Authentication::TrustCDROM "true";
APT::NeverAutoRemove "";
APT::NeverAutoRemove:: "^firmware-linux.*";
APT::NeverAutoRemove:: "^linux-firmware$";
APT::NeverAutoRemove:: "^linux-image.*";
APT::NeverAutoRemove:: "^kfreebsd-image.*";
...
$
----

Weitere nützliche Schalter und Optionen von `apt-config` sind:

`--empty` :: Damit schließen Sie Optionen ein, die einen leeren Wert haben. Das
ist die Standardeinstellung. Das Gegenstück dazu ist `--no-empty`.

`--format` :: Darstellung der Ausgabe steuern. Zulässig sind diese Werte:
+
* `%f` -- vollständiger, hierarchischer Name der Option
* `%n` -- Zeilenumbruch
* `%N` -- Tabulator
* `%t` -- individueller Name der Option (Kurzform von `%f`)
* `%v` -- Wert der Option
+
Die Standardeinstellung ist `%f "%v";%n`. Die nachfolgende Ausgabe zeigt die 
Kurzform der Option inklusive deren Wert. Jede Zeile wird mit einem Semikolon 
abgeschlossen.
+
----
$ apt-config dump --format '%t "%v"; %n'
APT ""; 
Architecture "amd64"; 
Build-Essential ""; 
 "build-essential"; 
Install-Recommends "1"; 
Install-Suggests "0"; 
Sandbox ""; 
...
$ 
----

`--no-empty` :: Damit schließen Sie Optionen aus, die einen leeren Wert haben. 
Das Gegenstück dazu ist `--empty`.

`-c` (Langform `--config-file`) :: Angabe einer Konfigurationsdatei. Diese Datei
wird zusätzlich zur üblichen Konfigurationsdatei gelesen.

`-o` (Langform `--option`) :: Angabe einer Option direkt beim Aufruf. Diesen
Schalter können Sie mehrfach angeben.

Was uns `apt-config` bislang nicht freiwillig verraten hat, ist, welche Option
in welchem Konfigurationsschnipsel gesetzt wurde. Das ist bspw. dann wichtig, 
wenn Sie herausfinden müssen, welche Optionen sich überschreiben oder auch 
gegenseitig wieder aufheben. Für Debian 9 'Stretch' haben wir diese 
(provisorische) Lösung, um zumindest herauszubekommen, welche 
Konfigurationsdateien gelesen werden:

.Welche Dateien liest `apt-config` (Lösung für Debian 9 'Stretch')
----
$ strace -f -e open apt-config dump | grep "open("
...
open("/etc/apt/apt.conf.d/", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 4
open("/etc/apt/apt.conf.d/00CDMountPoint", O_RDONLY) = 4
open("/etc/apt/apt.conf.d/00trustcdrom", O_RDONLY) = 4
open("/etc/apt/apt.conf.d/01autoremove", O_RDONLY) = 4
open("/etc/apt/apt.conf.d/01autoremove-kernels", O_RDONLY) = 4
open("/etc/apt/apt.conf.d/20listchanges", O_RDONLY) = 4
open("/etc/apt/apt.conf.d/20packagekit", O_RDONLY) = 4
open("/etc/apt/apt.conf.d/70debconf", O_RDONLY) = 4
...
open("/var/lib/apt/lists/", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 4
...
$
----

Da sich in Debian 10 'Buster' der interne Aufruf von `open()` zu `openat()`
geändert hat, sieht der Aufruf von `apt-config` nun wie folgt aus:

.Welche Dateien liest `apt-config` (Lösung für Debian 10 'Buster')
----
$ strace -f -e openat apt-config dump | grep "openat("
...
$
----

// Datei (Ende): ./praxis/apt-und-aptitude-auf-die-eigenen-beduerfnisse-anpassen/konfiguration-von-apt-anzeigen.adoc
