La création d’un miroir en local va permettre dans le cadre d’un grosse infrastructure sous Linux, d’économiser la bande passante étant donné que seule une machine téléchargera les paquets qui pourront être télécharger par les machines du parc à partir de cette machine.

On met à jour la machine puis on télécharge apt-mirror ainsi que apache2.

aptitude update && aptitude upgrade -y
aptitude install apt-mirror apache2

On crée l’arborescence

mkdir -p /depot/{mirror,skel,var}
chown -R apt-mirror:apt-mirror /depot
chmod -R 755 /depot

La configuration de apt-mirror se fait dans le fichier /etc/apt/mirror.list

############# config ##################
#
# set base_path /depot
#
# set mirror_path $base_path/mirror
# set skel_path $base_path/skel
# set var_path $base_path/var
# set cleanscript $var_path/clean.sh
# set defaultarch <running host architecture>
# set postmirror_script $var_path/postmirror.sh
# set run_postmirror 1
set nthreads 20
set _tilde 0
#
############# end config ##############

# Debian Stretch
deb http://deb.debian.org/debian/ stretch main contrib non-free
deb-src http://deb.debian.org/debian/ stretch main contrib non-free
deb http://security.debian.org/ stretch/updates main contrib non-free
deb-src http://security.debian.org/ stretch/updates main contrib non-free
deb http://deb.debian.org/debian/ stretch-updates main contrib non-free
deb-src http://deb.debian.org/debian/ stretch-updates main contrib non-free

# Debian Jessie
deb http://ftp.fr.debian.org/debian/ jessie main
deb-src http://ftp.fr.debian.org/debian/ jessie main
deb http://security.debian.org/ jessie/updates main
deb-src http://security.debian.org/ jessie/updates main
deb http://ftp.fr.debian.org/debian/ jessie-updates main
deb-src http://ftp.fr.debian.org/debian/ jessie-updates main

# Suppression des paquets obsoletes
clean http://security.debian.org/
clean http://ftp.fr.debian.org/

Maintenant on va lancer le téléchargement des paquets

Attention, le téléchargement est très long car il faut télécharger tous les paquets des miroirs.

apt-mirror /etc/apt/mirror.list

Puis on va créer des liens symboliques afin de permettre aux machines clientes de récupérer les paquets.

ln -s /depot/mirror/security.debian.org/ /var/www/debian-security
ln -s /depot/mirror/ftp.fr.debian.org/debian /var/www/debian

Grace à une tache cron, on va automatiser le téléchargement des nouveaux paquets tout en journalisant le résultat.

crontab -e
0 5 * * * root /usr/bin/apt-mirror /etc/apt/mirror.list > /depot/mirror/var/cron.log

Enfin, il faut modifier le fichier /etc/apt/sources.list de la machine principale et des clients afin de récupérer les miroirs sur la nouvelle machine.

Configuration de la machine hôte.

deb http://localhost/debian stretch main contrib non-free
deb-src http://localhost/debian stretch main contrib non-free
deb http://localhost/debian-security stretch/updates main contrib non-free
deb-src http://localhost/debian-security stretch/updates main contrib non-free
deb http://localhost/debian stretch-updates main contrib non-free
deb-src http://localhost/debian stretch-updates main contrib non-free

Configuration des machines clientes.

deb http://IpOuFqdn/debian stretch main contrib non-free
deb-src http://IpOuFqdn/debian stretch main contrib non-free
deb http://IpOuFqdn/debian-security stretch/updates main contrib non-free
deb-src http://IpOuFqdn/debian-security stretch/updates main contrib non-free
deb http://IpOuFqdn/debian stretch-updates main contrib non-free
deb-src http://IpOuFqdn/debian stretch-updates main contrib non-free

Pensez à changer IpOuFqdn par l’Ip de la machine hôte ou son nom de domaine.

Merci à Loan Naze pour son tutoriel qui m’a permit de mettre en place cette solution.