apt-cacher-ng le proxy-cache de paquets pour un LAN
Apt-cacher-ng (ou plus familièrement acng) est un proxy-cache de paquets Debian (fichiers .deb).
Tout est parfaitement expliqué ici en détail.
En résumé et en prenant en compte les paquets spécifiques à LinuxMint :
Sur le serveur local
Par la suite, il est convenu que ce serveur tourne sous Debian.
Installation
Rien de plus simple :
sudo apt install apt-cacher-ng debdelta ca-certificates
Miroirs de Linux Mint
Vous devez installer le paquet mint-mirrors
, sans dépendances (aucun autre paquet ne sera installé), qui contient la liste des miroirs de téléchargement pour les paquets spécifiques à Linux Mint.
Vérifiez à l'aide votre navigateur, en visitant la page https://linux-mint.froonix.org/pool/main/m/mint-mirrors/, que la dernière version du paquet mint-mirrors
est bien la 1.2.6
. Si ce n'est pas le cas, adaptez la deuxième des lignes de commandes suivantes :
cd export MMV=1.2.6 wget https://linux-mint.froonix.org/pool/main/m/mint-mirrors/mint-mirrors_${MMV}_all.deb sudo dpkg -i mint-mirrors_${MMV}_all.deb rm -f mint-mirrors_${MMV}_all.deb
Créez un fichier mint_mirrors
, identique au fichier /usr/share/mint-mirrors/linuxmint.list
mais débarrassé de toutes les lignes de commentaires (commençant par un #) qui seraient mal interprétées par apt-cacher-ng :
grep -vE '^#' /usr/share/mint-mirrors/linuxmint.list | awk '{print $1}' > mint_mirrors
Copiez ensuite le fichier mint_mirrors
créé précédemment dans le dossier /usr/lib/apt-cacher-ng/
du serveur :
sudo cp mint_mirrors /usr/lib/apt-cacher-ng/
Connaître l'IP de votre serveur
Pour connaître l'IPv4 de votre serveur :
ip a | grep -A 1 -B 1 ether | grep inet | awk '{print $2}' | tr "/" " " | awk '{print $1}'
La réponse est un ensemble de 4 nombres compris entre 0 et 255, séparés par des points.
Pour connaître l'IPv6 de votre serveur (si votre réseau fonctionne en IPv6 exclusivement) :
ip a | grep -A 3 -B 1 ether | grep inet6 | awk '{print $2}' | tr "/" " " | awk '{print $1}'
La réponse est un ensemble de 8 nombres hexadécimaux, séparés par des :
.
L'IP que vous choisirez (généralement l'IPv4) sera celle que vous indiquerez ci-après à la place de IP_DU_SERVEUR.
Configuration
Éditer avec les droits root le fichier de configuration /etc/apt-cacher-ng/acng.conf
.
Vérifier et dé-commenter les lignes suivantes, en supprimant l'éventuel #
qui les débuterait. Modifier la ligne commençant par BindAddress ; créer la ligne commençant par Remap-mint.
CacheDir: /var/cache/apt-cacher-ng LogDir: /var/log/apt-cacher-ng SupportDir: /usr/lib/apt-cacher-ng Port:3142 BindAddress: localhost IP_DU_SERVEUR Remap-debrep: file:deb_mirror*.gz /debian ; file:backends_debian # Debian Archives Remap-uburep: file:ubuntu_mirrors /ubuntu ; file:backends_ubuntu # Ubuntu Archives [... Commenter les lignes Remap qui ne vous concernent pas ...] Remap-secdeb: security.debian.org security.debian.org/debian-security deb.debian.org/debian-security /debian-security ; deb.debian.org/debian-security security.debian.org Remap-mint: file:mint_mirrors /linuxmint # Linux Mint ReportPage: acng-report.html ExThreshold: 4 FollowIndexFileRemoval: 1 VfilePatternEx: .*(\.xz)$ SVfilePatternEx: .*(\.xz)$ LocalDirs: acng-doc /usr/share/doc/apt-cacher-ng
Relancer le service apt-cacher-ng
sudo systemctl restart apt-cacher-ng.service
Pour vérifier que ce service fonctionne bien :
sudo systemctl status apt-cacher-ng.service
Dans la réponse à cette commande doit apparaître : Active: active (running) since …
. Quitter en pressant la touche [Q].
Connaître la taille de votre cache
Sur le serveur :
du -sh /var/cache/apt-cacher-ng/
Consulter les logs
Sur le serveur, cette commande donne la liste des logs, du plus récent au plus ancien :
ls -lth /var/log/apt-cacher-ng/
Pre-chaching (optionnel)
Le pre-caching consiste à vérifier régulièrement (par exemple chaque heure) si des mises à jour de paquets sont disponibles et, si tel est le cas, de les télécharger sur le serveur afin de les rendre disponibles immédiatement. Ainsi, même le premier de vos ordinateurs qui demandera une mise à jour l'obtiendra à la vitesse du réseau local, ce qui est très appréciable.
Préparation
Il s'agit de décider quelles mises à jour seront vérifiées et pré-téléchargées.
Sur le serveur :
cd /var/cache/apt-cacher-ng/ ls -d */ | egrep -v ^_
La liste des caches s'affiche. Par exemple :
archive.canonical.com/ debrep/ live.linuxmint.com/ mint/ ports.ubuntu.com/ ppa.launchpad.net/ security.ubuntu.com/ uburep/
Supposons que vous soyez intéressé par les mises à jour de mint
, de security.ubuntu.com
et d' uburep
.
Listez les contenus des sous-dossiers dists
de chacun de ces dossiers, ou de sous-dossiers. Par exemple :
ls mint/dists/ security.ubuntu.com/ubuntu/dists/ uburep/dists/
Exemple de retour :
mint/dists/: uma una vanessa security.ubuntu.com/ubuntu/dists/: focal-security jammy-security uburep/dists/: focal focal-backports focal-updates jammy jammy-backports jammy-updates
La version uma
de Mint étant plus ancienne que les distributions una
et vanessa
, on peut choisir de l'ignorer.
Modifiez alors, avec les droits root, le fichier /etc/apt-cacher-ng/acng.conf
; recherchez-y la ligne commençant par # PrecacheFor: et remplacez-la par :
PrecacheFor: mint/dists/vanessa/*/binary-amd64/Packages* mint/dists/vera/*/binary-amd64/Packages* mint/dists/victoria/*/binary-amd64/Packages* security.ubuntu.com/ubuntu/dists/jammy-security/*/binary-amd64/Packages* uburep/dists/jammy*/*/binary-amd64/Packages*
Remarque : L'étoile après focal
permet de prendre en compte tous les dossiers commençant par focal, à savoir : focal
, focal-backports
et focal-updates
.
Une fois cette modification effectuée, relancez le service apt-cacher-ng :
sudo systemctl restart apt-cacher-ng.service
Effectuer un premier pre-caching manuel
Visitez avec un navigateur (à partir d'un de vos ordinateurs) la page : http://IP_DU_SERVEUR:3142/acng-report.html
Rendez-vous à la section Guided precaching (Mirroring) de cette page. Cochez-y les 3 premières cases, à savoir :
- Calculate and display download size (Calculer et afficher la taille du téléchargement)
- Download package files (initialement décochée) (Télécharger les paquets)
- Restrict to packages related to previously cached files (Restreindre aux paquets déjà en cache)
Cliquez alors sur le bouton [Start Mirroring].
La page suivante met du temps à se télécharger. Elle vous indique pas à pas les actions effectuées. Une fois complètement affichée, votre cache est à jour.
Automatiser le pre-caching
S'il fallait toujours effectuer manuellement un pre-caching pour mettre à disposition de tous vos ordinateurs la dernière version des paquets, cela perdrait vite de son intérêt.
Pour automatiser ce pre-caching et l'effectuer chaque heure, créez tout d'abord sur le serveur et avec les droits root le script /etc/cron.hourly/acng-mirroring
contenant :
#!/bin/sh wget "http://localhost:3142/acng-report.html?calcSize=cs&doDownload=dd&asNeeded=an&doMirror=Start+Mirroring" -o /dev/null exit 0
Rendez ce script exécutable :
sudo chmod +x /etc/cron.hourly/acng-mirroring
Relancez le service cron :
sudo systemctl restart cron.service
C'est fait !
Sur chaque ordinateur du réseau local
Installer netcat
apt install -y netcat
Cela permet d'utiliser dans les scripts la commande nc
afin de déterminer si le serveur est ou n'est pas disponible.
Configuration d'apt
apt
va être configuré de façon à utiliser votre serveur local dès lors que celui-ci est disponible. Si ce n'était pas le cas (ordinateur portable parfois utilisé en-dehors de votre réseau local), les mises à jour de paquets pourraient tout de même s'effectuer.
Créez avec les droits root le script /etc/apt/proxy_auto.sh
contenant :
#!/bin/bash # Renseigner correctement les deux lignes suivantes. proxy=IP_DU_SERVEUR port=3142 # Ne rien modifier ci-dessous. synconf=/root/.synaptic/synaptic.conf nc -zw1 $proxy $port && { [[ -f $synconf ]] && { cat $synconf | sed s/useProxy\ \"0\"\;/useProxy\ \"1\"\;/g > $synconf.NEW && mv -f $synconf.NEW $synconf } echo http://$proxy:$port } || { [[ -f $synconf ]] && { cat $synconf | sed s/useProxy\ \"1\"\;/useProxy\ \"0\"\;/g > $synconf.NEW && mv -f $synconf.NEW $synconf } echo DIRECT }Remplacez IP_DU_SERVEUR par la valeur déterminée auparavant.
Rendez ce script exécutable :
sudo chmod +x /etc/apt/proxy_auto.sh
Créez le fichier /etc/apt/apt.conf.d/01acng
contenant la ligne :
Acquire::http::Proxy-Auto-Detect "/etc/apt/proxy_auto.sh";
Vérifier que ce proxy-cache des paquets est bien pris en compte :
apt-config dump | grep Proxy
La réponse doit être exactement la ligne que vous venez d'inscrire dans le fichier /etc/apt/apt.conf.d/01acng
.
Vérifier que tout fonctionne en lançant la commande :
apt update
Configuration de synaptic
Ouvrez le Gestionnaire de paquets Synaptic (qui se trouve dans la partie Administration du menu de Cinnamon).
Dans Synaptic, menu Configuration/Préférences, onglet Réseau. Cocher Configuration manuelle du mandataire et indiquer, dans la ligne Mandataire HTTP, l'IP_DU_SERVEUR et le port 3142. Cliquer sur [Appliquer] puis [Accepter].
Cliquer sur [Recharger].
Configuration de mintupdate
La configuration par défaut de mintupdate devrait convenir.
Vérifiez toutefois en ouvrant mintupdate (icône sur votre panneau). Dans son menu Édition/Préférences, le rafraîchissement régulier doit être au minimum de 2 heures :
C'est fait.
Liens
- Le code et la doc officielle d'apt-cacher-ng sur Github (en anglais).
- Documentation détaillée d'apt-cacher-ng (en anglais).
- Apt-cacher-ng (doc en français).
- Pre-caching (en anglais).
- Invalid signature (en anglais).
3 personnes ont visité cette page aujourd'hui et 1249 en tout.