APT est le programme utilisé par les distributions Debian et Ubuntu Linux pour installer et mettre à jour leurs logiciels. Dans leur configuration prête à l'emploi, lorsque vous utilisez apt
pour installer un programme, par exemple:
sudo apt install inkscape
APT téléchargera l'archive du logiciel à partir des serveurs du référentiel de distribution et l'installera. Cela fonctionne très bien lorsque le progiciel est petit, que seuls quelques fichiers doivent être téléchargés et que votre connexion Internet est rapide.
Cependant, si vous avez beaucoup de logiciels à installer et que vous avez un bureau rempli de machines qui doivent toutes être mises à jour et que vous avez une connexion Internet lente, cela peut prendre beaucoup de temps pour tout télécharger et installer sur chaque machine.
Un serveur proxy, en particulier un proxy de mise en cache, comme apt-cacher-ng est un programme qui se situe entre l'ordinateur que vous essayez de mettre à jour et le serveur de référentiel qui héberge le logiciel que vous téléchargez. La machine que vous mettez à jour demandera le logiciel au serveur proxy au lieu du référentiel, et le proxy transmettra ensuite la demande au référentiel, téléchargera le logiciel et le remettra à la machine de mise à jour.
La partie intelligente est que le proxy conservera une copie de tous les fichiers logiciels qu'il a téléchargés. Lorsqu'une autre machine sur le réseau local tente de télécharger les mêmes fichiers, c'est-à-dire qu'elle veut installer ou mettre à jour le même logiciel, le proxy a déjà une copie qu'il peut remettre à la machine demandeuse sans avoir besoin de la télécharger.
Après le premier téléchargement, tous les téléchargements suivants seront compressés à la vitesse de votre réseau local.
Requirements
Pour compléter ce guide, vous aurez besoin des éléments suivants:
- A Raspberry PI (toute version) en cours d'exécution Raspbian Buster connecté à votre réseau local.
- Un écran et un clavier à brancher sur votre Raspberry Pi. Ceux-ci sont facultatifs si vous pouvez SSH dans votre Raspberry Pi.
- Un utilisateur non root et compatible sudo sur votre Raspberry Pi.
- Un système Debian ou Ubuntu sur votre réseau local.
Une fois que vous avez toutes ces exigences, connectez-vous à un terminal sur votre Raspberry PI en tant qu'utilisateur sudo et passez à la section suivante.
Installing apt-cacher-ng
Avant d'installer de nouveaux packages sur Linux, il est toujours judicieux d'effectuer une mise à jour du système. Cela garantira que votre système exécute les mêmes versions de packages que celles disponibles dans les référentiels de distribution et également que votre liste locale de versions de packages est à jour. Cela garantit que vous ne rencontrez aucune erreur lors de l'installation de apt-cacher-ng
.
Les commandes suivantes mettront à jour votre système:
$ sudo apt update
$ sudo apt upgrade
Maintenant que votre Raspberry PI est installé à jour apt-cacher-ng
:
$ sudo apt install apt-cacher-ng
Le programme d'installation vous demandera si vous souhaitez activer les tunnels HTTPS via apt-cacher-ng
. Vous devez répondre «Non» à cette question. Nous allons configurer APT pour proxy les connexions HTTPS via apt-cacher-ng
au lieu d'avoir besoin de tunnels. De plus, vous pouvez modifier ces options dans le apt-cacher-ng
fichier de configuration ultérieurement si vous en avez besoin.
Conformément aux conventions logicielles modernes, un systemd
le fichier de service est créé et activé lors de l'installation apt-cacher-ng
. Cela signifie que apt-cacher-ng
démarre automatiquement au démarrage et vous pouvez également gérer apt-cacher-ng
avec les commandes de service systemd normales:
$ sudo systemctl start apt-cacher-ng.service
$ sudo systemctl stop apt-cacher-ng.service
$ sudo systemctl restart apt-cacher-ng.service
apt-cacher-ng
s'exécute maintenant en tant que démon système à l'écoute sur le port 3142
et prêt à accepter les connexions de apt
.
Configuring apt on the Raspberry PI
Le premier système que nous allons configurer pour utiliser apt-cacher-ng
le proxy sera apt
sur le Raspberry PI. La façon dont nous allons configurer apt
d'utiliser le apt-cacher-ng
proxy sera de réécrire les URL dans apt
le fichier des sources. Le fichier sources contient une liste d'URL des référentiels où le logiciel de la distribution est disponible au téléchargement.
Vous trouverez le fichier source principal de Raspbian à l'adresse /etc/apt/sources.list
et sur une nouvelle installation ressemble à ce qui suit:
deb http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi
# Uncomment line below then 'apt-get update' to enable 'apt-get source'
# deb-src http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi
La seule ligne active (non commentée) ici est la première, c'est-à-dire:
deb http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi
Nous devons modifier cette ligne alors ouvrez le fichier avec un éditeur de texte, ici nous utilisons nano
:
$ sudo nano /etc/apt/sources.list
Modifiez la première ligne pour qu'elle ressemble à ce qui suit:
deb http://127.0.0.1:3142/raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi
Ce que vous avez fait ici était d'insérer 127.0.0.1:3142
dans l'URL.
L'adresse IP 127.0.0.1
est toujours l'adresse IP de l'ordinateur local, souvent appelée «localhost». le :3142
partie indique le port.
Sauvegarder et quitter nano
en appuyant CTRL+o
, ENTER
, CTRL+x
.
Vous devrez maintenant apporter la même modification à un fichier source à /etc/apt/sources.list.d/raspi.list
.
apt
et apt-cacher-ng
sont maintenant prêts pour les tests.
Testing apt with apt-cacher-ng
Chaque fois que tu cours apt
il mettra en cache une copie de tous les fichiers qu'il télécharge. apt
le fait pour ne pas effectuer de téléchargements inutiles et pour conserver une copie locale des archives d'installation au cas où un paquet aurait besoin d'être réinstallé et qu'il n'y aurait pas d'Internet.
Cette mise en cache locale signifie que apt
ne contactera pas le proxy lorsque vous exécuterez apt update
or apt upgrade
si le référentiel n'a pas changé. Par conséquent, pour tester le proxy, nous devrons effacer apt
cache manuellement. Les commandes suivantes effaceront tout apt
paquets mis en cache de:
$ sudo rm -rf /var/lib/apt/lists/
$ sudo rm -rf /var/cache/apt/*
Maintenant testez apt
en exécutant une mise à jour et en vérifiant les éventuelles erreurs:
$ sudo apt update
Vous devriez voir plusieurs lignes de sortie qui ressemblent à:
Get:1 http://127.0.0.1:3142/raspbian.raspberrypi.org/raspbian buster InRelease [15.0 kB]
L'URL commençant http://127.0.0.1:3142/
indique que apt
reçoit les fichiers de mise à jour de apt-cacher-ng
.
Vous pouvez également regarder le apt-cacher-ng
journal des erreurs en exécutant cette commande:
$ tail -f /var/log/apt-cacher-ng/apt-cacher.log
dans un deuxième terminal. Si vous ne rencontrez aucune erreur, vous pouvez procéder à la configuration d'un système Debian ou Ubuntu sur votre réseau local.
Configuring an Ubuntu or Debian System to use apt-cacher-ng
Les systèmes Debian ou Ubuntu de votre réseau local dont vous souhaitez bénéficier du proxy apt-cacher-ng n'ont pas besoin d'installer de logiciel supplémentaire. Tout ce que vous avez à faire est de réécrire leurs fichiers sources afin qu'ils collectent toutes leurs mises à jour à partir de apt-cacher-ng
au lieu de contacter directement le référentiel.
La modification que vous devez apporter aux fichiers sources est exactement la même que la modification que vous avez apportée aux sources sur le Raspberry PI sauf que vous devez utiliser l'adresse IP du Raspberry PI à la place de 127.0.0.1
.
Cela signifie que vous devrez d'abord obtenir l'adresse IP de votre Raspberry Pi. Le moyen le plus simple d'obtenir l'adresse IP du Raspberry PI est d'exécuter la commande suivante dans un terminal du Raspberry PI:
$ hostname -I
Cela imprimera les adresses IP du Raspberry PI. Utilisez la première adresse IP IPv4. Ici, je vais utiliser l'exemple d'adresse 192.168.0.2
. Vous devrez remplacer l'adresse IP de votre Raspberry PI.
De retour sur la machine cliente, ouvrez le fichier des sources principales à l'aide d'un éditeur de texte, ici nous utilisons nano
:
$ sudo nano /etc/apt/sources.list
Le fichier contiendra des lignes du même format que celles des Raspberry PI /etc/apt/sources.list
. Voici un exemple de ligne d'une installation Debian Buster:
deb http://ftp.debian.org/debian buster main
Vous devez modifier ces lignes comme suit en utilisant l'adresse IP de votre Raspberry PI, par exemple:
deb http://192.168.0.2:3142/ftp.debian.org/debian buster main
Modifiez toutes les lignes de /etc/apt/sources.list
et tout autre fichier source sous /etc/apt/sources.list.d/
. Supprimez ensuite tous les fichiers mis en cache localement pour les tests:
$ sudo rm -rf /var/lib/apt/lists/*
$ sudo rm -rf /var/cache/apt/*
Mettez à nouveau le système à jour:
$ sudo apt update
$ sudo apt upgrade
La sortie de apt
doit indiquer que les fichiers de mise à jour proviennent du apt-cacher-ng
proxy en imprimant des lignes comme celle-ci contenant l'adresse IP du proxy:
Hit:1 http://192.168.0.2:3142/ftp.debian.org/debian buster InRelease
Cette machine est maintenant entièrement configurée pour utiliser votre nouveau apt
Procuration. Vous devrez modifier tout nouveau fichier sources que vous ajouterez à cette machine à l'avenir, y compris toutes les nouvelles lignes qui seront ajoutées pour les mises à niveau de distribution.
APT over HTTPS
Les fichiers source que nous avons examinés jusqu'à présent ont tous utilisé des connexions HTTP. Il s'agit d'une décision de conception délibérée de Debian et d'Ubuntu car les archives d'installation ont des signatures cryptographiques internes intégrées qui empêchent la falsification malveillante. HTTPS n'ajoute donc pas beaucoup de sécurité supplémentaire tout en ajoutant considérablement à la charge d'ingénierie d'avoir un grand nombre de miroirs géographiquement diversifiés.
Cependant, l'utilisation de HTTPS présente plusieurs avantages, ce qui signifie que certains référentiels non officiels utilisent HTTPS. apt-cacher-ng
prend en charge deux méthodes de gestion des référentiels HTTPS.
La première consiste à transmettre les connexions du client directement au serveur de référentiel. Cela a pour conséquence regrettable que les packages ne sont pas mis en cache par apt-cacher-ng
. Si vous souhaitez courir apt-cacher-ng
dans ce mode puis ouvrez /etc/apt-cacher-ng/acng.conf
avec un éditeur de texte:
$ sudo nano /etc/apt-cacher-ng/acng.conf
Et ajoutez la ligne suivante:
PassThroughPattern: .*
Cela configure apt-cacher-ng
pour permettre aux connexions HTTPS de passer du client au référentiel.
La deuxième méthode consiste à modifier les lignes du référentiel dans les fichiers source du client afin que le client se connecte à apt-cacher-ng
via HTTP mais apt-cacher-ng
se connectera ensuite au référentiel via HTTPS. Les packages seront téléchargés vers apt-cacher-ng
via HTTPS, ils seront ensuite envoyés à la machine client via HTTP. apt-cacher-ng
est capable de mettre en cache les packages et nous ne perdons pas les avantages du HTTPS.
La ligne sources suivante permet d'accéder au Docker référentiel sur HTTPS:
deb [arch=amd64] https://download.docker.com/linux/debian buster stable
Lorsque vous avez modifié les lignes HTTP que vous avez ajoutées 192.168.0.2:3142
dans l'URL. Lorsque vous modifiez des lignes HTTPS, vous devez ajouter 192.168.0.2:3142/HTTPS///
par exemple:
deb [arch=amd64] http://192.168.1.67:3142/HTTPS///download.docker.com/linux/debian buster stable
Maintenant, la machine client demandera le package à apt-cacher-ng
via HTTP et apt-cacher-ng
téléchargera et mettra en cache les packages de Docker via HTTPS.
Administering apt-cacher-ng
Une interface graphique Web est disponible pour gérer apt-cacher-ng
sur votre réseau local. Pour accéder à cette interface graphique, vous devez pointer votre navigateur vers:
http://<Proxy IP>:3142/acng-report.html
En remplaçant l'exemple d'IP du réseau local, 192.168.0.2
, nous donne:
http://192.168.0.2:3142/acng-report.html
La première section, et la plus importante, de l'interface graphique, «Statistiques de transfert», vous fournit des informations sur la quantité de données téléchargées à partir des référentiels par rapport aux données qui ont été servies à partir du cache. L'image suivante montre cette section de l'interface graphique:
La section «Efficacité du cache» vous informe sur le nombre de fichiers apt-cacher-ng
est servi à partir de son cache Vs lesquels ont contourné le cache. «Hits» indique les fichiers que le proxy a servis à partir du cache et «Misses» sont des fichiers que la machine proxy a téléchargés à partir du référentiel et ajoutés au cache.
Managing the cache
Les fichiers qui apt-cacher-ng
les téléchargements et les services aux ordinateurs clients de votre réseau local deviendront obsolètes lorsque les développeurs ajouteront une nouvelle version au référentiel. Lorsque cela se produit, ces stales apt-cacher-ng
doivent les supprimer du cache car ils ne sont plus nécessaires et occupent de l'espace sur votre disque. Le Raspberry PI examine le cache et supprime automatiquement les fichiers périmés.
Lorsque vous avez installé apt-cacher-ng
vous avez également installé un cron
déposer à:
/etc/cron.daily/apt-cacher-ng
Cela est géré par cron
chaque jour qui efface le cache pour vous.
Si vous souhaitez examiner et vider le cache manuellement, vous devez vous connecter à l'interface graphique Web et cliquer sur le bouton «Démarrer l'analyse et / ou l'expiration». Cela n'est généralement pas nécessaire, mais vous devrez peut-être le faire si vous effectuez une mise à jour à partir de référentiels mis à jour rapidement.
Vous disposez désormais d'un apt
proxy qui soulagera la charge réseau des mises à jour système importantes et répétées dans votre bureau ou à domicile.
Intéressé par l'exploration de Raspberry Pi, consultez ce cours en ligne.