Apt-cacher-ng

De Le Wiki du Forum-Debian.fr
Aller à la navigation Aller à la recherche

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