[Tuto] Création d’un miroir Linux local avec apt-mirror

Lorsque vous possédez plusieurs machines Linux dans un réseau local, il devient intéressant de mettre en place un miroir local, encore plus si vous avez une connexion ADSL. La mise en place d’un miroir local permettra donc d’optimisé le trafic réseau et évité la saturation de ce dernier.

1 – Installation d’apt-mirror
2 – Création de l’aborescence
3 – Fichier de configuration
4 – Remarque
5 – Automatiser le téléchargements des paquets avec CRON
6 – Configuration du serveur
7 – Configuration du client

.

$ sudo -s
password :
#

1 – Installation d’apt-mirror :

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

.

2 – Création de l’aborescence :

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

L’ensemble de la configuration se fait dans le fichier /etc/apt/mirror.list.

.

3 – Fichier de configuration :

############ config ##################
#
set base_path /depot
set mirror_path $base_path/mirror
set skel_path $base_path/skel
set var_path $base_path/var
set defaultarch amd64
set postmirror_script $var_path/postmirror.sh
set run_postmirror 1
set nthreads 20
set _tilde 0
#
############# end config ##############

# Debian Wheezy
deb http://ftp.fr.debian.org/debian/ wheezy main contrib non-free
deb-src http://ftp.fr.debian.org/debian/ wheezy main contrib non-freedeb
deb http://security.debian.org/ wheezy/updates main contrib non-free
deb-src http://security.debian.org/ wheezy/updates main contrib non-free
deb http://ftp.fr.debian.org/debian/ wheezy-updates main contrib non-free
deb-src http://ftp.fr.debian.org/debian/ wheezy-updates main contrib non-free
deb http://ftp.fr.debian.org/debian/ wheezy-backports main contrib non-free
deb-src http://ftp.fr.debian.org/debian/ wheezy-backports main contrib non-free

# Debian Jessie
deb http://ftp.fr.debian.org/debian/ jessie main contrib non-free
deb-src http://ftp.fr.debian.org/debian/ jessie main contrib non-freedeb
deb http://security.debian.org/ jessie/updates main contrib non-free
deb-src http://security.debian.org/ jessie/updates main contrib non-free
deb http://ftp.fr.debian.org/debian/ jessie-updates main contrib non-free
deb-src http://ftp.fr.debian.org/debian/ jessie-updates main contrib non-free
deb http://ftp.fr.debian.org/debian/ jessie-backports main contrib non-free
deb-src http://ftp.fr.debian.org/debian/ jessie-backports main contrib non-free

# Dépots à nettoyer → suppression des paquets obsolètes
clean http://security.debian.org/
clean http://ftp.fr.debian.org/

A ce stade, il est maintenant possible de commencer le téléchargement des paquets
/!\ Le téléchargement peut prendre plusieurs heures et peut ralentir votre connexion internet.

# apt-mirror /etc/apt/mirror.list

A la fin du téléchargement les miroirs sont répliqués. Nous allons maintenant créer des liens symboliques vers /var/www afin que les machines clientes puissent 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

.

4 – Remarque :

Il semblerait que apt-mirroir ne synchronise pas les répertoires i18n qui contiennent les paquets de traduction, pour une raison inconnue…
Il existe une solution qui consiste à télécharger ces répertoires à la fin du téléchargement en utilisant, par exemple, le script postmirror.sh. Voici un contenu possible pour ce script qui sera lancé automatiquement à la fin du téléchargement (voir le fichier de configuration /etc/apt/mirror.list) :

#!/bin/sh
bash /depot/var/clean.sh
#### wheezy
rsync --recursive --times --links --hard-links --delete --delete-after rsync://ftp.fr.debian.org/debian/dists/wheezy/main/i18n/ /depot/mirror/ftp.fr.debian.org/debian/dists/wheezy/main/i18n/
rsync --recursive --times --links --hard-links --delete --delete-after rsync://ftp.fr.debian.org/debian/dists/wheezy/contrib/i18n/ /depot/mirror/ftp.fr.debian.org/debian/dists/wheezy/contrib/i18n/
rsync --recursive --times --links --hard-links --delete --delete-after rsync://ftp.fr.debian.org/debian/dists/wheezy/non-free/i18n/ /depot/mirror/ftp.fr.debian.org/debian/dists/wheezy/non-free/i18n/
rsync --recursive --times --links --hard-links --delete --delete-after rsync://ftp.fr.debian.org/debian/dists/wheezy-backports/main/i18n/ /depot/mirror/ftp.fr.debian.org/debian/dists/wheezy-backports/main/i18n/
rsync --recursive --times --links --hard-links --delete --delete-after rsync://ftp.fr.debian.org/debian/dists/wheezy-backports/contrib/i18n/ /depot/mirror/ftp.fr.debian.org/debian/dists/wheezy-backports/contrib/i18n/
rsync --recursive --times --links --hard-links --delete --delete-after rsync://ftp.fr.debian.org/debian/dists/wheezy-backports/non-free/i18n/ /depot/mirror/ftp.fr.debian.org/debian/dists/wheezy-backports/non-free/i18n/
rsync --recursive --times --links --hard-links --delete --delete-after rsync://ftp.fr.debian.org/debian/dists/wheezy-updates/main/i18n/ /depot/mirror/ftp.fr.debian.org/debian/dists/wheezy-updates/main/i18n/
rsync --recursive --times --links --hard-links --delete --delete-after rsync://ftp.fr.debian.org/debian/dists/wheezy-updates/contrib/i18n/ /depot/mirror/ftp.fr.debian.org/debian/dists/wheezy-updates/contrib/i18n/
rsync --recursive --times --links --hard-links --delete --delete-after rsync://ftp.fr.debian.org/debian/dists/wheezy-updates/non-free/i18n/ /depot/mirror/ftp.fr.debian.org/debian/dists/wheezy-updates/non-free/i18n

#### Jessie
rsync --recursive --times --links --hard-links --delete --delete-after rsync://ftp.fr.debian.org/debian/dists/jessie/main/i18n/ /depot/mirror/ftp.fr.debian.org/debian/dists/jessie/main/i18n/
rsync --recursive --times --links --hard-links --delete --delete-after rsync://ftp.fr.debian.org/debian/dists/jessie/contrib/i18n/ /depot/mirror/ftp.fr.debian.org/debian/dists/jessie/contrib/i18n/
rsync --recursive --times --links --hard-links --delete --delete-after rsync://ftp.fr.debian.org/debian/dists/jessie/non-free/i18n/ /depot/mirror/ftp.fr.debian.org/debian/dists/jessie/non-free/i18n/
rsync --recursive --times --links --hard-links --delete --delete-after rsync://ftp.fr.debian.org/debian/dists/jessie-backports/main/i18n/ /depot/mirror/ftp.fr.debian.org/debian/dists/jessie-backports/main/i18n/
rsync --recursive --times --links --hard-links --delete --delete-after rsync://ftp.fr.debian.org/debian/dists/jessie-backports/contrib/i18n/ /depot/mirror/ftp.fr.debian.org/debian/dists/jessie-backports/contrib/i18n/
rsync --recursive --times --links --hard-links --delete --delete-after rsync://ftp.fr.debian.org/debian/dists/jessie-backports/non-free/i18n/ /depot/mirror/ftp.fr.debian.org/debian/dists/jessie-backports/non-free/i18n/
rsync --recursive --times --links --hard-links --delete --delete-after rsync://ftp.fr.debian.org/debian/dists/jessie-updates/main/i18n/ /depot/mirror/ftp.fr.debian.org/debian/dists/jessie-updates/main/i18n/
rsync --recursive --times --links --hard-links --delete --delete-after rsync://ftp.fr.debian.org/debian/dists/jessie-updates/contrib/i18n/ /depot/mirror/ftp.fr.debian.org/debian/dists/jessie-updates/contrib/i18n/
rsync --recursive --times --links --hard-links --delete --delete-after rsync://ftp.fr.debian.org/debian/dists/jessie-updates/non-free/i18n/ /depot/mirror/ftp.fr.debian.org/debian/dists/jessie-updates/non-free/i18n

.

5 – Automatiser le téléchargements des paquets avec CRON :

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

Enfin, il reste plus qu’à modifier le fichier /etc/apt/sources.list du serveur mirror et des machines clientes

.

6 – Configuration du serveur :

# vim /etc/apt/sources.list

deb http://localhost/debian/ jessie main contrib non-free
deb-src http://localhost/debian/ jessie main contrib non-freedeb
deb http://localhost/debian-security jessie/updates main contrib non-free
deb-src http://localhost/debian-security jessie/updates main contrib non-free
deb http://localhost/debian/ jessie-updates main contrib non-free
deb-src http://localhost/debian/ jessie-updates main contrib non-free
deb http://localhost/debian/ jessie-backports main contrib non-free
deb-src http://localhost/debian/ jessie-backports main contrib non-free

.

7 – Configuration du client :

# vim /etc/apt/sources.list

deb http://mirroir/debian/ jessie main contrib non-free
deb-src http://mirroir/debian/ jessie main contrib non-freedeb
deb http://mirroir/debian-security jessie/updates main contrib non-free
deb-src http://mirroir/debian-security jessie/updates main contrib non-free
deb http://mirroir/debian/ jessie-updates main contrib non-free
deb-src http://mirroir/debian/ jessie-updates main contrib non-free
deb http://mirroir/debian/ jessie-backports main contrib non-free
deb-src http://mirroir/debian/ jessie-backports main contrib non-free

Bien entendue, remplacer mirroir par le nom DNS du serveur (si il y en à un) où sinon remplacer le par l’IP du serveur.
Enjoy 😉

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *