Looking for Computer Science  & Information Technology online courses ?
Check my new web site: https://www.yesik.it !

Il y a quelques semaines, j'ai installé apt-proxy afin de mettre en cache les paquets Debian utilisés lors de la mise à jour de mes machines. Mais apt-proxy m'a quelque peu déçu. En particulier parce qu'il ne semble pas capable de réprendre un téléchargement interrompu. Ce qui est particulièrement pénalisant pour les gros paquets (linux-kernel ou sun-java6-jdk, par exemple).

J'ai donc décidé de chercher un autre mandataire (proxy) APT. Mon choix s'est porté cette fois sur apt-cacher-ng et voici comment je l'ai installé.

Installation

Comme souvent sous Debian, l'installation à proprement parler est des plus triviales:

sh# apt-get install apt-cacher-ng

Configuration

En ce qui concerne la configuration de apt-cacher-ng, j'ai pris l'option d'assurer un maximum de compatibilité avec apt-proxy. Ce qui m'a évité de faire le tour de mes machines pour en modifier la configuration locale. J'ai donc modifié le fichier /etc/apt-cacher-ng/acng.conf pour utiliser le port 9999 plutôt que le port par défaut 3142:

# TCP (http) port
# Set to 9999 to emulate apt-proxy
Port:9999
# Port:3142

Ensuite, compatibilité ou pas, il va falloir définir les backends. C'est à dire les serveurs à contacter pour télécharger les paquets. Toujours dans le fichier /etc/apt-cacher-ng/acng.conf, j'ai ajouté les lignes suivantes:

Remap-debian: /debian/ ; http://ftp.fr.debian.org/debian/
Remap-debian: /debian/ ; http://ftp.de.debian.org/debian/
Remap-security: /security/ ; http://security.debian.org/debian-security
Remap-security: /security/ ; http://ftp2.de.debian.org/debian-security
Remap-backports: /backports.org/ ; http://ftp.de.debian.org/backports.org
Remap-backports: /backports.org/ ; http://backports.org/debian

Ces directives vont indiquer à apt-cacher-ng de faire correspondre (remap) les requêtes des clients pour les répertoires /debian/, /security/ et /backports.org/ avec les serveur indiqués.

Et bien sûr, il ne faut pas oublier de redémarrer le serveur mandataire après tout changement de la configuration:

sh# /etc/init.d/apt-cacher-ng restart
Restarting apt-cacher-ng: apt-cacher-ng.

Configuration des clients

Comme vous vous en doutez si vous êtes familiers de APT, la configuration des clients se fait dans le fichier /etc/apt/sources.list. Il faut désigner votre serveur mandataire comme source pour tous vos clients. Sur ma configuration, ceci se traduit par les lignes suivantes (où 10.129.36.102 est l'adresse IPv4 de mon proxy):

deb http://10.129.36.102:9999/debian etch main non-free
deb-src http://10.129.36.102:9999/debian etch main non-free

deb http://10.129.36.102:9999/security lenny/updates main contrib
deb-src http://10.129.36.102:9999/security lenny/updates main contrib

deb http://10.129.36.102:9999/debian lenny main non-free
deb-src http://10.129.36.102:9999/debian lenny main non-free

deb http://10.129.36.102:9999/backports.org lenny-backports main non-free
deb-src http://10.129.36.102:9999/backports.org lenny-backports main non-free

Note:

La configuration est à faire sur toutes vos machines. Y compris le proxy lui-même!

Voilà: c'est fini. Après quelques jours d'usage, apt-cacher-ng me semble tout aussi stable (voir plus) que apt-proxy. et surtout, il sait reprendre un gros téléchargement interrompu! Un must si comme moi vous utilisez une liaison internet peu fiable...

Alternative

De façon alternative (et quelque peu plus élégante) vous pouvez aussi configurer vos clients en laissant dans /etc/apt/sources.list les URL des dépôts standards, mais en modifiant (ou créant) le fichier /etc/apt/apt.conf pour indiquer que vous utilisez un proxy:

# /etc/apt/sources.list contient les URLs habituelles des dépôts:
sh# grep "^deb" /etc/apt/sources.list
deb http://ftp.de.debian.org/debian lenny main 
deb-src http://ftp.de.debian.org/debian lenny main 
deb http://ftp.de.debian.org/debian lenny non-free 
deb-src http://ftp.de.debian.org/debian lenny non-free 
deb http://ftp.de.debian.org/debian lenny contrib 
deb http://security.debian.org/ lenny/updates main contrib
deb-src http://security.debian.org/ lenny/updates main contrib

# Mais on indique explicitement vouloir utiliser un proxy:
sh# echo 'Acquire::http::Proxy "http://10.129.36.102:9999";' >> /etc/apt/apt.conf

Imports

Pour terminer, encore une section liée au fait que j'avais déjà installé un autre proxy APT. Ainsi, je souhaitais pouvoir récupérer les paquets déjà mis en cache par apt-proxy. Histoire d'éviter d'avoir à les re-télécharger lors du passage à apt-cacher-ng. Heureusement, celui-ci prévoit l'import de paquets. Tout d'abord, il faut copier (ou faire un lien vers) les paquets à récupérer dans le dossier d'importation _import:

sh# apt-get update # Important pour mettre à jour les meta-informations maintenues par apt-cacher-ng
sh# mkdir /var/cache/apt-cacher-ng/_import
sh# find  /path/to/deb-files/ -name '*.deb' -exec cp -lf \{} /var/cache/apt-cacher-ng/_import/ \;
sh# chmod +r /var/cache/apt-cacher-ng/_import/* # pour que apt-cacher-ng puisse lire les paquets...

Ensuite, le lancement de l'importation se fait via l'interface web de apt-cacher-ng: Il faut donc se connecter à http://10.129.36.102:9999/acng-report.html (où 10.129.36.102 est l'adresse de mon serveur mandataire). Puis cliquer sur "Start Import".

Une fois l'opération terminée, le répertoire _import ne sert plus. Vous pouvez le supprimer:

sh# rm -rf /var/cache/apt-cacher-ng/_import