Kapitel 5. Paketmanagement
Zurück | 5.12 `apt.conf` | Weiter

## 5.12 `apt.conf`

Die Konfigurationsdatei `/etc/apt/apt.conf` stellt die zentrale Stelle für alle Einstellungen von Programmen dar die auf APT aufsetzen. Von allen Programmen wird zum einen die gemeinsame Konfigurationsdatei, aber auch ein Kommandozeilen-Interpreter (`apt-config`) genutzt um die Konfigurationsdatei auszuwerten. Dies garantiert für alle Programme eine einheitliche Arbeitsumgebung. Beim Start eines auf APT-basierenden Programmes wird zunächst die Umgebungsvariable `APT_CONFIG` ausgewertet. Über diese Umgebungsvariable lässt sich eine alternative Konfigurationsdatei angeben.

Die Konfigurationsdatei ist in einer Baumstruktur organisiert und trennt verschiedene Optionen in funktionale Gruppen. Werte für Optionen werden durch zwei Doppelpunkte eingeleitet, beispielsweise wie folgt `APT::Get::Assume-Yes`. Optionen übernehmen keine Werte von übergeordneten Gruppen.

Die Syntax der Konfigurationsdatei ist an die von Programmen wie `bind` und `dhcp` angelehnt. Zeilen die mit den Zeichen `//` beginnen, werden als Kommentare behandelt und ignoriert. Alle weiteren Zeile entsprechen dem Aufbau von `APT::Get::Assume-Yes "true";`. Wichtig ist hierbei das abschliessende Semikolon am Ende jeder Zeile, die Werte selbst können, müssen aber nicht von Anführungszeichen umschlossen werden. Ein neuer Bereich wird durch geschweifte Klammern umschlossen.

    APT {Get {

    Assume-Yes "true";Fix-Broken "true"; };};

Leerzeilen können innerhalb eines Bereiches genutzt werden um die Datei besser lesbar zu halten. Einfache Einträge können erzeugt werden, indem innerhalb eines Bereiches ein Kommando abgelegt wird und der Eintrag mit einem Semikolon beendet wird. Hier ein Beispiel:

    DPkg::Pre-Install-Pkgs {"/usr/sbin/dpkg-preconfigure --apt";};

Hier ein einfaches Beispiel für eine APT-Konfigurationsdatei (`/etc/apt/apt.conf`).

    // $Id: apt.conf,v 1.43 1999/12/06 02:19:38 jgg Exp $
    /* This file is a sample configuration file with a few harmless sample
       options.
    */

    APT
    {
      // Options for apt-get
      Get
      {
         Download-Only "false";
      };

    };

    // Options for the downloading routines
    Acquire
    {
      Retries "0";
    };

    // Things that effect the APT dselect method
    DSelect
    {
      Clean "auto";   // always|auto|prompt|never
    };

    DPkg
    {
      // Probably don't want to use force-downgrade..
      Options {"--force-overwrite";}
    }

Innerhalb der konfigurationsdatei sind zwei spezielle Einträge erlaubt, `#include` und `#clear`. `#include` liest die angegebene Datei an der entsprechenden Stelle ein, solange der Dateiname nicht mit einem Slash (`/`) endet. `#clear` löscht eine Liste von Namen.

Allen APT-Programmen kann die Option `-o` übergeben werden um eine Konfigurationsoption auf der Kommandozeile zu übergeben. Die Syntax hierfür ist der volle Name der Option, beispielsweise `APT::Get::Assume-Yes`, gefolgt von einem Gleichheitszeichen und dem gewünschten Wert für diese Option. Listen können Werte hinzugefügt werden, indem abschliessend zwei Doppelpunkte (`::`) angegeben werden.

Im folgenden werden die verschiedenen Gruppen in der Konfigurationsdatei beschrieben.

APT

  Diese Gruppe enthält generelle Parameter zu allen APT-Programmmen.

  Architecture

    Die System Architektur. Über diesen Wert wird ermittelt, welche Paketlisten und Debianpakete passend zur Hardware-Architektur geholt werden. Voreingestellt ist immer die Architektur für die APT auf dem System übersetzt wurden.

  Ignore-Hold

    Setzt den „Hold“-Status global für alle Pakete ausser Kraft.

  Clean-Installed

    Voreingestellt ist hier der Wert „on“.

  Immediate-Configure

    Mit dieser Option lässt sich das unmittelbare Konfigurieren von Paketen abschalten. APT ruft nach einer Anzahl von Paketen die zur Installation vorgemerkt sind, die Konfiguration dieser Pakete auf. Dies ist sinnvoll da Pakete aufeinander basieren und es erforderlich ist das ein bestimmtes Paket vor einem anderen bereits installiert und konfiguriert ist. Das abschalten dieser Option kann die Installation von vielen Paketen auf einem langsamen System beschleunigen, führt aber unter Umständen zu Problemen bei der Installation.

  Force-LoopBreak

    Diese Option erlaubt APT ein essentielles Paket kurzfristig zu entfernen um eine Endlosschleife in einem Konflikt oder einer Abhängigkeit (Pre-Depend) auflösen zu können. Solch eine Endlosschleife darf eigentlich nicht existieren und ist ein schwerwiegender Fehler. Diese Option wirkt nicht bei den essentiellen Paketen `tar`, `gzip`, `libc`, `dpkg`, `bash` oder allen anderen Paketen von denen diese Pakete abhängen. Diese Option darf nur eingesetzt werden wenn Sie genau verstanden haben was dies für Konsequenzen haben kann.

  Cache-Limit

    APT nutzt einen festgelegten Speicherbereich um Informationen über die verfügbaren Pakete zu speichern. Mit dieser Option kann der Wert verändert werden.

  Get

    Dieser Abschnitt kontrolliert das Verhalten von `apt-get`.

  Cache

    Dieser Abschnitt kontrolliert das Verhalten von `apt-cache`.

  CDROM

    Dieser Abschnitt kontrolliert das Verhalten von `apt-cdrom`.

Acquire

  In dieser Gruppe sind Optionen für das herrunterladen von Paketen und die Behandlung von URIs enthalten.

  Queue-Mode

    Dieser Eintrag betrifft die Behandlung von ausgehenden Verbindungen bei der Übertragung von Paketen. Der Wert „host“ bedeutet das zu jedem System von dem Pakete geholt werden eine Verbindung aufgebaut wird. Der Wert „access“ bewirkt das je URI-Typ eine Verbindung aufgebaut wird.

  Retries

    Anzahl der Versuche bei einem fehlgeschlagenen Download.

  Source-Symlinks

    Nutzt symbolische Links für Quellcode-Archive anstatt eine Kopie der Datei anzulegen. Voreinstellung ist „True“.

  http

    HTTP Adressen können mit diesem Eintrag über einen Proxy-Server erreicht werde. Die Angabe `http::Proxy` stellt der Standard-Proxy für alle Anfragen dar. Die Adresse des Proxy-Servers ist wie üblich als `http://[[user][:pass]@]host[:port]/` anzugeben. Alternativ kann für einzelne Server ein gesonderter Proxy in der Form `http::Proxy::<host>` gesetzt werden. Soll für einen einzelnen Server kein Proxy verwendet werden, so ist das Schlüsselwort `DIRECT` zu benutzen. Die Umgebungsvariable `http_proxy` überschreibt alle diese Angaben.

    Es sind drei Werte im Zusammenhang mit diesem Eintrag erlaubt. `No-Cache` teilt dem Proxy mit, dass in keinem Fall Daten aus dem Cache benutzt werden sollen. `Max-Age` wird für Index-Dateien verwendet und gibt die Zeit in Sekunden an die das maximale Alter der Index-Dateien bezeichnet. Die Index-Dateien auf Debian-Servern werden täglich aktualisiert, der vorgegebene Wert entspricht ebenso einem Tag. `No-Store` führt dazu das die Anfrage niemals im Cache gespeichert wird.

    Mit der Option `timeout` lässt sich die Zeit für Verbindungs- und Daten-Timeouts einstellen.

  ftp

    FTP Adressen können mit diesem Eintrag über einen Proxy-Server erreicht werden. Die Angabe `ftp::Proxy` stellt der Standard-Proxy für alle Anfragen dar. Die Adresse des Proxy-Servers ist wie üblich als `ftp://[[user][:pass]@]host[:port]/` anzugeben. Um einen FTP-Proxy zu nutzen, muss in der Konfigurationsdatei der Wert `ftp::ProxyLogin` mit einem Skript belegt sein. Dieser Eintrag beschreibt die Kommandos die an den FTP-Server beim Loginvorgang gesendet werden.

        ProxyLogin
        {
            "USER $(PROXY_USER)";
            "PASS $(PROXY_PASS)";
            "USER $(SITE_USER)@$(SITE):$(SITE_PORT)";
            "PASS $(SITE_PASS)";
        };

    Die Umgebungsvariable `ftp_proxy` überschreibt alle diese Angaben.

    Mit der Option `timeout` lässt sich die Zeit für Verbindungs- und Daten-Timeouts einstellen.

  cdrom

    Der einzig mögliche Wert für einen Eintrag der eine CD (ein CD-ROM- oder DVD-Laufwerk) betrifft, bezieht sich auf das Verzeichnis im Dateisystem, an dem der Inhalt eingebunden wird. Die Syntax für solch einen Eintrag lautet:

        "/cdrom/"::Mount "foo";

    wichtig ist bei einem solchen Eintrag der vorangestellte Slash (`/`). Das Kommando `umount` kann ebenso durch den Eintrag `UMount` mit einer solchen Syntax genutzt werden.

Verzeichnisse

  `Dir::State`

    Dieser Abschnitt betrifft Verzeichnisse mit lokalen Status Informationen. `lists` bezeichnet das Verzeichnis in dem die herruntergeladenen Paketlisten abgelegt werden. `status` ist der Dateiname der `dpkg`-Status Datei. `preferences` ist der Name der APT Konfigurationsdatei. `Dir::State` bezeichnet das Verzeichnis welches allen anderen Objekten in diesem Abschnitt vorangestellt wird, wenn diese nicht mit `/` oder `./` beginnen.

  `Dir::Cache`

    In diesem Abschnitt werden Verzeichisse festgelegt, die mit herruntergeladenen Dateien zu tun haben. Die Angaben `pkgcache` und `srcpkgcache` enthalten das Verzeichnis für Binär- und Quellcodepakete. Die Verwendung des Cache kann deaktiviert werden, in dem die Verzeichnisnamen nicht angegeben werden. Das voreingestellte Verzeichnis für alle Caches wird in `Dir::Cache` festgelegt.

  `Dir::Etc`

    Enthält den Pfad zu den Konfigurationsdateien, `sourcelist` bezeichnet dabei die Datei `sources.list`, `main` ist die voreingestellte Konfigurationsdatei.

  `Dir::Parts`

    Dieser Abschnitt liest alle Konfigurationsteile in alphabetischer Reiehenfolge, aus dem angegebenen Verzeichnis. Danach wird die zentrale Konfigurationsdatei eingelesen.

  `Dir::Bin`

    In diesem Verzeichnis werden Binäre Programme gesucht. `Dir::Bin::Methods` enthält den Pfad zu den zusätzlichen Methoden. Die Angaben zu `gzip`, `dpkg`, `apt-get`, `dpkg-source`, `dpkg-buildpackage` und `apt-cache` zeigen auf die jeweiligen Programme im Verzeichnisbaum.

APT innerhalb von dselect

  Wird APT als Zugroffsmethode von `dselect` verwendet, so können die folgenden Parameter zur Konfiguration verwendet werden.

  `Clean`

    Modus um den Paketcache zu verwalten.

  `options`

    Der Inhalt dieser Variablen wird an `apt-get` als Kommandozeilenoption durchgereicht, wenn eine Installation durchgeführt wird.

  `Updateoptions`

    Der Inhalt dieser Variablen wird an `apt-get` als Kommandozeilenoption durchgereicht, wenn ein Update durchgeführt wird.

  `PromptAfterUpdate`

    Wird die Funktion Update im Programm `dselect` verwendet, so wird immer nachgefragt um eine Aktion fortzusetzen, wenn diese Variable auf True gesetzt ist.

Aufruf von DPKG über APT

  Im Abschnitt `DPkg` der Konfigurationsdatei können verschiedene Parameter eingestellt werden, die sich mit dem Aufruf von `dpkg` aus APT-basierenden Programmen beschäftigen.

  `options`

    Eine Liste von Optionen die dem Aufruf von `dpkg` übergeben werden.

  `Pre-Invoke`, `Post-Invoke`

    Eine Liste von Shell-Kommandos die vor bzw. nach dem Aufruf von `dpkg` ausgeführt werden. Die Kommandos werden mittels `/bin/sh` ausgeführt, sollte eines der Kommandos mit einem Fehler beendet werden, so bricht auf APT an dieser Stelle die weitere Ausführung ab.

  `Pre-Install-Pkgs`

    Dies ist eine Liste von Kommandos, welche vor dem Aufruf von `dpkg` ausgeführt werden. Die Kommandos werden mittels `/bin/sh` ausgeführt, sollte eines der Kommandos mit einem Fehler beendet werden, so bricht auf APT an dieser Stelle die weitere Ausführung ab. APT übergibt die Namen aller zu installierenden Debian-Paketdateien (`.deb`) an die Kommandos.

  `Run-Directory`

    APT wechselt in das hier angegebene Verzeichnis vor dem Aufruf von `dpkg`. Voreingestellt ist hier das Verzeichnis `/`.

  `Build-options`

    Diese Optionen werden dem Programm `dpkg-buildpackage` übergeben. Voreingestellt ist das Pakete nicht digital signiert werden und das alle Binär-Pakete erzeugt werden.

Abschliessend ein Beispiel für die APT-Konfigurationsdatei mit allen Optionen. Dieses Beispiel ist so in dieser Form nicht sinnvoll einzusetzen, zeigt aber sehr gut auf wie verschiedene Optionen mit Werten belegt werden.

    // $Id: configure-index,v 1.10 2004/07/17 19:37:16 mdz Exp $
    /* This file is an index of all APT configuration directives. It should
       NOT actually be used as a real config file, though it is (except for the
       last line) a completely valid file. Most of the options have sane default
       values, unless you have specific needs you should NOT include arbitary
       items in a custom configuration.

       In some instances involving filenames it is possible to set the default
       directory when the path is evaluated. This means you can use relative
       paths within the sub scope.

       The configuration directives are specified in a tree with {} designating
       a subscope relative to the tag before the {}. You can further specify
       a subscope using scope notation eg,
         APT::Architecture "i386";
       This is prefixed with the current scope. Scope notation must be used
       if an option is specified on the command line with -o.
    */

    quiet "0";

    // Options for APT in general
    APT
    {
      Architecture "i386";
      Build-Essential "build-essential";

      // Options for apt-get
      Get
      {
         Arch-Only "false";
         Download-Only "false";
         Simulate "false";
         Assume-Yes "false";
         Force-Yes "false";             // I would never set this.
         Fix-Broken "false";
         Fix-Missing "false";
         Show-Upgraded "false";
         Show-Versions "false";
         Upgrade "true";
         Print-URIs "false";
         Compile "false";
         Download "true";
         Purge "false";
         List-Cleanup "true";
         ReInstall "false";
         Trivial-Only "false";
         Remove "true";
         Only-Source "";
         Diff-Only "false";
         Tar-Only "false";
      };

      Cache
      {
         Important "false";
         AllVersions "false";
         GivenOnly "false";
         RecurseDepends "false";
         ShowFull "false";
         Generate "true";
         NamesOnly "false";
         AllNames "false";
         Installed "false";
      };

      CDROM
      {
         Rename "false";
         NoMount "false";
         Fast "false";
         NoAct "false";
      };

      // Some general options
      Ignore-Hold "false";
      Clean-Installed "true";
      Immediate-Configure "true";      // DO NOT turn this off, see the man page
      Force-LoopBreak "false";         // DO NOT turn this on, see the man page
      Cache-Limit "4194304";
      Default-Release "";
    };

    // Options for the downloading routines
    Acquire
    {
      Queue-Mode "host";       // host|access
      Retries "0";
      Source-Symlinks "true";

      // HTTP method configuration
      http
      {
        Proxy "http://127.0.0.1:3128";
        Proxy::http.us.debian.org "DIRECT";  // Specific per-host setting
        Timeout "120";
        Pipeline-Depth "5";

        // Cache Control. Note these do not work with Squid 2.0.2
        No-Cache "false";
        Max-Age "86400";     // 1 Day age on index files
        No-Store "false";    // Prevent the cache from storing archives
      };

      ftp
      {
        Proxy "ftp://127.0.0.1/";
        Proxy::http.us.debian.org "DIRECT"; // Specific per-host setting

        /* Required script to perform proxy login. This example should work
           for tisfwtk */
        ProxyLogin
        {
           "USER $(PROXY_USER)";
           "PASS $(PROXY_PASS)";
           "USER $(SITE_USER)@$(SITE):$(SITE_PORT)";
           "PASS $(SITE_PASS)";
        };

        Timeout "120";

        /* Passive mode control, proxy, non-proxy and per-host. Pasv mode
           is prefered if possible */
        Passive "true";
        Proxy::Passive "true";
        Passive::http.us.debian.org "true"; // Specific per-host setting
      };

      cdrom
      {
        mount "/cdrom";

        // You need the trailing slash!
        "/cdrom/"
        {
           Mount "sleep 1000";
           UMount "sleep 500";
        }
      };
    };

    // Directory layout
    Dir "/"
    {
      // Location of the state dir
      State "var/lib/apt/"
      {
         Lists "lists/";
         xstatus "xstatus";
         userstatus "status.user";
         status "/var/lib/dpkg/status";
         cdroms "cdroms.list";
      };

      // Location of the cache dir
      Cache "var/cache/apt/" {
         Archives "archives/";
         srcpkgcache "srcpkgcache.bin";
         pkgcache "pkgcache.bin";
      };

      // Config files
      Etc "etc/apt/" {
         SourceList "sources.list";
         Main "apt.conf";
         Preferences "preferences";
         Parts "apt.conf.d/";
      };

      // Locations of binaries
      Bin {
         methods "/usr/lib/apt/methods/";
         gzip "/bin/gzip";
         dpkg "/usr/bin/dpkg";
         dpkg-source "/usr/bin/dpkg-source";
         dpkg-buildpackage "/usr/bin/dpkg-buildpackage"
         apt-get "/usr/bin/apt-get";
         apt-cache "/usr/bin/apt-cache";
      };
    };

    // Things that effect the APT dselect method
    DSelect
    {
       Clean "auto";   // always|auto|prompt|never
       Options "-f";
       UpdateOptions "";
       PromptAfterUpdate "no";
       CheckDir "no";
    }

    DPkg
    {
       // Probably don't want to use force-downgrade..
       Options {"--force-overwrite";"--force-downgrade";}

       // Auto re-mounting of a readonly /usr
       Pre-Invoke {"mount -o remount,rw /usr";};
       Post-Invoke {"mount -o remount,ro /usr";};

       // Prevents daemons from getting cwd as something mountable (default)
       Run-Directory "/";

       // Build options for apt-get source --compile
       Build-Options "-b -uc";

       // Pre-configure all packages before they are installed using debconf.
       Pre-Install-Pkgs {"dpkg-preconfigure --apt --priority=low --frontend=dialog";};

       // Flush the contents of stdin before forking dpkg.
       FlushSTDIN "true";

       // Control the size of the command line passed to dpkg.
       MaxBytes 1024;
       MaxArgs 350;
    }

    /* Options you can set to see some debugging text They correspond to names
       of classes in the source code */
    Debug
    {
      pkgProblemResolver "false";
      pkgAcquire "false";
      pkgAcquire::Worker "false";
      pkgDPkgPM "false";
      pkgOrderList "false";

      pkgInitialize "false";   // This one will dump the configuration space
      NoLocking "false";
      Acquire::Ftp "false";    // Show ftp command traffic
      Acquire::Http "false";   // Show http command traffic
      aptcdrom "false";        // Show found package files
      IdentCdrom "false";
    }

    /* Whatever you do, do not use this configuration file!! Take out ONLY
       the portions you need! */
    This Is Not A Valid Config File

Zurück | Nach oben | Weiter
5.11 Die Datei `sources.list` | Zum Anfang | 5.13 `apt-setup`

© 1999-2006 Frank Ronneburg - Dieser Inhalt ist unter einem Creative Commons Namensnennung - Nicht-kommerziell - Keine Bearbeitung Lizenzvertrag lizenziert (creativecommons.org/licenses/by-nc-nd/2.0/de/legalcode).