[[Vorlage(archiviert, "Der Wikiartikel zur Neuimplementierung des apt-cachers findet sich unter [:Lokale_Paketquellen/Apt-Cacher-ng:Apt-Cacher-ng]")]] {{{#!vorlage Wissen [:Pakete installieren: Installation von Programmen] [:Editor: Einen Editor öffnen] [:sudo: Root-Rechte] [:Paketverwaltung:] [:sources.list:] }}} [[Inhaltsverzeichnis(2)]] [http://www.nick-andrew.net/projects/apt-cacher/ apt-cacher] {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. Das Programm verwendet einen Webserver [:Apache:] um den Clients den Cache über HTTP bereit zu stellen. Jedoch wird kein Spiegelserver (wie bei [:apt-mirror:]) erzeugt, sondern nur die bereits durch andere Systeme angeforderten Pakete bereitgestellt. Mittlerweile gibt es eine Neuimplementierung von apt-cacher namens [:Lokale_Paketquellen/Apt-Cacher-ng:Apt-Cacher-ng]. Diese kommt ohne Webserver aus. Weitere Programme mit ähnlichen Funktionen sind im Artikel [:Lokale_Paketquellen:] zu finden. = Voraussetzungen = Die Installation setzt einen funktionierenden [:Apache:Apache-Server] (wird nicht automatisch mit installiert) voraus. = Installation von apt-cacher auf dem Server = Zu installierende Pakete [1]: {{{#!vorlage Paketinstallation apt-cacher, universe }}} [[Bild(./apache_funktion.png, 300x300, align=right)]] Um die Funktionstüchtigkeit des Apache-Webservers sicher zu stellen, sollte an dieser Stelle die Adresse ``http://localhost/`` in einem beliebigem Browser aufgerufen werden (bei einem Server ohne Browser kann von einem anderem Rechner einfach die IP des Servers aufgerufen werden). Das Ergebnis sollte wie nebenstehend aussehen. = Konfiguration des Servers = Zur Konfiguration des Servers müssen lediglich zwei Dateien bearbeitet werden: == /etc/apt-cacher/apt-cacher.conf == Dies ist die "Haupt-Konfigurationsdatei" von apt-cacher. Sie ist gut dokumentiert (auf Englisch). {{{#!vorlage Hinweis Zum Bearbeiten der Datei benötigt man einen Editor [2] mit Root-Rechten [3]. }}} {{{ cache_dir=/var/cache/apt-cacher }}} gibt das Verzeichnis für den Cache an. Wenn es nicht existiert, wird es beim nächsten Start von apt-cacher angelegt. {{{ admin_email=root@localhost }}} hiermit kann eine E-Mail-Adresse für den "Verkehrsbericht" und die Status-Seite definiert werden. {{{ daemon_port=3142 }}} legt den Port fest, über den apt-cacher von Apt erreichbar ist (wichtig für die Client-Konfiguration). {{{ group=www-data user=www-data }}} legt Benutzernamen und -Gruppe fest, unter dessen Namen apt-cacher ausgeführt wird. {{{ allowed_hosts=192.168.0.0/24 denied_hosts= }}} legt die Netzwerkadressen (IPv4) fest, denen die Nutzung des Caches erlaubt bzw. verboten ist. Angaben können einzelne IPs sein, eine IP mit Maske (wie im Beispiel), oder IP-Ranges (192.168.0.1-192.168.0.254 bedeutet das gleiche wie 192.168.0.0/24). {{{ allowed_hosts_6=fec0::/16 denied_hosts_6= }}} legt die Netzwerkadressen (IPv6) fest, denen die Nutzung des Caches erlaubt bzw. verboten ist. Irrelevant, da IPv6 praktisch nicht genutzt wird, nur der Vollständigkeit halber erwähnt. {{{ allowed_locations=de.archive.ubuntu.com, archive.canonical.com }}} URLs von denen Updates und Paketlisten geladen werden dürfen. Für den Hausgebrauch auskommentieren (d.h. alle Quellen, die ein Client haben möchte, werden geladen). In diesem Beispiel wären nur die Quellen ``de.archive.ubuntu.com`` und ``archive.canonical.com`` erlaubt. {{{ generate_reports=1 }}} legt fest, ob Nutzungsreporte erstellt werden. Üblicherweise nicht erforderlich, es sei denn man möchte sehen, was man seiner Internetanbindung erspart hat. {{{ clean_cache=1 }}} legt fest, ob apt-cacher aufräumt, d.h. Pakete aus dem Cache entfernt, wenn diese nicht mehr in den aktuellen Paketlisten auftauchen. {{{ offline_mode=0 }}} im Offline-Modus werden keine Dateien aus dem Internet geladen, sondern lediglich bereits vorhandene Dateien verteilt. {{{ logdir=/var/log/apt-cacher }}} legt das Verzeichnis für Logfiles fest. {{{ expire_hours=0 }}} legt fest, wann (nach wie vielen Stunden) Paketlisten bei einem Update erneuert werden sollen. Bei dem Wert ``0`` wird der Header verglichen und dann entschieden, ob die Paketliste erneuert werden muss. {{{ http_proxy=proxy.example.com:8080 use_proxy=0 http_proxy_auth=proxyuser:proxypass use_proxy_auth=0 }}} legt Proxyeinstellungen fest, falls man einen Proxyserver/Firewallsystem nutzt. {{{ limit=0 }}} Beschränkung der Downloadrate in Bits/s. "0" bedeutet keine Beschränkung, `k` und `m` können verwendet werden um Angaben in Kilobit/s bzw. Megabit/s zu machen. {{{ debug=1 }}} fügt Debug-Informationen zum Errorlog hinzu (Pfad siehe logdir). {{{ checksum=1 }}} legt fest, ob Checksummen verwendet werden (benötigt zusätzlich das Paket '''libdbd-sqlite3-perl'''!) {{{ path_map = ubuntu-ger de.archive.ubuntu.com/ubuntu ; ubuntu archive.ubuntu.com/ubuntu; ubuntu-updates archive.ubuntu.com/ubuntu ; ubuntu-security security.ubuntu.com/ubuntu }}} legt symbolische Namen fest. Diese können in der [:sources.list:] verwendet werden. [[Anker(Symbolische_Namen)]] Z.B. wäre jetzt: {{{ ubuntu-ger de.archive.ubuntu.com }}} {{{ deb http://SERVER:PORT/apt-cacher/ubuntu-ger hardy universe }}} das gleiche wie: {{{ deb http://de.archive.ubuntu.com/ubuntu/ hardy universe }}} Für `SERVER` wird die IP oder der Name (bei funktionierendem DNS) des Servers eingetragen (`localhost`, wenn auf dem gleichem System apt-cacher läuft). Für `PORT` wird der weiter oben spezifizierte Port eingetragen (Standard: `3142`). ==/etc/default/apt-cacher== In dieser Datei wird lediglich festgelegt, ob apt-cacher beim Systemstart mit gestartet wird (Normalfall). In besonderen Fällen können hier auch der in der '''apt-cacher.conf''' definierte Port oder das "limit" (siehe oben) verändert werden. Natürlich sollte auch der Server (also der Rechner, der den Cache bereitstellt) apt-Cacher nutzen, daher wird empfohlen, die Client-Konfiguration ebenfalls auf dem Server durchzuführen. [[Bild(./apt_cacher1.png, 200x200, align=right)]] Um die neue Konfiguration zu übernehmen sollte jetzt folgender Befehl ausgeführt werden: {{{#!vorlage Befehl sudo /etc/init.d/apt-cacher restart }}} Über einen Webbrowser ist jetzt auch die Seite ``http://localhost/apt-cacher/`` (bzw. von einem anderem Rechner ``http://SERVER-IP/apt-cacher/`` ) erreichbar. = Konfiguration der Clients = 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) [4]. === sources.list bearbeiten === Man ändert die Einträge in der '''sources.list'''[5] wie folgt ab: Man schreibt zwischen "http://" und der darauf folgenden Adresse `SERVER`:`PORT`. `SERVER` kann die IP des Hosts von apt-cacher, 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: ``3142``). ==== Beispiel ==== Aus: {{{ deb http://de.archive.ubuntu.com/ubuntu/ hardy universe }}} wird (__Annahme:__ apt-cacher 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/ hardy universe }}} bzw. wenn der symbolische Name (ubuntu_de de.archive.ubuntu.com/ubuntu/) verwendet wird (siehe [#Symbolische_Namen Symbolische Namen]): {{{ deb http://192.168.0.4:3142/ubuntu_de/ubuntu hardy 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 der Datei '''/etc/apt/apt.conf.d/01proxy''' (Dateiname ist ein Beispiel, Datei muss ggf. angelegt werden) Folgendes eingetragen werden: {{{ Acquire::http { Proxy "http://SERVER:PORT"; }; }}} `SERVER` kann die IP des Hosts von apt-cacher 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 ``3142``). Es können zusätzlich symbolische Namen in der '''sources.list''' [2] verwendet werden. === 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''' möglich. === 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: [http://www.squid-handbuch.de/hb/ Squid-Handbuch] {de} -> 6.2 Routing-Optionen zu anderen Proxys -> cache_peer_domain [[Bild(./apt_cacher2.png, 300x300, align=right)]] Bei jedem Update der Paketlisten oder von Paketen werden diese nun in dem Cache abgelegt. Wie effektiv apt-cacher arbeitet, kann man auf der Seite ``http://localhost/apt-cacher/reports`` ersehen (sofern Reports aktiviert wurde, von anderen Rechnern `localhost` durch die IP/den Namen des Servers ersetzen). = Weitere Aktionen mit apt-cacher = == Cache des lokalen Systems importieren == Es ist möglich, den bisherigen Vorrat an '''.deb'''-Paketen in apt-cacher zu übernehmen. Dazu wird der folgende Befehl verwendet: {{{#!vorlage Befehl sudo /usr/share/apt-cacher/apt-cacher-import.pl /var/cache/apt/archives }}} Es wird ein Skript ausgeführt, das die Pakete aus '''/var/cache/apt/archives''' in das, in der '''apt-cacher.conf''' angegebene (Cache-)Verzeichnis kopiert. Dabei werden die Quelldateien gelöscht. Möchte man die Pakete nur kopieren, ruft man '''apt-cacher-import.pl''' mit der Option `-r` auf, möchte man nur [:ln#Symbolische-Verknuepfungen:symbolische Links] erstellen, mit der Option `-s`. Die beiden Befehle wären dann also: {{{#!vorlage Befehl sudo /usr/share/apt-cacher/apt-cacher-import.pl -r /var/cache/apt/archives sudo /usr/share/apt-cacher/apt-cacher-import.pl -s /var/cache/apt/archives }}} == Probleme mit dem Webinterface == apt-cacher bietet eine Webseite an, auf der die Konfigurationen und die Anzahl an übertragenen Paketen angeschaut werden kann. Einerseits kann man diese Seite über den eingetragen Port erreichen, standardmäßig ist das also `http://:3142` bzw. `http://:3142/report` Zusätzlich trägt sich apt-cacher aber auch in den apache2 ein, so dass man diese Seite auch über `http:///apt-cacher` bzw. `http:///apt-cacher/report` abrufen kann. Dazu wird eine symbolische Verknüpfung in '''/etc/apache2/conf.d''' auf die Datei '''/etc/apt-cacher/apache.conf''' angelegt. Unter Umständen kann es zu Problemen mit dem CGI-Aufruf kommen. In der '''/var/log/apache2/error.log''' steht dann so etwas wie {{{ [error] [client ] Options ExecCGI is off in this directory: /usr/share/apt-cacher/apt-cacher.pl }}} Abhilfe schafft es, wenn man die Datei '''/etc/apache2/conf.d/apt-cacher.conf''' editiert und so abändert: {{{ Alias /apt-cacher /usr/share/apt-cacher/apt-cacher.pl # #vorher #Änderung! Options ExecCGI AddHandler cgi-script pl AllowOverride None order allow,deny allow from all #Änderung! # #vorher }}} Zusätzlich muss man diesen Eintrag nun noch in den VirtualHost einbinden. Dazu öffnet man seine VirtualHost-Datei, standardmäßig '''/etc/apache2/sites-available/default''' und fügt die Zeile {{{ Include /etc/apache2/conf.d/apt-cacher.conf }}} ein. Alternativ kann man auch den Text aus dieser Datei direkt in den VirtualHost kopieren. = Links = * [http://www.debuntu.org/how-to-set-up-a-repository-cache-with-apt-cacher HowTo] {en} auf debuntu.org * [https://help.ubuntu.com/community/Apt-Cacher-Server Apt-Cache-Server] {en} * [http://debiananwenderhandbuch.de/apt-cacher.html Handbuch] {de} * [http://packages.debian.org/de/sid/apt-cacher Pakete] auf debian.org {de} * [http://sandeep.co.in/2008/10/30/updateupgrade-multiple-ubuntu-pcs-with-apt-cacher/ Blog-Anleitung] {en} zur Nutzung * [:Lokale_Paketquellen:] {Übersicht} Übersichtsartikel #tag: Netzwerk, System, Paketverwaltung