apt-proxy


Der apt-proxy ist ein Programm, welches alle deb-Pakete, die von einem Debian-Server heruntergeladen wurden, zwischenspeichert. Diese Pakete werden allen anderen Rechnern im Netzwerk verfügbar gemacht. Ist ein Pakete noch nicht zwischen gespeichert und wird angefragt, so lädt der apt-proxy dieses automatisch herunter und speichert es zwischen, es steht dann bei der nächsten Anfrage lokal zur Verfügung. Somit werden die Anzahl der Downloads erheblich gesenkt. Zwar kann auch ein http-Proxy (oder ftp-Proxy) diese Aufgabe übernehmen, der apt-proxy bietet aber einige Geschwindigkeitsvorteile.

Inhaltsverzeichnis

Installation

Die Installation des apt-proxy ist sehr einfach. Man kann ihn direkt mit apt-get aus den Paketquellen installieren. Dazu loggt man sich auf tjener ein, und gibt

apt-get install apt-proxy

ein.

Konfiguration

Die zentrale Konfigurationsdatei heißt apt-proxy-v2.conf und liegt in /etc/apt-proxy/. Die Datei ist sehr gut kommentiert. Die Einträge hinter dem doppelten Semikolon ';;' sind Kommentare.

Allgemeine Konfiguration

Die allgemeine Einstellung werden im Abschnitt [DEFAULT] vorgenommen.

Zunächst muss man den Netzwerkbereich festlegen, in dem der apt-proxy arbeiten soll. In der Standardkonfiguration darf das gesamte Netzwerk den apt-proxy ansprechen, also auch Rechner aus dem Internet. Möchte man dies vermeiden, so muss man dafür sorgen, dass er nur auf die interne IP hört. Folgende Eintragungen sind dafür notwendig (10.0.2.2 ist die interne IP von tjener):

;; Adresse des Servers
address = 10.0.2.2
;; Port auf dem gelauscht werden soll
port = 9999

Danach wird dem Proxy mitgeteilt, wo er die Dateien Zwischenspeichern soll, wann er sie erneuern soll, usw.. Dazu trägt man folgendes ein:

;; Wie lange soll mindestens gewartet werden, bis die Pakete erneuert werden 
min_refresh_delay = 2h
;; Debugging Einstellungen
debug = all:4 db:0
;; Netzwerktimeout (evtl. hochsetzen)
timeout = 15
;; Wo sollen die Packete zwischengespeichert werden?
cache_dir = /var/cache/apt-proxy

Es gibt noch zahlreiche andere Einstellungsmöglichkeiten, die bei Bedarf konfiguriert werden können.

a. Benutzt man eine Firewall, so kann es zu Problemen mit aktiven FTP-Verbindungen kommen. Dieser Eintrag behebt das Problem:

b. Der apt-proxy selbst kann auch einen http-proxy benutzen. Für das skolelinux-Netzwerk sieht dies so aus:

Backend-Konfiguration

Als nächstes konfiguriert man die Backends, dass sind die Serveradressen, von denen die Pakete bezogen werden sollen, im Prinzip also die URLs, die in er /etc/apt/sources.list stehen.

Jedes Backend wird in einem eigenen Abschnitt konfiguriert, so ein Abschnitt wird mit [name] eingeleitet. Für den Debianserver sieht der Eintrag dann so aus:

[debian]
backends =
       http://ftp.de.debian.org/debian
       http://ftp2.de.debian.org/debian
       ftp://ftp.uk.debian.org/debian
       http://ftp.us.debian.org/debian
min_refresh_delay = 1d 

Man sieht, dass man mehrere Server angeben kann. Die Server werden in der Reihenfolge ihres Auftretens "abgearbeitet". Ist z. b. der Server http://ftp.de.debian.org/debian nicht erreichbar, wird der Server http://ftp2.de.debian.org/debian verwendet.

Für ein Skolelinuxnetzwerk benötigt man noch diese drei Backends

[security]
backends =
       http://security.debian.org/debian-security
       http://ftp2.de.debian.org/debian-security
min_refresh_delay = 1d 

[skolelinux]
backends =
       http://ftp.skolelinux.org/skolelinux/
min_refresh_delay = 1d 

[backports]
 backends = http://backports.debian.org/debian-backports
min_refresh_delay = 1d

Die gesamte apt-proxy-v2.conf sollte nun so aussehen:

[DEFAULT]
       address = 10.0.2.2
       port = 9999
       min_refresh_delay = 1h
       debug = all:4 db:0
       timeout = 15
       cache_dir = /var/cache/apt-proxy
       cleanup_freq = 1d
       max_age = 120d
       max_versions = 3

[debian]
backends =
       http://ftp.us.debian.org/debian
       http://ftp.de.debian.org/debian
       http://ftp2.de.debian.org/debian
       ftp://ftp.uk.debian.org/debian
min_refresh_delay = 1d

[security]
backends =
       http://security.debian.org/debian-security
       http://ftp2.de.debian.org/debian-security
min_refresh_delay = 1d

[skolelinux]
backends =
       http://ftp.skolelinux.org/skolelinux/
min_refresh_delay = 1d

[backports]
       backends = http://backports.org/debian/
min_refresh_delay = 1d 

Neustarten des apt-proxys

Damit die Änderungen wirksam werden, muss der apt-proxy noch neu gestartet werden. Auf tjener gibt man dazu

/etc/init.d/apt-proxy restart

ein. Die letzte Ausgabe sollte [ OK ] sein. Ansonsten liegt wahrscheinlich ein Fehler in der Konfigurationsdatei vor.

Einrichten der Clients

Den Clients muss nun noch mitgeteilt werden, dass sie nicht mehr direkt auf das Internet zugreifen, sondern ihre Anfrage an den apt-proxy richten sollen. Dieses erreicht man, indem man die sources.list unter /etc/apt/ editiert. Steht dort z. B. dieser Eintrag

deb http://ftp.debian.org/debian/ lenny main contrib non-free
deb http://ftp.skolelinux.org/skolelinux/ lenny local 

so muss sie in (Servername: tjener; port: 9999)

deb http://tjener:9999/debian/ lenny main contrib non-free
deb http://tjener:9999/skolelinux/ lenny local 

geändert werden. Die Unterverzeichnisse /debian/ und /skolelinux/ verweisen auf die Abschnitte, die zuvor in der Konfigurationsdatei eingerichtet wurden.

Verwendung mit einer preseed-Datei

Installiert man die Clients unbeaufsichtigt mit einer preseed-Datei, so kann man natürlich auch darin den apt-proxy verwenden.

Die Spiegelserver, die während der Betriebssysteminstallation verwendet werden soll, wird so festgelegt:

d-i     mirror/http/hostname    string tjener:9999
d-i     mirror/http/directory   string /debian/
d-i     mirror/suite            string lenny 

Die Spiegelserver die für die Pakete verwendet werden sollen, definiert man so:

d-i     apt-setup/uri_type      select d-i
d-i     apt-setup/hostname      string tjener:9999
d-i     apt-setup/directory     string /debian/
d-i     apt-setup/another       boolean false       d-i
apt-setup/security-updates      boolean false
d-i     finish-install/reboot_in_progress note
d-i     prebaseconfig/reboot_in_progress        note
d-i     apt-setup/non-free      boolean true
d-i     apt-setup/contrib       boolean true
d-i     apt-setup/backports     boolean true 

Für die Backports (um z. B. OpenOffice >3) zu installieren, verwendet man folgende Einträge:

d-i apt-setup/local0/repository string http://tjener:9999/backports lenny-backports
d-i apt-setup/local0/comment string Backports fuer Lenny
d-i apt-setup/local0/source boolean false
d-i apt-setup/local0/key string http://backports.org/debian/archive.key

Möchte man bei der Paketauswahl ein Paket aus den Backports installieren, so muss man an den Paketnamen /lenny-backports anhängen

d-i pkgsel/include string openoffice.org/lenny-backports openoffice.org-gnome/lenny-backports ...

apt-proxy (zuletzt geändert am 2013-11-03 12:10:30 durch anonym)

Alle Inhalte in diesem Wiki stehen unter der GPL.