Lokale Paketquellen/Apt-Cacher-ng

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

  1. Installation von Programmen

  2. Ein einzelnes Paket manuell installieren

  3. Einen Editor öffnen

  4. Root-Rechte

  5. Paketverwaltung

  6. sources.list

Inhaltsverzeichnis
  1. Installation von Apt-Cacher-ng auf dem Ser...
    1. Aus den Ubuntu-Quellen
    2. Aus den Debian-Quellen
  2. Konfiguration von Apt-Cacher-ng auf dem Se...
    1. /etc/apt-cacher-ng/ubuntu_mirrors
    2. /etc/apt-cacher-ng/acng.conf
  3. Client-Konfiguration
    1. sources.list bearbeiten
      1. Beispiel
    2. Apt für Nutzung eines Proxys konfigurier...
    3. Konfiguration über GUI
    4. Einrichtung über Proxy
  4. Weitere Möglichkeiten mit Apt-Cacher-ng
    1. Import der bereits heruntergeladenen Arc...
    2. Bereinigung des Caches
    3. Distkill
    4. Remapping/Symbolische Namen
      1. Beispiel Remapping
  5. Externe Links/Quellen

Apt-Cacher-ng {en} ist ein Programm, welches die Belastung der Internetanbindung durch Updates verringert, sobald zwei oder mehr Debian-basierte (also auch Ubuntu und Derivate) Rechner über diesen Zwischenspeicher (Cache) auf die gleichen Paketquellen zugreifen. So werden Debian-Pakete die auf beiden (allen) Rechnern benötigt werden nur einmal aus dem Internet heruntergeladen.

Apt-Cacher-ng ist in C++ implementiert und liefert auch auf schwachen Rechnern gute Performance. Apt-Cacher-ng ist von der Funktionalität sehr nahe an apt-cacher. Im Gegensatz zu apt-cacher ist Apt-Cacher-ng nicht auf einen Webserver (z.B. Apache2) angewiesen.

Dieser Artikel bezieht sich auf die Versionen aus den Ubuntu-Quellen. Neuere Versionen sind z.B. über debian.org {dl} verfügbar.

Ähnliche Programme unter: Lokale Paketquellen

Installation von Apt-Cacher-ng auf dem Server

Aus den Ubuntu-Quellen

Zu installierende Pakete [1]:

Wiki/Vorlagen/Installbutton/button.png mit apturl

Paketliste zum Kopieren:

sudo apt-get install apt-cacher-ng 

sudo aptitude install apt-cacher-ng 

acng_report.png

Nach der Installation ist Apt-Cacher-ng über einen Browser erreichbar: http://localhost:3142/acng-report.html (bzw. von einem anderen Rechner über die IP des Hosts, auf dem Apt-Cacher-ng ausgeführt wird, oder bei funktionierendem DNS über dessen Namen). Beispiel siehe Abbildung rechts.

Aus den Debian-Quellen

Hinweis!

Fremdpakete können das System gefährden.


Anmerkung: Die Debian-Seite ist gleichzeitig der Downloadbereich des Projekts!

Z.B. auf debian.org {dl}

Nach dem Download installiert man dieses Paket [2]. Diese Variante ist interessant für alle, die eine veraltete Version aus den Ubuntu-Quellen angeboten bekommen. Hierdurch lässt sich ebenfalls der Bug in der Version 0.1.9 von Ubuntu 8.04 vermeiden.

Konfiguration von Apt-Cacher-ng auf dem Server

Nach jeder Änderung der Konfiguration ist Apt-Cacher-ng mit folgendem Befehl neu zu starten:

sudo /etc/init.d/apt-cacher-ng restart 

/etc/apt-cacher-ng/ubuntu_mirrors

Hierbei handelt es sich um eine Datei des "Standard-Remappings". Alle 219 in dieser Datei aufgezählten Quellen werden im Unterordner uburep gesammelt (bei 0.5.14 unter Maverick sind in dieser Datei 594 Einträge).

/etc/apt-cacher-ng/acng.conf

Dies ist die Haupt-Konfigurationsdatei. Sie kann mit einem beliebigen Editor[3] mit Root-Rechten [4] bearbeitet werden.

CacheDir: /var/cache/apt-cacher-ng

Legt das Verzeichnis für den Cache fest.

LogDir: /var/log/apt-cacher-ng

Legt das Verzeichnis für Log-Dateien fest (Fehlerlog: apt-cacher.err, Zugriffslog: apt-cacher.log - mit IP des zugreifenden Rechners)

Port:3142

Legt den Port der Anwendung fest (wichtig für Client-Konfiguration und Webinterface).

VerboseLog: 1

Umfang der Log-Dateien: 0 Typ, Zeit und Dateigröße werden erfasst, 1 zusätzlich Client-IP und relative lokale Pfade werden erfasst.

ReportPage: acng-report.html

Seitenname der Statusseite (http://SERVER:PORT/ReportPage , Standard:http://SERVER:PORT/acng-report.html )

SocketPath:/var/run/apt-cacher-ng/socket

Socket-Datei, um über einen lokalen UNIX-Socket anstelle über TCP zuzugreifen.

Verbose: 0
Debug:3
ForeGround: 0

Für Fehlersuche/-Diagnose interessante Optionen.

PidFile: /var/run/apt-cacher-ng/pid

Legt fest, in welcher Datei die Prozess-ID des Programms hinterlegt wird (am besten nicht ändern).

offlinemode:0

Im Offline-Modus können nur bereits vorhandene Dateien verteilt werden.

ForceManaged: 0

Verbieten von Downloads von nicht konfigurierten Quellen. 0: Alle Quellen erlaubt, 1: Nur konfigurierte erlaubt

Proxy: http://www-proxy.example.net:80
proxy: http://username:proxypassword@proxy.example.net:3128

legt Proxy-Einstellungen fest (bei Bedarf, Ungenutztes auskommentieren)

ExTreshold: 10

Tage, bevor ein Paket, welches aus keiner Paketquelle verfügbar ist, gelöscht wird.

StupidFs: 0

Falls Apt-Cacher-ng den Cache auf einer NTFS- oder FAT-Partition hat, können hiermit Fehler vermieden werden (in diesem Fall auf 1 setzen).

Remap-debrep: file:deb_mirror*.gz /debian ; file:backends_debian
Remap-uburep: file:ubuntu_mirrors /ubuntu ; file:backends_ubuntu

Standard-Remapping. Nähere Informationen im Abschnitt Remapping/Symbolische Namen

Hinweis:

Es wird empfohlen, die Client-Konfiguration ebenfalls auf dem Rechner durchzuführen, auf dem Apt-Cacher-ng ausgeführt wird.

Client-Konfiguration

Für die Konfiguration der Clients (zugreifende Rechner) sind vier Möglichkeiten bekannt. Es müssen jeweils anschließend die Paketlisten erneuert werden (gilt nicht für die Einrichtung über Proxy) [5].

sources.list bearbeiten

Man ändert die Einträge in der sources.list [6] wie folgt ab:

Man schreibt zwischen "http://" und der darauf folgenden Adresse SERVER:PORT. SERVER kann die IP des Hosts von Apt-Cacher-ng sein, ein Rechner-Name (bei funktionierender Namensauflösung im LAN -> DNS), oder (wenn der Server auf dem gleichem Rechner läuft) localhost (bzw. 127.0.0.1). Für PORT trägt man den Port der Anwendung auf dem Host ein (Standard: Apt-Cacher-ng 3142).

Beispiel

Aus:

deb http://de.archive.ubuntu.com/ubuntu/ precise universe

wird (Annahme: Apt-Cacher-ng läuft auf dem Rechner mit der IP: 192.168.0.4 mit dem Port:3142):

deb http://192.168.0.4:3142/de.archive.ubuntu.com/ubuntu/ precise universe

bzw. wenn der symbolische Name (ubuntu_de de.archive.ubuntu.com/ubuntu/) verwendet wird (siehe Remapping/Symbolische Namen):

deb http://192.168.0.4:3142/ubuntu_de/ubuntu precise universe

Apt für Nutzung eines Proxys konfigurieren

Der schnellste Weg, die Clients für die Nutzung eines Caches/Proxies zu konfigurieren ist einen Proxy für apt festzulegen. Dazu muss in einer Datei in /etc/apt/apt.conf.d/ (z.B. 01proxy, Datei muss ggf. angelegt werden) folgendes eingetragen werden:

Acquire::http { Proxy "http://SERVER:PORT"; };

Falls https Repositories benutzt werden, sollte folgendes in die Datei, da apt-get bei einem Proxy für https Fehler werfen wird:

Acquire::http { Proxy "http://SERVER:PORT"; };
Acquire::https { Proxy "https://"; };

SERVER kann die IP des Hosts von Apt-Cacher-ng sein, ein Rechner-Name (bei funktionierender Namensauflösung im LAN -> DNS), oder (wenn der Server auf dem selben Rechner läuft) localhost (bzw. 127.0.0.1). Für PORT trägt man den Port der Anwendung auf dem Host ein (Standard Apt-Cacher-ng 3142). Es können zusätzlich symbolische Namen in der sources.list [6] verwendet werden.

Wenn der Proxy aus der apt-Konfiguration entfernt werden soll muss die Zeile auskommentiert (# voranstellen) oder gelöscht werden. Das Auskommentieren ist der bequemere Weg für z.B. Laptop-Benutzer die häufig in unterschiedlichen Netzwerken unterwegs sind.

Konfiguration über GUI

An dieser Stelle wird auf die Wikiseiten zu den verschiedenen Paketmanagern verwiesen (Synaptic, Softwareverwaltung KDE,...). Grundsätzlich sind die selben Operationen wie beim manuellen Bearbeiten der sources.list [6] möglich.

Hinweis:

Verschiedene Nutzer haben berichtet eine Einrichtung über Synaptic würde nicht funktionieren.

Einrichtung über Proxy

Wer in seinem Netzwerk einen Proxyserver (z.b. Squid) betreibt, kann die Einrichtung elegant über einen "Redirect" erledigen. Hierzu werden die entsprechenden URLs (z.B. http://de.archive.ubuntu.com) gefiltert und an den Server umgeleitet.

Diese Art der Konfiguration ist vor allem für Laptops, die in verschiedenen (W-)LANs eingesetzt werden von Vorteil und erspart in großen Netzwerken ( > 20 Teilnehmer) Konfigurationsaufwand.

Eine Konfiguration auf den einzelnen Clients ist nicht erforderlich.

Siehe hierzu: Squid-Handbuch {de} -> 6.2 Routing-Optionen zu anderen Proxys -> cache_peer_domain

Weitere Möglichkeiten mit Apt-Cacher-ng

Import der bereits heruntergeladenen Archive

acng_import.png

Man kann bereits heruntergeladene Archive auf dem Rechner, der als Server dient, importieren. Hierzu führt man folgende Schritte aus:

  1. Zuerst auf dem lokalen Rechner (Server) den Proxy eintragen (siehe oben) und einmal sudo apt-get update ausführen, damit der Paketindex der lokalen Pakete von apt-cacher-ng bekannt ist

  2. Dann den apt Zwischenspeicher um veraltete Pakete erleichtern

  3. Dann im Cache-Verzeichnis den Unterordner _import anlegen, in den die Archive kopiert werden

  4. Der Ordner und die Dateien werden dem Benutzer "apt-cacher-ng" zugeordnet (übertragen)

  5. Über den Button "Import" auf dem Webinterface von Apt-Cacher-ng (Standard: http://localhost:3142/acng-report.html) kann der Importvorgang gestartet werden

  6. Nachdem der Import abgeschlossen ist, kann der Unterordner _import wieder gelöscht werden

Üblicherweise wird der Importvorgang so eingeleitet:

Als Beispiel der Import des Caches, der von apt unter /var/cache/apt/archives/ angelegt wurde (ohne sudo -s wird die Befehlszeile des cp-Befehls bei vielen Dateien zu lang und sudo fuehrt das Kommando nicht aus):

sudo -s
apt-get update
apt-get autoclean
mkdir -p /var/cache/apt-cacher-ng/_import
chown apt-cacher-ng /var/cache/apt-cacher-ng/_import
cp -al /var/cache/apt/archives/* /var/cache/apt-cacher-ng/_import/
exit 

Nach dem Anklicken des "Start Import"-Buttons auf dem Webinterface startet der Vorgang. Nachdem dieser im Web-Interface abgeschlossen wurde, entfernt man den Ordner wieder:

sudo rm -rf /var/cache/apt-cacher-ng/_import 

Bereinigung des Caches

acng_expiration.png

Über den Button "Start Expiration" auf dem Webinterface kann die Bereinigung manuell gestartet werden. Das Ergebnis sieht etwa wie nebenstehend aus.

Distkill

Wenn der Cache von Apt-Cacher-ng durch lange Benutzung (oder viele Distributionen) zu groß wird, gibt es mit Distkill einen Weg ganze Releases (bzw. deren Komponenten zu löschen). Ein Aufruf von:

sudo /usr/lib/apt-cacher-ng/distkill.pl 

Gibt eine Liste der zwischengespeicherten Distributionen/Komponenten aus:

Scanning /var/cache/apt-cacher-ng, please wait...
Found distributions:
        1. karmic (102 index files)
        2. maverick-backports (32 index files)
        3. karmic-security (35 index files)
        4. karmic-backports (64 index files)
        5. maverick-security (32 index files)
        6. maverick-updates (34 index files)
        7. maverick (54 index files)
        8. lucid-proposed (3 index files)
        9. lucid-updates (42 index files)
        10. karmic-proposed (3 index files)
        11. jaunty-updates (32 index files)
        12. lucid (71 index files)
        13. jaunty-security (64 index files)
        14. lucid-backports (43 index files)
        15. jaunty (88 index files)
        16. lucid-security (46 index files)
        17. jaunty-backports (32 index files)
        18. karmic-updates (60 index files)

WARNING: The removal action would wipe out whole directories containing
         index files. Select d to see detailed list.

Which distribution to remove? (Number, 0 to exit, d for details): 

Durch Eingabe einer Nummer werden die Index-Dateien der gewählten Komponente gelöscht. Führt man nun eine Bereinigung des Caches, ohne erneutes herunterladen der Indexdateien, aus, so werden die entsprechenden Pakete (je nach Einstellung - ExTreshold) bald vom System entfernt.

Nähere Informationen hierzu findet man unter: http://www.unix-ag.uni-kl.de/~bloch/acng/html/howtos.html#cache-overview {en}

Remapping/Symbolische Namen

Remap-<repository_name>: /basepath/ ; backendhost/dir

Remapping (Symbolische Namen). Legt symbolische Namen für die Backends (Ubuntu- und Debian-Repositories) fest, bzw. in welchen Dateien diese gespeichert sind. Achtung: Das Remapping funktioniert nur, wenn die sources.list angepasst wird!

Für <repository_name> wird ein frei gewählter Name eingesetzt (einzelnes Wort, darf nicht mit einem Unterstrich "_" beginnen und nicht apt-cacher sein). Möglich sind z.B.: project_foo_mirrors oder ubuntu_stuff. Legt den Unterordner im Cache fest.

/basepath/ ist der Name, den ein Client für das Repository verwendet (sources.list[2] Z.B.: de.archive.ubuntu.com). Wenn hier ein Symbolischer Name steht, muss backendhost das gewünschte Repository angeben (kann ansonsten entfallen).

Dies wäre bereits die einfachste Form des Remapping. Für umfangreiche Konfigurationen kann das Remapping in die angegebenen Dateien ausgelagert werden:

Remap-<repository_name>: file:list.txt ; file:where.txt

Beispiel Remapping

Remap-ubuntu_ger: ubuntu_de ; http://de.archive.ubuntu.com/ubuntu/
Remap-fremdes_repo: kenne_ich_nicht ; http://packages.medibuntu.org/

Nun könnte in der sources.list eines Clients stehen:

deb http://ubuntu_de/ubuntu precise-security restricted main multiverse universe
deb http://kenne_ich_nicht precise free non-free
...

Die Dateien aus de.archive.ubuntu.com würden in dem Unterordner ubuntu_ger gespeichert, die aus packages.medibuntu.org im Unterordner fremdes_repo.