Wer mehrere Debian-Rechner in seinem Netz betreibt, muss beim Installieren und beim täglichen Update immer die gleichen Pakte aus dem Internet ziehen. Das kostet nicht nur Zeit und Geld, sondern ist auch technisch unelegant. Eine stets aktuelle Lagerstatt für Debian-Pakete schafft die Wende.
Apt ist eine Sammlung von Programmen, die Debian-Pakete aus verschiedenen Quellen installiert und verwaltet. Ihr ist auch die Möglichkeit zu verdanken, die Distribution großteils übers Netz zu ziehen. Zum einen haben Debian-Besitzer so stets die aktuellen Pakete auf dem Rechner. Anders als beim heruntergeladenen ISO-Image laufen zum anderen nur die wirklich zu installierenden Pakete übers Netz. Dieser positive Effekt verwischt sich leider, sobald mehrere Debian-Rechner im lokalen Netz zu installieren und pflegen sind. Jeder PC holen dann die gleichen Pakete wie der Nachbar von Extern – eine Verschwendung kostbarer Ressourcen.
Abhilfe schafft ein Proxy-Server, der zwischen die Debian-Paketeserver im Internet und den lokalen Debian-Rechnern geschaltet ist. Linux hält mehrere Programme bereit, die diese Aufgabe erfüllen können. Sehr leistungsfähig ist Apt-Proxy. Er speichert einmal übertragene Pakete auf der Festplatte zwischen und liefert sie auf Client-Anfrage (nochmal) aus. Natürlich kontrolliert er beim großen Server zuvor, ob der nicht inzwischen eine neuere Version vorliegen hat.
Debian-typisch flotte Installation
Das hier beschriebenen Shell-Skript apt-proxy ist aktuell in der stabilen Version 1.3 Teil der Debian-Distribution. Wer mag kann das Programm auch von der Apt-Proxy-Homepage [1] holen und installieren. Zwei Programmierer arbeiten an einer Neuentwicklung, die von der Produktionsreife aber noch weit entfernt ist. Nur wer diese Herausforderung liebt, installiert Apt-Proxy 2 aus Debians experimental-Zweig.
Die Installation des Programmes geht Debian-typisch einfach:
cassiopeia:~# apt-get install apt-proxy
Die Installationsprozess nimmt selbstständig einige Konfigurationen vor: So legt er den Systemaccount aptproxy an damit der Prozess nicht mit Rootrechten läuft. Außerdem macht er in der Datei /etc/inetd.conf dem System den Port 9999 bekannt. Greift nun ein Client auf Port 9999 zu, registriert das der inetd-Prozess und startet das apt-proxy-Skript, das die Verbindung übernimmt.
Der Proxy ist jetzt schon nutzbar. Trotzdem ist noch ein Blick in seine Konfigurationsdatei /etc/apt-proxy/apt-proxy.conf sehr sinnvoll, denn einige Angaben in ihr sind auskommentiert. Deren Aktivierung bieten, je nach Einsatzfall, neue oder abgewandelte Funktionen. Tabelle 1 gibt Auskunft über die einzelnen Optionen und deren Nutzen.
Tabelle 1: Variablen der apt-proxy.conf
| Variable | Möglicher Wert | Bedeutung |
|---|---|---|
| APT_PROXY_CACHE | Verzeichnis | Toplevel-Verzeichnis der zwischengespeicherten Binärpakete. |
| add_backend | Debian-Distribution und Quelle | Debian-Zweig und die passende URL, von der die Pakete stammen. |
| CLEANUP_DAYS | Tage | Anzahl der Tage, nach der Apt-Proxy veraltete Paketversionen löscht, auf die kein Client zwischenzeitlich zugegriffen hat. |
| CLEAN_SWEEP | Tage | Pakete, auf die Clients lange nicht angefordert haben, löscht Apt-Proxy nach dieser Zeit. |
| MAX_VERSIONS | Anzahl | Legt fest, wie viele Versionen eines Paketes gecacht bleiben. Die Option ist vor allem für die Zweige unstable und experimental interessant, die fehlerhafte Pakete enthalten könnten. |
| BACKEND_FREQ | Minuten | Minimaler Zeitabstand, in dem Apt-Proxy Paketlisten aktualisiert. |
| RSYNC_TIMEOUT | Sekunden | Zeit, die rsync maximal bis zum Connect zum Upstreamserver wartet. |
| WGET_TIMEOUT | Sekunden | Zeit, die wget maximal bis zum Connect zum Upstreamserver wartet. |
| WGET | Dateiname inklusive Pfad und Optionen | Falls wget spezielle Optionen zu übergeben. |
| RSYNC | Dateiname inklusive Pfad und Optionen | Falls rsync spezielle Optionen zu übergeben sind. |
| KEEP_STATS | – | protokolliert Transferdaten, falls aktiviert. |
| DEBUG | – | Protokolliert Debugmeldungen, falls aktiviert. |
Die add_backend-Einträge bestimmen, welche Server Apt-Proxy für einen bestimmten Debian-Zweig – auch Distributionen genannt – kontaktiert. Die Syntax folgt dem Schema
add_backend Backend-Name Cache-Verzeichnis Server
Auf gleiche Weise lassen sich pro Zweig mehrere Server nacheinander eintragen. Wer weitere Quellen plant, kann aus Kasten 1 entnehmen, wie er einen bestehenden Eintrag der Datei sources.list umsetzt. Die abschließenden Slashes sind zwingend nötig, sonst würde der Eintrag falsch interpretiert.
Übertragungsprotokoll zum Server
Neben FTP und HTTP kann Apt-Proxy auch rsync verwenden, um Pakete zu holen. Die rsync-Variante ist hier jedoch ungünstig, da das Tool nur bei einzelner Dateien effektiv überträgt. Die beiden export-Zeilen am Ende der Konfigurationsdatei setzen korrepondierende Umgebungsvariablen für wget und rsync gesetzt. Sie beeinflussen nicht direkt das Verhalten von Apt-Proxy, sondern der beiden Übertragungstools.
Umsetzung einer
/etc/apt/sources.list
Alte Einträge in <C>sources.list<C>:
deb http://download.kde.org/stable/3.2/Debian stable main deb http://www.backports.org/debian stable mozilla deb http://ftp.tiscali.be/debian-backports/debian stable package stable mozilla deb http://kambing.vlsm.org/DLL/debian-backports/debian stable mozilla
Neuer Einträge in sources.list:
deb http://Proxy-Server:9999/kde stable main deb http://Proxy-Server:9999/backports/ stable mozilla
Neue apt-proxy.conf-Datei auf dem Server
add_backend /kde/ $APT_PROXY_CACHE/kde/ http://download.kde.org/stable/3.2/Debian/
add_backend /backports/ $APT_PROXY_CACHE/backports/ http://www.backports.org/debian/ http://ftp.tiscali.be/debian-backports/debian/ http://kambing.vlsm.org/DLL/debian-backports/debian/
Die Clientkonfiguration
Läuft der Proxy-Server, muss natürlich den Client-Computer beigebracht werden, ihre Pakete künftig von ihm zu holen statt wie bisher bei ftp.debian.org. Das passiert in der Datei apt.conf. Listing 2 zeigt die zu den bisherigen Beispielen passenden Werte. Abschließend holt apt-get update einfach die neue Liste der verfügbaren Pakete. Installieren die Clients auch Pakete aus den Entwicklungszweigen testing, unstable und experimental, muss die Server-Konfiguration das berücksichtigen – wie esKasten 1 zeigt.
Listing 2
Eine Proxy-geeignete
/etc/apt/sources.list
deb http://Proxy-Server:9999/debian stable main contrib non-free deb http://Proxy-Server:9999/kde stable main deb http://Proxy-Server:9999/security stable/updates main contrib non-free deb http://Proxy-Server:9999/backports/ stable mozilla
Die im Laufe der Zeit zwischengespeicherten Pakete nehmen viel Platz auf der Platte in Anspruch. Darum sollte immer ausreichend freier Plattenplatz vorhanden sein. Wie so oft fällt es schwer, einen Schätzwert anzugeben – weniger als 8 GByte sollten es aber nicht sein. Wer, wie es empfehlenswert ist, regelmäßig Backups vom Rechner anfertigt, darf dabei das Verzeichnis von der Sicherung ausgesparen. Im Verlustfall sind die Pakete leicht wieder besorgt.
Glossar
-
Proxy
-
Rechner, der anstelle (Proxy = Stellvertreter) eines anderen Internetdienste zur Verfügung stellt. Oft greifen viele Rechner und Benutzer eines Netzwerkes auf die Dienste eines Proxys zurück.
-
inetd
-
Der so genannte Super-Daemon in Linux wartet auf Netzwerkzugriffe. Trifft ein solcher ein, startet und kontrolliert inetd dazu passende Service-Programme.
-
Umgebungsvariable
-
Frei definierbare Variablen, die das Betriebssystem verwaltet. Das Verhalten vieler Programme und auch das der Shell sind über Umgebungsvariablen steuerbar. Sowohl der Benutzer als auch Programme und Skripte dürfen solche Variablen anlegen und Variableninhalte ändern.
Infos
[1] Apt-Proxy-Homepage: http://apt-proxy.sourceforge.net




