Apt-cacher-ng
Installation, configuration et utilisation de apt-cacher-ng (ac-ng)
Mis à jour pour Stretch!
Introduction
Acng est un "dépôt cache" de paquets Debian
Avantages :
- Très simple à installer;
- Utilisable par toutes les distributions à base de Debian;
- Accessible depuis tout le réseau.
- Votre dépôt ne contient que les paquets dont vous avez besoin (contrairement à un dépôt miroir)
Inconvénient :
- Votre dépôt cache peut devenir très important, en fonction du nombre de distribution / branches que vous maintenez
"Ac-ng" fonctionne de manière très simple. Quand une machine sur le réseau installe un paquet, "ac-ng" le "capte" et le copie dans son "cache". Il est ainsi ensuite disponible pour toutes les autres machines du réseau, à la vitesse du réseau local :D
Pas besoin d'avoir un réseau de taille démesuré pour avoir besoin de "ac-ng"... Une mauvaise connexion le justifie, l'envie de réinstaller rapidement en cas de crash, si vous testez souvent dans des machines virtuelles... Simplement vouloir éviter de saturer sa bande passante avec du téléchargement de paquets.
Il fonctionne sans proxy installé, puisque lui-même fonctionne comme un proxy. Si vous avez un proxy sur votre système, déclarerez-le dans votre configuration, il sera prit en compte.
Installation
Il n'y a pas plus simple...
# apt install apt-cacher-ng
Dépendance en Stretch:
Pre-Depends: dpkg (>= 1.15.6) Depends: libbz2-1.0, libc6 (>= 2.22), libgcc1 (>= 1:3.3.1), liblzma5 (>= 5.1.1alpha+20120614), libssl1.1 (>= 1.1.0), li$ Suggests: doc-base, libfuse2 (>= 2.5), avahi-daemon Conflicts: logrotate (<< 3.8.0)
Configurer le serveur
Un seul fichier à modifier : /etc/apt-cacher-ng/acng.conf
# L'emplacement par défaut est /var/cache/apt-cacher-ng J'ai choisi un autre emplacement sur une partition LVM CacheDir: /mnt/192.168.0.2/cache/apt-cacher-ng # L'emplacement des logs LogDir: /var/log/apt-cacher-ng # Le port par défaut est 3142 (N'oubliez pas d'ouvrir le pare feu). # En choisissant le port 9999 vous émulez un "apt-proxy", les machines de votre réseau local détecterons plus facilement le cache # TCP (http) port # Set to 9999 to emulate apt-proxy #Port:3142 Port:9999 # Vous pouvez décommenter et choisir les interface ou acng écoute. Si vous laissez commenté acng écoutera sur toutes les interfaces BindAddress: localhost 192.168.0.1 # Pour plus de sécurité, réserver l'utilisation à son réseau local, mais rien n'empêche d'étendre...
... Remap-debrep: file:deb_mirror*.gz /debian ; file:backends_debian # Debian Archives ... Remap-gentoo: file:gentoo_mirrors.gz /gentoo ; file:backends_gentoo # Gentoo Archives ...
VerboseLog: 1 ReportPage: acng-report.html # Proxy: Si vous n'avez pas de proxy sur votre réseau, ne mettez rien Proxy: http://192.168.0.254:3128 ExTreshold: 4
Concernant la commande Remap... Elle permet de mettre un peu d'ordre dans vos dépôts. Voir plus bas.
Voici ce que ça donne :
laurent@spider:/mnt/192.168.0.2/cache/apt-cacher-ng$ ls -lh total 4,5M drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 26 2009 archive.canonical.com drwxr-sr-x 4 apt-cacher-ng apt-cacher-ng 4,0K nov 18 10:27 boisson.homeip.net drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 29 2009 changelogs.ubuntu.com drwxr-sr-x 4 apt-cacher-ng apt-cacher-ng 4,0K sep 23 2009 debian drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K nov 4 11:23 debian.med.univ-tours.fr drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 23 2009 deb.opera.com drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 23 2009 dl.google.com drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K fév 8 17:43 download.tuxfamily.org drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 25 2009 download.virtualbox.org drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 23 2009 download.webmin.com drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K oct 9 14:26 eeepc.debian.net -rw-r--r-- 1 apt-cacher-ng apt-cacher-ng 0 mar 15 06:49 _expending_dat -rwxr-xr-x 1 apt-cacher-ng apt-cacher-ng 1,4M mar 27 07:32 _impkeycache drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 3,1M mar 27 07:32 _import drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K oct 21 08:07 packages.debian.org drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 26 2009 packages.enlightenment.org drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K mar 28 20:56 packages.medibuntu.org drwxr-sr-x 5 apt-cacher-ng apt-cacher-ng 4,0K mar 27 07:04 ppa.launchpad.net drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 23 2009 repo.palatinus.cz drwxr-sr-x 4 apt-cacher-ng apt-cacher-ng 4,0K mar 27 18:17 repos.eeebuntu.org drwxr-sr-x 4 apt-cacher-ng apt-cacher-ng 4,0K sep 24 2009 security.debian.org drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 28 2009 security.ubuntu.com drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K nov 11 15:17 sidux.com drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K jan 10 08:27 sidux.office-vienna.at drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K nov 11 06:45 talweg.univ-metz.fr drwxr-sr-x 4 apt-cacher-ng apt-cacher-ng 4,0K sep 26 2009 uburep drwxr-sr-x 2 apt-cacher-ng apt-cacher-ng 4,0K oct 1 12:04 volatile.debian.org drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K jan 8 11:46 w3you.com drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 24 2009 www.backports.org drwxr-sr-x 4 apt-cacher-ng apt-cacher-ng 4,0K sep 23 2009 www.debian-multimedia.org drwxr-sr-x 3 apt-cacher-ng apt-cacher-ng 4,0K sep 26 2009 www.lamaresh.net
En utilisant l'option Remap ac-ng va créer des sous-répertoires (Debian, Ubuntu...) qui servent à centraliser les mêmes dépôts issus de sites miroirs. Cela évite les dépôts "doublons".
Ensuite, vous pouvez faire un lien symbolique de /mnt/192.168.0.2/cache/apt-cacher-ng vers /var/www/apt-cacher-ng pour avoir un accès avec un serveur apache2/httpd (vous pouvez ainsi naviguer dans le dépôt depuis n'importe quelle machine du réseau). C'est juste un petit "gadget" en plus, aucune utilité réelle...
Configuration client
Il suffit de créer le fichier /etc/apt/apt.conf.d/01acng pour qu'il ressemble à ça:
Acquire::http { Proxy "http://192.168.0.1:9999"; };
Edit : Pour ceux qui utilisent apt-listbugs, ajouter cette ligne EN PREMIER dans apt.conf:
Acquire::http::Proxy::bugs.debian.org "DIRECT";
En effet apt-listbugs à du mal à passer au travers de apt-cacher-ng... Cela provoque des erreurs indésirables lors des mises à jour.
Il y a une deuxième solution qui consiste à modifier tous les sources.list, mais c'est moins simple... Il suffit de modifier les fichiers sources.list des clients et d'ajouter l'url du serveur apt-cacher-ng à chaque ligne.
deb http://<IP:Port>/url/repertoire main
Par exemple:
deb http://192.168.0.1:9999/deb.debian.org/debian/ stretch main contrib non-free #deb-src http://192.168.0.1:9999/deb.debian.org/debian/ jessie main deb http://192.168.0.1:9999/security.debian.org/ stretch/updates main contrib non-free #deb-src http://192.168.0.1:9999/security.debian.org/ jessie/updates main deb http://192.168.0.1:9999/deb.debian.org/debian/ stretch-updates main contrib non-free #deb-src http://192.168.0.1:9999/deb.debian.org/debian/ jessie-updates main deb http://192.168.0.1:9999/deb.debian.org/debian/ stretch-proposed-updates main contrib non-free #deb-src http://192.168.0.1:9999/deb.debian.org/debian/ stretch-proposed-updates main contrib non-free
C'est d'ailleurs ce à quoi ressemblera votre sources.list si vous spécifiez le cache acng à l'installeur à la première installation.
Pensez aussi à changer le fichier /etc/apt/apt.conf.d/01acng du serveur acng pour qu'il participe lui aussi à la maintenance de votre dépôt !
Utilisation du cache avec l'installeur Debian
Bien entendu, lorsque vous installez une nouvelle Debain, en configurant un proxy au moment de la configuration de l'outil de gestion des paquets vous profitez de votre cache...
Truc pour les PC nomades ou si votre cache n'est pas actif en permanence
Si vous utilisez un portable et n'êtes pas toujours dans le réseau ou se trouve acng, ça peut être emmerdant: Il faudra modifier votre conf... Voici un truc pour ne pas avoir à le faire:
Prérequis:
# apt install -y netcat
Créez le fichier
$editor /etc/apt/detect_proxy.sh
Avec ce contenu:
#!/bin/bash proxy=192.168.0.1 nc -zw1 $proxy 9999 && echo http://$proxy:9999/ || echo DIRECT
Et rendez le exécutable:
# chmod +x /etc/apt/detect_proxy.sh
Créez ensuite votre fichier /etc/apt/apt.conf.d/01acng pour qu'il ressemble à ceci:
Acquire::http::Proxy-Auto-Detect "/etc/apt/detect_proxy.sh";
Ainsi à chaque fois qu'apt est appelé, le script vérifie si apt-cacher-ng est accessible ou pas. Si oui, il passe par le cache, si non il sort directement sur le net sans passer par le proxy.
Voici un autre script qui vous permettra d'utiliser plusieurs proxy apt en fonction du réseau sur lequel vous êtes (très pratique pour un réseau ou il y a plusieurs serveurs apt-cacher-ng ou si vous changez souvent de réseau): Il suffira de remplacer le contenu du script /etc/apt/detect_proxy.sh par celui-ci:
#!/bin/bash try_proxies=( 10.10.10.2:9999 10.11.12.251:9999 ) for proxy in "${try_proxies[@]}"; do if nc -z ${proxy/:/ }; then proxy=http://$proxy/ echo "$proxy" exit fi done echo DIRECT
Vous pouvez ajouter autant de proxy que vous le souhaitez.
Importation de paquets déjà téléchargés ou présents sur vos DVD :
cd /mnt/192.168.0.2/cache mkdir apt-cacher-ng/_import
Copiez vos fichiers deb dans le cache (/mnt/192.168.0.2/cache/apt-cacher-ng/_import)
chown -R apt-cacher-ng apt-cacher-ng/_import
Faire un apt-get update sur tous les clients et sur le serveur
Puis ouvrir l'interface web de apt-cacher-ng "http://192.168.0.1:9999/acng-report.html" et cliquer simplement sur "start import". Il va copier les deb à jour dans les bons dépôts du cache local
Exemple d'utilisation des "backends" :
Un fichier «Backend» est un fichier texte contenant une liste d'URLs mirroirs, un par ligne.
Utilisation d'un fichier backends pour les dépôts multimedia. Dans /etc/apt-cacher-ng/acng.conf ajoutez cette ligne :
Remap-marillat: file:backends_marillat /debian-multimedia
Création du fichier contenant les url :
# nano /etc/apt-cacher-ng/backends_marillat
http://www.debian-multimedia.org ftp://ftp.debian-multimedia.org http://mirror.optus.net/debian-multimedia/ http://mirror.home-dn.net/debian-multimedia http://debian-multimedia.gnali.org http://debian-multimedia.informatik.uni-erlangen.de/debian-multimedia http://mi.mirror.garr.it/mirrors/debian-multimedia http://mirror.yandex.ru/debian-multimedia/ http://ftp.sunet.se/pub/os/Linux/distributions/debian-multimedia http://ftp.tw.debian.org/debian-multimedia/
Redémarrez acng :
# service apt-cacher-ng restart
Faites un apt-get update avec un client qui contient une dépôt multimédia dans son sources.list. Un nouveau répertoire est maintenant créé dans CacheDir : /marillat
L'avantage est énorme, il permet en cas de défection d'un dépôt de pouvoir continuer à faire ses mise-à-jour sans avoir besoin de changer tous les sources.list de vos "clients"...
Entretien de la base
Afin de ne pas avoir au bout de quelques mois un cache démesuré, surtout si des machines en SID traînent sur votre réseau, penser à la nettoyer de temps-en-temps... interface web de apt-cacher-ng "http://192.168.0.1:9999/acng-report.html" + "start expiration" Cela efface tous les paquets devenus obsolètes !
Pour protéger votre interface Web et avoir l'autorisation de purger/effacer des fichiers, il est nécessaire de configurer l'autorisation dans le fichier: /etc/apt-cacher-ng/security.conf
#AdminAuth: mooma:moopa AdminAuth: utilisateur:motdepasseblinde
Suivi de:
service apt-cacher-ng restart [ ok ] Restarting apt-cacher-ng: apt-cacher-ng.
Pour conclure
N'oubliez pas d'ouvrir sur le serveur le port du pare-feu (ici 9999) pour que les machines du réseau puissent accéder à ac-ng... :wink:
Pensez à uniformiser les sources.list des vos différentes machines, vous gagnerez du temps de connexion !
Grâce à ce serveur j'installe une Lenny avec debootstrap en une minute et 8 secondes...
J'ai remarqué que parfois des blocages arrivaient au niveau des clients pendant le téléchargement de paquets. C'est réglé par un simple redémarrage de ac-ng
laurent@spider:/mnt/192.168.0.2/cache/apt-cacher-ng$ sudo /etc/init.d/apt-cacher-ng restart Restarting apt-cacher-ng: apt-cacher-ng.
Dernière information... La taille du cache !
Le mien :
$ du -sh apt-cacher-ng/ 43G apt-cacher-ng/
43 Go après 6 mois d'utilisation. Maintien de Etch (32bits), Lenny (32 et 64bits), Squeeze (64bits), Sid (64bits), Sidux (32 et 64 bits), Ubuntu et Kubuntu 9.10 (32 et 64 bits)... C'est raisonnable (l'équivalent d'une dizaine de DVD)...
--Lol 1 avril 2010 à 09:10 (UTC) - Mise à jour le 23/02/2017