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

// Baustelle: Rohtext
// Axel: Rohtext

[[konfigurationsdateien-von-apt]]
=== Konfigurationsdateien von APT im Detail ===

[[konfigurationsdateien-von-apt-apt.conf]]
==== `/etc/apt/apt.conf(.d)` verstehen ====

// Stichworte für den Index
(((/etc/apt/apt.conf)))
(((/etc/apt/apt.conf.d/)))
(((APT-Konfiguration, APT::Compressor)))
(((APT-Konfiguration, APT::Install-Recommends)))
(((APT-Konfiguration, APT::Install-Suggests)))
(((APT-Konfiguration, APT::Periodic)))
(((APT-Konfiguration, APT::NeverAutoRemove)))
(((APT-Konfiguration, Dpkg::Progress-Fancy)))
(((Debianpaket, adequate)))
(((Debianpaket, whatmaps)))

In der Datei `/etc/apt/apt.conf` bzw. in den Dateien im Verzeichnis
`/etc/apt/apt.conf.d/` stellen Sie viele Aspekte von APT und anderen
APT-Frontends ein. Alle diese Einstellungen überschreiben Sie bei Bedarf 
explizit auch auf der Kommandozeile (siehe <<konfigurationsoptionen-von-apt>>).
Darunter fallen u.a.:

* wie oft APT selbstständig Paketlisten und Pakete herunterladen soll
  (Schlüsselwort `APT::Periodic`),

* ob empfohlene ('Recommends') oder vorgeschlagene Pakete ('Suggests')
per Default installiert werden sollen (Schlüsselworte
`APT::Install-Recommends` und `APT::Install-Suggests`),

* welche Pakete nie automatisch entfernt werden sollen (Schlüsselwort
`APT::NeverAutoRemove`),

* ob Paketlisten lokal entpackt oder komprimiert gespeichert werden
  sollen,

* welche Kompressionsalgorithmen beim Herunterladen von Paketlisten
  bevorzugt werden sollen (alle Schlüsselworte beginnend mit
`APT::Compressor`),

* wohin APT Paketlisten und Pakete herunterladen soll. (Sollten Sie
  nicht systemweit ändern, kann aber beim Bearbeiten einer
  Chroot-Umgebung von außen durchaus als Einstellung auf der
  Kommandozeile nützlich sein.)

* An- und Abschalten von Fortschrittsbalken (verfügbar ab APT 1.0)
(Schlüsselwort `Dpkg::Progress-Fancy`),

* wo Changelogs heruntergeladen werden können,

* welche Übersetzungen der Paketlisten heruntergeladen werden sollen,

* welche Parameter APT an `dpkg-deb` übergibt,

* Hooks, z.B. vor und nach dem Auspacken von Paketen (siehe <<apt-hooks>>)

* Konfigurationen für beliebige Tools im APT-Ökosystem, die ebenfalls
  diese Konfigurationsdateien verwenden, z.B. `aptitude`, `adequate`
  <<Debian-Paket-adequate>>, `whatmaps` <<Debian-Paket-whatmaps>>, etc.

Um das Vorgehen besser zu verstehen, werfen Sie am besten einen Blick in
das Verzeichnis `/etc/apt/apt.conf.d/`. Das nachfolgende Listing zeigt
den typischen Inhalt auf einem Debian 9 'Stretch'. Ob und welche Dateien 
tatsächlich vorhanden sind, hängt von den Werkzeugen ab, die Sie auf ihrem 
System installiert haben.

.Beispielhafter Inhalt von `/etc/apt/apt.conf.d/`
----
$ ls /etc/apt/apt.conf.d/
00CDMountPoint  01autoremove          20listchanges  70debconf
00trustcdrom    01autoremove-kernels  20packagekit
$
----

Die Datei `01autoremove-kernels` beinhaltet bspw. Anweisungen, was mit älteren 
und inzwischen aktualisierten Kernelpaketen auf ihrem System passieren soll.
Üblicherweise bleiben diese bei einer Aktualisierung des Pakets erhalten und
werden von APT niemals automatisch entfernt. Der nachfolgende Ausschnitt 
demonstriert Ihnen das:

.Inhalt der Datei `/etc/apt/apt.conf.d/01autoremove-kernels` (Ausschnitt)
----
// DO NOT EDIT! File autogenerated by /etc/kernel/postinst.d/apt-auto-removal
APT::NeverAutoRemove
{
   "^linux-image-3\.16\.0-4-amd64$";
   "^linux-image-4\.9\.0-11-amd64$";
   "^linux-headers-3\.16\.0-4-amd64$";
   "^linux-headers-4\.9\.0-11-amd64$";
   "^linux-image-extra-3\.16\.0-4-amd64$";
   "^linux-image-extra-4\.9\.0-11-amd64$";
   "^linux-signed-image-3\.16\.0-4-amd64$";
   "^linux-signed-image-4\.9\.0-11-amd64$";
   "^kfreebsd-image-3\.16\.0-4-amd64$";
   "^kfreebsd-image-4\.9\.0-11-amd64$";
   "^kfreebsd-headers-3\.16\.0-4-amd64$";
   "^kfreebsd-headers-4\.9\.0-11-amd64$";
   "^gnumach-image-3\.16\.0-4-amd64$";
   "^gnumach-image-4\.9\.0-11-amd64$";
   "^.*-modules-3\.16\.0-4-amd64$";
   "^.*-modules-4\.9\.0-11-amd64$";
   "^.*-kernel-3\.16\.0-4-amd64$";
   "^.*-kernel-4\.9\.0-11-amd64$";
   "^linux-backports-modules-.*-3\.16\.0-4-amd64$";
   "^linux-backports-modules-.*-4\.9\.0-11-amd64$";
   "^linux-tools-3\.16\.0-4-amd64$";
   "^linux-tools-4\.9\.0-11-amd64$";
};
...
----

[[konfigurationsdateien-von-apt-preferences]]
==== `preferences` bzw. `preferences.d` ====

// Stichworte für den Index
(((APT-Pinning, /etc/apt/preferences)))
(((APT-Pinning, /etc/apt/preferences.d/)))
(((APT-Pinning, Priorität eines Eintrags)))
(((/etc/apt/preferences)))
(((/etc/apt/preferences.d/)))
Hier handelt es sich um eine Datei bzw. ein Verzeichnis, in welchem Sie
die Priorität eines oder mehrerer Pakete festlegen (siehe dazu
<<veroeffentlichungen-mischen>>). Der Vorgang heißt 'Pinning' und
erlaubt es Ihnen, Pakete aus einer anderen Debian-Veröffentlichung zu
verwenden -- bspw. 'stable', 'testing' oder 'unstable' -- ohne die
Notwendigkeit, dabei gleich ihr ganzes System auf diese Veröffentlichung
aktualisieren zu müssen. 

Die Paketverwaltung respektiert ihre Festlegung und berücksichtigt das
bei der Aktualisierung sowie bei den Paketabhängigkeiten. Genutzt wird
ein Zahlenwert als Priorität -- je höher dieser ist, umso mehr wird
die gewählte Veröffentlichung bevorzugt. Nachfolgendes Beispiel gibt
Paketen aus 'testing' eine höhere Priorität als den Paketen aus
'unstable':

.Veröffentlichungen priorisieren
----
Package: *
Pin: release n=testing
Pin-Priority: 900

Package: *
Pin: release n=unstable
Pin-Priority: 800
----

Die Datei `preferences` bzw. das Verzeichnis `preferences.d` ist
ursprünglich leer. Eine detaillierte Beschreibung zu Pinning finden Sie
bspw. in <<pinning-paketweise-festlegen>>.

==== cron.daily/apt ====

* Begriff und Nutzen


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