28.3. Approx

28.3.1. Überblick

Approx [Debian-Paket-approx] ist ein Proxyserver für Debianpakete und dient als Paketcache zwischen einem Paketmirror und Debian-basierten Clients. Mit Approx halten Sie Debianpakete vor, die von den Clients zur lokalen Installation oder Aktualisierung angefragt werden und liefern diese aus dem Paketcache an die Clients aus.

Gemäß der Selbstbeschreibung von Approx sind lediglich die Repositorys in den Konfigurationsdateien von Approx anzupassen, jedoch nicht die Konfigurationsdateien jedes Clients selbst (bspw. /etc/apt/sources.list). In der Realität sieht es jedoch etwas anders aus und es sind ebenfalls Änderungen in den Clients notwendig, damit diese mit dem Paketproxy kommunizieren (siehe „Client“).

Approx präsentiert sich als Alternative zu APT Cacher (siehe Abschnitt 28.4, „apt-cacher“) und APT Cacher-NG (siehe Abschnitt 28.5, „apt-cacher-ng“), dem Nachfolger von APT Cacher.

28.3.2. Setup und Installation

Als ersten Schritt laden Sie das Paket approx [Debian-Paket-approx] herunter und installieren es, bspw. mittels apt-get wie folgt:

Installation von Approx mit apt-get

apt-get install approx

Das Paket approx ist rund 1.5 MB groß und belegt nach dem Entpacken des Softwarearchivs etwa 6.6 MB Platz in ihrem System. Weitere Pakete sind zur Installation nicht erforderlich. Die Schritte 2 und 3 beinhalten nun die Konfiguration des Approx-Serverdienstes (siehe „Server“ und der Clients (siehe „Client“).

28.3.3. Konfiguration

Server

Hierzu passen Sie zunächst die Datei /etc/approx/approx.conf auf ihre eigenen Bedürfnisse an. Approx versteht dazu eine Reihe von Variablen in Form von Name-Wert-Paaren, wobei Name und Wert mit mindestens einem Leerzeichen voneinander zu trennen sind. Darüber steuern Sie die Funktionalität des Service. Nachfolgend listen wir diese Variablen samt deren Bedeutung in alphabetischer Reihenfolge auf.

$cache
legt den Pfad fest, den Approx für seinen eigenen Paketcache verwendet. Der Defaultwert ist /var/cache/approx.
$curl_path
legt den Pfad zum Programm curl fest. Der Defaultwert ist /usr/bin/curl.
$debug
legt fest, ob Logeinträge zur erweiterten Fehlersuche erstellt werden sollen. Der Defaultwert ist false und somit ausgeschaltet.
$group
legt den Namen der Gruppe fest, dem die Dateien im Cacheverzeichnis von Approx gehören. Der Defaultwert ist approx.
$interval
gibt die Zeitdauer in Minuten an, nach der eine Datei im Cache als zu alt angesehen wird, um noch sofort von Approx ausgeliefert zu werden. Ist das Intervall überschritten, schaut Approx zuerst auf dem Paketmirror nach, ob es zwischenzeitlich eine neuere Version gibt. Der Defaultwert ist 60 für 60 Minuten.
$max_rate
legt die Obergrenze für die Breite des Datenstroms in Bytes pro Sekunde fest, mit der Daten vom Paketmirror bezogen werden. Der Defaultwert ist unlimited für unbegrenzte Bandbreite. Geben Sie stattdessen einen Zahlenwert an und ergänzen ihn mit K, M oder G, begrenzen Sie die Bandbreite auf den entsprechenden Wert in Kilobyte, Megabyte oder Gigabyte pro Sekunde.
$max_redirects
legt die maximale Anzahl von HTTP-Weiterleitungen (HTTP redirects) fest, denen gefolgt wird, wenn ein Paket heruntergeladen wird. Der Defaultwert ist 5.
$max_wait
gibt an, wieviele Sekunden der Prozess von Approx im Falle eines konkurrierenden Downloads wartet, bevor es die Datei selbst bezieht. Der Defaultwert ist 10 für 10 Sekunden.
$offline
gibt an, ob Approx auch möglicherweise veraltete Dateien ausliefern soll, wenn keine Verbindung zum Paketmirror zustandekommt. Der Defaultwert ist false und diese Funktionalität ist somit ausgeschaltet.
$pdiffs
legt fest, ob IndexFile Diffs genutzt werden sollen. Der Defaultwert steht auf true für eingeschaltet.
$syslog
legt das Verhalten von syslog fest, wenn mit Logdateien umgegangen wird. Der Defaultwert ist daemon.
$user
legt den Namen des Benutzers fest, dem die Dateien im Cacheverzeichnis von Approx gehören. Der Defaultwert ist approx.
$verbose
legt fest, ob ausführlichere Logeinträge erstellt werden sollen. Der Defaultwert ist false und somit ausgeschaltet.

Alle weiteren Einträge bezeichnen den Namen und die URL eines Paketmirrors, von denen Approx im Falle einer Anfrage passende Softwarepakete suchen und beziehen soll. Bitte beachten Sie, dass hierbei keine Veröffentlichung oder ein Distributionsname angegeben wird. Diese Angabe verbleibt in der Konfiguration des Clients.

Nachfolgend sehen Sie in beispielhaft die Einstellungen für einen Paketmirror, welcher die Softwarepakete unter /var/cache/paketcache zwischenpuffert.

Beispielkonfiguration für Approx. 

debian    http://deb/debian.org/debian
security  http://security.debian.org/debian-security

$interval 60
$max_wait 10
$cache    /var/cache/paketcache

Ohne weitere Änderungen lauscht Approx auf dem Port 9999 für Anfragen von Clients. Um das zu ändern und Approx bspw. auf Port 8000 lauschen zu lassen, passen Sie die Servicebeschreibung von Approx an. Verwenden Sie Systemd als Prozessmanager, hilft ihnen dabei das Kommando systemctl weiter.

Anpassen der Servicebeschreibung von Approx bei Systemd. 

systemctl edit approx.socket

Die Servicebeschreibung beinhaltet die drei Abschnitte Unit, Socket und Install. Ändern Sie im Abschnitt Socket die Einstellung ListenStream=9999 auf ListenStream=8000.

Veränderte Servicebeschreibung von Approx bei Systemd. 

[Unit]
Description=caching proxy server for Debian archive files
Documentation=man:approx(8)

[Socket]
ListenStream=8000
Accept=yes

[Install]
WantedBy=sockets.target

Starten Sie anschließend Approx mittels systemctl restart approx.socket neu, um die Änderungen auch wirksam werden zu lassen.

Verwenden Sie hingegen Init.d als Prozessmanager, ändern Sie zunächst in der Konfigurationsdatei /etc/inetd.conf diese Zeile von

9999          stream  tcp     nowait  approx  /usr/sbin/approx /usr/sbin/approx

in

8000          stream  tcp     nowait  approx  /usr/sbin/approx /usr/sbin/approx

und speichern die Konfigurationsdatei. Danach starten Sie Approx wie folgt neu:

/etc/init.d/approx restart

Danach passen Sie die Konfiguration des Clients an — dieser soll ja jetzt auch mit dem APT-Cache kommunizieren und nur darüber seine Softwarepakete beziehen.

Client

Die Konfiguration des Clients passen Sie in drei Schritten an. Schritt 1 ist die Ergänzung der Datei /etc/hosts um den APT-Cache mit der entsprechenden IP-Adresse und dem Hostname. Heißt ihr APT-Cache skye und hat die IP-Adresse 192.168.10.250, fügen Sie diesen Eintrag zur Datei hinzu:

192.168.10.250 skye

In Schritt 2 ergänzen Sie in der Datei /etc/apt/sources.list die Einträge der Paketmirror um den Verweis auf den zuvor angelegten APT-Cache.

deb     http://skye:8000/debian stable main contrib non-free
deb-src http://skye:8000/debian stable main contrib non-free
deb     http://skye:8000/security stable/updates main contrib non-free

Schritt 3 ist das abschließende Aktualisieren der lokalen Paketliste mittels apt-get update. Jetzt kennt ihr Client den APT-Cache und bezieht alle Softwarepakete über ihn.

28.3.4. Beobachtungen aus dem Alltag

  • Verzögerungen einplanen, bis Pakete im Approx-Cache gelandet sind