Auteur : Didier Misson
• 18 décembre 2007

Lors d’une installation, ou pour les mises à jour, Debian et Ubuntu se connectent aux dépôts pour télécharger les paquets.

C’est facile et pratique si vous avez un ou deux PC.

Si vous en avez 4 ou 5, ou si vous devez régulièrement faire l’installation de PC clients, cela présente 3 inconvénients :

  • cela prend à chaque installation plusieurs centaines de MB, génant si vous avez un quota mensuel.
  • il faut être connecté… Ce qui peut poser des problèmes pour des Linux Copy Party dans des endroits sans connexion ou avec une connexion lente.
  • ça prend un certain temps… variable… suivant la vitesse de votre connexion et suivant que cette connexion est chargée ou pas (si vous êtes à plusieurs sur cette ligne, ou si quelqu’un fait du peer to peer, ça peut être lent)

APT-CACHER peut apporter une solution, ou une nette amélioration, à ces problèmes ;-)

Quel est le principe d’un proxy APT ? :

  • vous installez ce proxy APT sur un serveur, ou sur un de vos PC
  • c’est cette machine qui va chercher les paquets sur les dépôts Debian ou Ubuntu
  • vos PC clients sont configurés (sources.list) pour s’adresser, non pas aux dépôts habituels, mais à votre serveur apt-proxy
  • le proxy APT vérifie si le paquet demandé est dans son cache, et à jour, sinon il va le chercher dans les dépôts

L’intéret est double :

  • si vous faites plusieurs installations, les paquets restent en cache et ne sont téléchargés qu’une seule fois
  • si le paquet est déjà en cache, votre serveur vous l’envoie sur votre réseau local, nettement plus rapidement que via Internet

Donc, si vous faites des mises à jour ou des installations multiples, après la 1ère, les suivants seront bien plus rapides et sans consommer votre quota.

Plusieurs solutions existent pour faire un cache APT :

  • apt-proxy, le plus connu
  • approx, une amélioration de apt-proxy
  • apt-cacher, lui aussi une amélioration de apt-proxy
  • apt-cacher-ng, une réécriture de apt-cacher, mais qui n’est pas dans Ubuntu 7.10 ni Debian Etch, seulement dans les branches instables.
  • configurer un proxy HTTP normal tel que Squid

J’évite apt-proxy qui semble avoir quelques inconvénients, et apt-cacher-ng qui n’est pas encore inclu dans Debian et Ubuntu stable. J’évite aussi Squid.

Entre apt-cacher et approx, le choix n’est pas du tout évident ! Peu d’articles les comparent…

J’ai malgré tout trouvé cette page de Ealden Escañan, qui, si elle n’est pas récente, me semblait malgré tout intéressante.

Je choisi d’essayer apt-cacher, car il semble être plus simple dans sa configuration de base et il dispose de plus d’options.

L’article écrit par Jonathan Oxer DebianUniverse.com donne de bonnes explications sur l’installation de APT-CACHER.

Comment installer APT-CACHER ?

Comme souvent, il existe déjà un paquet aussi bien en Debian qu’en Ubuntu.
L’installation est classique.

$ sudo aptitude install apt-cacher Lecture des listes de paquets... Fait Construction de l'arbre des dépendances Lecture des informations d'état... Fait Lecture de l'information d'état étendu Initialisation de l'état des paquets... Fait Construction de la base de données des étiquettes... Fait Les NOUVEAUX paquets suivants vont être installés :   apt-cacher 0 paquets mis à jour, 1 nouvellement installés, 0 à enlever et 0 non mis à jour. Il est nécessaire de télécharger 61,2ko d'archives. Après dépaquetage, 291ko seront utilisés. Écriture de l'information d'état étendu... Fait Prendre :1 http://be.archive.ubuntu.com gutsy/universe apt-cacher 1.5.3 [61,2kB] 61,2ko téléchargés en 0s (278ko/s) Sélection du paquet apt-cacher précédemment désélectionné. (Lecture de la base de données... 22754 fichiers et répertoires déjà installés.) Dépaquetage de apt-cacher (à partir de .../apt-cacher_1.5.3_all.deb) ... Paramétrage de apt-cacher (1.5.3) ... Running apt-cacher's install script... Assuming www-data is the user ID used to run apt-cacher Doing mkdir(/var/cache/apt-cacher, 0755) Doing mkdir(/var/log/apt-cacher, 0755) Doing mkdir(/var/cache/apt-cacher/private, 0755) Doing mkdir(/var/cache/apt-cacher/import, 0755) Doing mkdir(/var/cache/apt-cacher/packages, 0755) Doing mkdir(/var/cache/apt-cacher/headers, 0755) Doing mkdir(/var/cache/apt-cacher/temp, 0755) Starting Apt-Cacher: apt-cacher (not enabled in /etc/default/apt-cacher). ...

Par défaut, apt-cacher n’est pas démarré.
Pour le démarrer automatiquement au reboot, il faut modifier une variable dans :

$ sudo vi /etc/default/apt-cacher
# apt-cacher startup configuration file # IMPORTANT: check the apt-cacher.conf file before using apt-cacher as daemon. # set to 1 to start the daemon at boot time AUTOSTART=1 # extra settings to override the ones in apt-cacher.conf # EXTRAOPT=" daemon_port=3142 limit=30 "

Le fichier de configuration de apt-cacher se trouve dans /etc/apt-cacher (original non ?)

$ cd /etc/apt-cacher/ $ ls -l -rw-r--r-- 1 root root  212 2006-06-22 05:42 apache.conf -rw-r--r-- 1 root root 6851 2006-06-22 05:42 apt-cacher.conf -rw-r--r-- 1 root root  357 2006-06-22 05:42 checksumming.conf 

apt-cacher peut fonctionner en mode autonome (daemon) ou dans Apache.
Le mieux est de conserver la configuration le faisant tourner en daemon.

Je n’active pas le “checksumming” pour le moment.

Vérifions la configuration :

$ sudo vi /etc/apt-cacher/apt-cacher.conf

Vérifions quelques lignes :

################################################################# # This is the config file for apt-cacher. On most Debian systems # you can safely leave the defaults alone. ################################################################# # cache_dir is used to set the location of the local cache. This can # become quite large, so make sure it is somewhere with plenty of space. cache_dir=/var/cache/apt-cacher

Aucune raison de changer ce dossier.

# The email address of the administrator is displayed in the info page # and traffic reports. admin_email=root@localhost

Ce n’est pas fondamental si ce serveur est uniquement accessible sur votre réseau local, mais vous pouvez y mettre votre adresse mail, ou celle du Webmaster.

# For the daemon startup settings please edit the file /etc/default/apt-cacher.

C’est déjà activé. ;-)

# Daemon port setting, only useful in stand-alone mode. You need to run the # daemon as root to use privileged ports (<1024). daemon_port=3142

Le port par défaut est le 3142, ce qui me convient très bien. ;-)

# optional settings, user and group to run the daemon as. Make sure they have # sufficient permissions on the cache and log directories. Comment the settings # to run apt-cacher as the native user. group=www-data user=www-data

“www-data” est le userid utilisé par Apache. Nous pouvons conserver “www-data” pour apt-cacher.

# Apt-cacher can generate usage reports every 24 hours if you set this # directive to 1. You can view the reports in a web browser by pointing # to your cache machine with '/apt-cacher/report' on the end, like this: #      http://yourcache.example.com/apt-cacher/report # Generating reports is very fast even with many thousands of logfile # lines, so you can safely turn this on without creating much # additional system load. generate_reports=1

C’est toujours intéressant d’avoir un rapport.
Nous verrons plus tard comment y accéder.

# Use of an external proxy can be turned on or off with this flag. # Value should be either 0 (off) or 1 (on). use_proxy=0 use_proxy_auth=0

Le proxy ici est pour passer à travers un éventuel serveur Proxy.
Par exemple, certaines configurations en entreprises interdisent la sortie sur le Net sauf en passant via un Proxy qui sert alors aussi souvent de filtre pour interdire certaines sites web, et d’anti-virus.
Ce n’est pas notre cas.

Ok, le proxy apt-cacher est presque prêt à être utilisé…

Presque… car son cache est vide !

Si je ne fais rien, ce cache se remplira et tout fonctionnera correctement.
Mais j’ai déjà, à la fois sur le serveur Ubuntu, et sur mon laptop, fait l’installation et des mises à jour.
Des packages ont déjà été téléchargé…
Pourquoi les télécharger à nouveau lors de la prochaine installation ?

Avec APT-CACHER, l’importation de packages existants est assez simple.

Recopier les packages existants depuis le cache APT existant sur votre PC ou votre serveur :

Depuis votre Desktop ou Laptop, pour avoir préchargés tous les packages d’une station de travail (Gnome, Firefox, OOo…), avec un moyen que vous maitrisez (scp, ftp, samba, etc).
Dans mon cas, cela fait 155 paquets et un total de 168 MB (ça représente les mises à jour depuis l’installation depuis le CDR Ubntun 7.10)

Depuis le cache de votre serveur pour avoir en cache tous les packages serveur du genre LAMP, Bind, etc :

$ sudo cp /var/cache/apt/archives/*  /var/cache/apt-cacher/import/

La taille du dossier /var/cache/apt-cacher/import/ est maintenant de 280 MB. Pour inclure ces paquets dans le cache de apt-cacher, il faut entrer la commande :

$ sudo /usr/share/apt-cacher/apt-cacher-import.pl No import directory specified as the first argument, using /var/cache/apt-cacher/import Importing: adduser_3.103ubuntu1_all.deb Importing: alsa-base_1.0.14-1ubuntu2_all.deb Importing: alsa-utils_1.0.14-1ubuntu4_i386.deb Importing: apt-cacher_1.5.3_all.deb Importing: apt-utils_0.7.6ubuntu14_i386.deb Importing: apt_0.7.6ubuntu14_i386.deb Importing: aptitude_0.4.6.1-1ubuntu3_i386.deb ... Importing: wireless-tools_29~pre20-1ubuntu1_i386.deb Importing: wpasupplicant_0.6.0+0.5.8-0ubuntu1_i386.deb Importing: x11-common_7.2-5ubuntu13_i386.deb Importing: xkb-data_0.9-4ubuntu3_all.deb Importing: zlib1g_1.2.3.3.dfsg-5ubuntu2_i386.deb Done. Packages imported: 348

Nous pouvons démarrer apt-cacher.

$ sudo /etc/init.d/apt-cacher start Starting Apt-Cacher: apt-cacher.

La tâche est bien en machine, et si j’essaye un telnet sur le port 3142 depuis un autre PC, le serveur répond.

$ telnet 192.168.168.251 3142 Trying 192.168.168.251... Connected to 192.168.168.251. Escape character is '^]'. help HTTP/1.1 403 Could not understand help Connection closed by foreign host.

Le serveur est là et répond. ;-)

Vous auriez pu aussi, simplement, y accéder avec votre navigateur préféré sur le port 3142 :

http://192.168.1.100:3142/

ou par :

http://192.168.1.100/apt-cacher/

et… surprise… vous voyez là le rapport de fonctionnement de apt-cacher. ;-)

Il reste à modifier le fonctionnement de l’ APT standard, pour passer via le proxy apt-cacher.

Rien n’empêche de configurer le serveur lui-même de cette façon.
Comme cela, ses propres mises à jour participeront aussi au remplissage du cache du proxy, et consommeront moins de bande passante.

$ sudo vi /etc/apt/sources.list

Pour faire passer les accès aux dépôts par le proxy apt-cacher, il suffit de faire précéder les références des dépôts HTTP par “ip-adresse:3142″ (ou le nom de votre serveur si vous avez un DNS sur votre Lan) :

deb http://be.archive.ubuntu.com/ubuntu/ gutsy main restricted deb-src http://be.archive.ubuntu.com/ubuntu/ gutsy main restricted

Utilisez une commande change en VI du genre : :%s!be.archive.!127.0.0.1/apt-cacher/be.archive.!g Si vous utilisez un autre éditeur, changer la commande en fonction, ou éditer manuellement les lignes.

Vous devez ajouter en début des lignes http : “127.0.0.1/apt-cacher” ou “127.0.0.1:3142″ Cela donne des lignes du genre :

deb http://127.0.0.1/apt-cacher/be.archive.ubuntu.com/ubuntu/ gutsy main restricted deb-src http://127.0.0.1/apt-cacher/be.archive.ubuntu.com/ubuntu/ gutsy main restricted

Ne pas oublier les dépôts “security” :

:%s!security.ubuntu!127.0.0.1/apt-cacher/security.ubuntu!g
 deb http://127.0.0.1/apt-cacher/security.ubuntu.com/ubuntu gutsy-security main restricted deb-src http://127.0.0.1/apt-cacher/security.ubuntu.com/ubuntu gutsy-security main restricted deb http://127.0.0.1/apt-cacher/security.ubuntu.com/ubuntu gutsy-security universe deb-src http://127.0.0.1/apt-cacher/security.ubuntu.com/ubuntu gutsy-security universe deb http://127.0.0.1/apt-cacher/security.ubuntu.com/ubuntu gutsy-security multiverse deb-src http://127.0.0.1/apt-cacher/security.ubuntu.com/ubuntu gutsy-security multiverse

Pour un autre PC, il faut évidemment spécifier l’adresse IP ou le nom de votre serveur et pas 127.0.0.1 ;-)

deb http://192.168.1.100/apt-cacher/be.archive.ubuntu.com/pub/ubuntu.com/ubuntu/ gutsy main restricted universe multiverse deb-src http://192.168.1.100/apt-cacher/be.archive.ubuntu.com/pub/ubuntu.com/ubuntu/ gutsy main restricted universe multiverse

Ensuite, tout devrait aller comme d’habitude :

$ sudo aptitude update [sudo] password for didier: Prendre :1 http://127.0.0.1 gutsy Release.gpg [191B] Ign http://127.0.0.1 gutsy/main Translation-fr Ign http://127.0.0.1 gutsy/restricted Translation-fr Ign http://127.0.0.1 gutsy/universe Translation-fr Ign http://127.0.0.1 gutsy/multiverse Translation-fr Prendre :2 http://127.0.0.1 gutsy-updates Release.gpg [191B] Ign http://127.0.0.1 gutsy-updates/main Translation-fr ...

J’ai essayé “sudo aptitude dist-upgrade” … mais mon système était déjà à jour.
Ce sera pour une prochaine fois ;-)
et de toute façon, j’ai un PC à réinstaller et 2 autres en Ubuntu 6.10 à upgrader.

Je viens de réinstaller un PC en Ubuntu 7.10.

En fin d’installation, AVANT le reboot, j’ai modifié le fichier /etc/apt/sources.list

Attention, on est encore sur le Live-CD. Il faut pointer vers target.

J’ai fait un remplacement en VI :

sudo vi /target/etc/fstab
:%s!http://!http://192.168.1.100/apt-cacher/!g

Et j’ai seulement rebooté ensuite

Je n’ai pas vraiment gagné de temps, mais c’est la première installation que je fais depuis que j’ai activé apt-cacher, donc probablement que très peu de paquets étaient déjà en cache.

Par contre, je viens sur un autre PC d’installer VIM.
Je l’avais déjà installé avant sur le PC que je venais de réinstaller…

Et bien, là, la différence est flagrante :

sudo aptitude install gim ... Prendre :1 http://192.168.1.100 gusty/main vim-runtime 1:7.1-0.56+2ubuntu2 [5471kB] Prendre :1 http://192.168.1.100 gusty/main vim 1:7.1-0.56+2ubuntu2 [746kB] téléchargés en 1 s (5194ko/s)

Joli !
Ce sont des KBytes, donc ça fait plus de 41 Mbits / sec

Comparé à mon ADSL qui est en 6400 Kbits / sec (vitesse physique ATM, en vitesse “data”, c’est moins)

Je vais dans les prochains jours encore réinstaller un autre PC Ubuntu.
Je mettrai à jour ce billet pour indiquer mes impressions niveau vitesse ;-)

Mise à jour le 22 décembre 2007 : Pour le moment, tout se passe normalement.
Mon desktop Ubuntu 7.10 détecte automatiquement et installe correctement les mises à jour. ;-)

Catégorie: Serveurs | Tags : , , ,
Vous pouvez suivre toutes les réponses à à ce billet via le flux RSS 2.0. Vous pouvez laisser une réponse, ou un rétrolien depuis votre propre site.

2 réponses

  1. 1
    tux 
    9 février 2008

    Salut,
    > Je n’active pas le "checksumming" pour le moment.
    je viens de tester sous une debian etch, pour le chechsum :
    1) il faut installer libdbd-sqlite3-perl

    2) editer le fichier /etc/apt-cacher/checksumming.conf et enlever le commentaire devant :
    require ‘/usr/share/apt-cacher/apt-cacher-lib-cs.pl’;

    3) et je pense qu’il faut commançer avec un /var/cache/apt-cacher/ d’origine, donc vide de paquet…

    4) starter apt-cacher et essayer un apt-get update…

    Bon cache !

  1. [...] : je me complique la tâche, car j’utilise en fait “apt-cacher” qui est un cache local sur … ce serveur lui-même [...]

Laisser un commentaire