Depuis quelques temps, toutes mes machines fonctionnent sous Debian : Squeeze pour les serveurs et les PC de Maelle et Michele, SID et Aptosid pour mon portable.
En plus de ces PC physiques, je réalise un certains nombre de tests dans des machines virtuelles qui fonctionnent sous Debian.

Cherchant à améliorer letemps des mises à jour (téléchargement des paquets), j’ai fait quelques recherches et j’ai découvert apt-cacher-ng qui réalise la fonction de cache lors des mises à jour.

apt-cacher-ng fonctionne pour Debian et ses dérivées (Ubuntu, Mint, Crunchbang), je ne l’ai testé qu’avec des clients Debian en version Squeeze et sid et avec un des clients Aptosid.

Principe de fonctionnement

Apt-caccher-ng est installé sur l’une des machine du réseau et sa présence est déclarée sur toutes les autres. A chaque mise à jour d’une station, celle ci va demander les paquets requis à la station hébergeant le cache, s’ils sont présents, elles va les télécharger à la vitesse du réseau local (100Mb/s chez moi).
S’ils sont absents du cache, ils vont être téléchargé depuis les serveurs de dépôts et mis à disposition du PC en cour de mise à jour ; dans ce cas, le téléchargement se fait en fonction du débit de la connxion internet (8Mb/s chez moi).

Installation et configuration du cache

Comme apt-cache-ng est présent dans les dépôts :

    root@web2:/media/ubuntu# apt-cache policy apt-cacher-ng 
    apt-cacher-ng:
      Installé: (aucun)
      Candidat: 0.5.1-3
     Table de version:
         0.5.1-3 0
            500 http://ftp.fr.debian.org/debian/ squeeze/main amd64 Packages
    root@web2:/media/ubuntu#

Il suffit de l’installer avec apt :

    apt-get install apt-cacher-ng

La configuration est située dans le fichier

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

Ayant créé une partition dédiée aux données du cache, j’ai uniquement modifié la variable indiquant ce répertoire :

    # Letter case in directive names does not matter. Must be separated with colons.
    # Valid boolean values are a zero number for false, non-zero numbers for true.

    #CacheDir: /var/cache/apt-cacher-ng
    CacheDir: /montage/Depot/apt-cacher-ng

Utilisation du cache

Pour que les stations du réseau local utilisent ce cache, il faut modifier la configuration de apt pour lui indiquer l’adresse de la station cache.
Deux solutions sont possibles :

La première consiste à modifier toutes les adresses des dépôts pour qu’ils transitent par le cache.
Exemple pour un cache installé sur une station d’adresse 192.168.0.5 et travaillant avec le port par défaut 3142 :

    deb http://cdn.debian.net/debian/ sid main contrib non-free

devient :

    deb http://192.168.0.5:3142/cdn.debian.net/debian/ sid main contrib non-free

Suivant le nombre de dépôts utilisés et le nombre de stations présentes dans le réseau, cela peut devenir long et fastidieux !

La deuxième solution consiste à déclarer le cache dans la configuration d’apt.
Pour cela, j’ai créé le fichier dans /etc/apt/apt.conf.d/99Proxy contenant :

    [mer. déc. 07 - 23:37:42] - /etc/apt/apt.conf.d
    511 [yvon@nanda] $ cat 99proxy 
    Acquire::http::Proxy::bugs.debian.org "DIRECT";
    Acquire::http { Proxy "http://192.168.0.5:3142"; };

La première ligne (Acquire::http::Proxy::bugs.debian.org "DIRECT";) permet de forcer apt-listbugs à ne pas utiliser le cache et à accéder directement au rapports de bugs.

Maintenir le cache

Il est possible de voir l’état d’apt-caccher-ng via la page http://192.168.0.5:3142/acng-report.html.

Suivant le nombre de versions qui sont présentes dans le réseau, il faut surveiller la taille occupée par celui ci, après bientôt 2 mois d’utilisation :

    root@web2:/montage/Depot/apt-cacher-ng# df -h .
    Sys. de fichiers    Taille  Uti. Disp. Uti% Monté sur
    /dev/mapper/Web-Depot
                           99G  3,6G   90G   4% /montage/Depot

Pour nettoyer les paquets inutiles du cache, il faut utiliser le bouton Start scan and/or expiration de l’interface web.

Pour limiter la taille occupée par le cache, il est conseillé d’utiliser les même adresses de dépôts sur les stations du réseau.

Utiliser le cache pour une installation

Lors d’une installation de Debian, il y a une étape qui demande s’il faut utiliser un proxy. Il suffit de donner l’adresse du cache apt-cacher-ng et tous les paquets devant être téléchargés depuis le réseau se feront au travers du cache.
Dans mon cas, l’adresse est :

    http://192.168.0.5:3142/

A la fin de l’installation, le fichier /etc/apt/ apt.conf contient :

    yvon@lutig:/etc/apt$ more apt.conf
    Acquire::http::Proxy "http://192.168.0.5:3142/";

Liens