Samedi dernier, dans le cadre de l'install party à la bibliothèque municipale d'Anglet (64), nous avons été amenés à mettre en place un mandataire (proxy) apt-proxy.

Lorsque l'on a, sur un réseau, plusieurs machines avec la même version de Debian (par exemple Sarge), il est profitable de pouvoir centraliser la récupération des paquets, afin de ne les télécharger en local qu'une seule fois, et par là même, d'économiser de la bande passante sur les serveurs Debian.

Pour ce faire, le mandataire apt-proxy permet de mettre en cache les paquets Debian, et de construire un miroir partiel contenant tous les paquets utilisés par les machines du réseau. Seule la première machine qui installe un package donné provoque un téléchargement sur Internet, le mandataire fournissant lui même ensuite ce dont il dipose déjà aux autres machines qui le demandent. Cette méthode a l'avantage de réduire les accès à Internet depuis votre réseau interne, et surtout améliore grandement la rapidité de téléchargement coté client.

Coté serveur

Coté serveur, il nous suffit d'installer le paquet apt-proxy :

# apt-get install apt-proxy

puis d'éditer le fichier /etc/apt-proxy/apt-proxy-v2.conf afin d'y configurer le répertoire dans lequels seront stockés les paquets (par défaut : /var/cache/apt-proxy/), le port (par défaut : 9999), ainsi que les sources des dépots Debian, par exemple :

[debian]
backends = http://ftp.fr.debian.org/debian
[security]
backends = http://security.debian.org/debian-security
[backports]
backends = http://backports.org/debian
[dotdeb]
backends = http://packages.dotdeb.org

Il ne faut pas oublier de redémarrer apt-proxy pour qu'il prenne bien en compte les changements :

# /etc/init.d/apt-proxy restart

Coté client

Coté client, il nous faut juste modifier le fichier /etc/apt/sources.list, afin de faire pointer les sources sur le serveur mandataire, en remplaçant le nom d'hôte par le nom du mandataire, auquel on rajoute les noms de sections ci-dessus en tant que répertoires, de la façon suivante :

# Stable
deb http://SERVEUR:9999/debian/ stable main contrib
deb http://SERVEUR:9999/debian/ stable-proposed-updates main contrib
# Security
deb http://SERVEUR:9999/security/ stable/updates main contrib
# Dotdeb.org (LAMP Platform)
deb http://SERVEUR:9999/dotdeb/ stable all
# Backports Sarge
deb http://SERVEUR:9999/backports/ sarge-backports main

Il ne faut pas oublier d'effectuer aussi cette manipulation sur la machine qui sert de mandataire (le serveur lui même), afin qu'APT n'outrepasse pas le système en place !

Pour peaufiner l'installation, on peut éventuellement rajouter une entrée dans la crontab, pour effacer tous les soirs les paquets récupérés en local à l'aide de la commande "apt-get clean"

Suite à l'install party, j'ai découvert qu'Aurélien en parlait dans son Mémento pour l'installation d'un mandataire apt, pour une configuration réseau à peu près identique.