Apt-mirror
EN CHANTIER
Article en cours d'écriture et/ou de test. Certains éléments peuvent être incomplets et mener à un résultat non fonctionnel.Merci de ne pas rager.
Apt mirror est un outil qui permet de cloner des miroirs de dépôt . L’intérêt de cette solution est que cela met à disposition au sein de notre réseau local, l'ensemble des paquets des dépôts clonés. On se retrouve donc avec la bande passante de ce réseau pour nos installations (ce qui est fortement agréable si comme moi vous êtes encore à de l'ADSL...). De plus, en cas de coupure Internet, on ne se rendra compte de rien du tout puisque tout ce fait en local. L’inconvénient principal est la place qu'aucune un dépôt sur les disques durs de nos serveurs et le temps que la réplication occupe (environ 26h dans mon cas pour le dépôt Debian stretch ftp.fr.debian.org en amd64 sans les sources).
Je le couple à une zone RPZ DNS sous Bind9 afin de ne pas me faire chier à spécifier l'adresse de mon serveur à chaque machines voulant utiliser mon miroir. De ce fait, c'est totalement transparent.
Installation
apt install apt-mirror apache2
Configuration
Configuration d'Apt-miror
vim /var/spool/apt-mirror/mirror.list
<source lang="bash">
- Paramètres ##################
set base_path /var/spool/apt-mirror
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 amd64
- set defaultarch <architecture à définir par défaut>
- set postmirror_script $var_path/postmirror.sh
- 1 → lancement du script postmirror.sh ; 0 → pas de lancement
set run_postmirror 0 set nthreads 20 set _tilde 0
- fin paramètres ###############
- Dépôts à synchroniser ###########
- Dépôts Debian Jessie 8.0
deb http://ftp.fr.debian.org/debian/ jessie main contrib non-free deb-src http://ftp.fr.debian.org/debian/ jessie main contrib
deb http://security.debian.org/ jessie/updates main contrib non-free deb-src http://security.debian.org/ jessie/updates main contrib
- Dépôts Debian Stretch 9.0
deb http://ftp.fr.debian.org/debian/ stretch main contrib non-free deb http://ftp.fr.debian.org/debian/ stretch main main/debian-installer contrib non-free deb-i386 http://ftp.fr.debian.org/debian/ stretch main contrib non-free deb-i386 http://ftp.fr.debian.org/debian/ stretch main main/debian-installer contrib non-free deb-src http://ftp.fr.debian.org/debian/ stretch main contrib
deb http://security.debian.org/ stretch/updates main contrib non-free
- deb-i386 http://security.debian.org/ stretch/updates main contrib non-free
- deb-src http://security.debian.org/ stretch/updates main contrib
deb http://ftp.fr.debian.org/debian/ stretch-updates main
- dépôts à nettoyer → suppression des paquets obsolètes
clean http://ftp.fr.debian.org clean http://security.debian.org
- fin synchronisation ###########
</source>
Configuration d'Apache2
Par défaut, Apache2 n'autorise que le répertoire <source lang="bash" inline>/var/www/</source> à contenir des sites WEB. Dans notre cas, Apt-mirror utilise <source lang="bash" inline>/var/spool/apt-mirror/</source> comme dossier de travail. Deux choix s'offrent à nous. Soit nous créons un deuxième répertoire de travail dans <source lang="bash" inline>/var/www/apt-mirror</source> et nous faisons un <source lang="bash" inline>mount --bind</source> du répertoire originel vers le nouveau afin que le tout n'y voit que du feux ou soit nous configurons Apache2 pour qu'il autorise le dossier d'Apt-mirror.
Les deux méthode ont exactement la même finalité. Utilisez l'une ou l'autre selon vos préférences.
Première méthode
La méthode du mount --bind Création de l'arborescence
mkdir -p /var/www/apt-mirror/{mirror,skel,var,log} && cp /var/spool/apt-mirror/mirror.list /var/www/apt-mirror/mirror/
Montage du répertoire
mount --bind /var/www/apt-mirror/ /var/spool/apt-mirror/
Ajout d'une entrée dans le fstab
echo '/var/www/apt-mirror/ /var/spool/apt-mirror/ none bind 0 0' >> /etc/fstab
Un <source lang="bash" inline>mount -a</source> permet de monter le répertoire si vous voulez tester votre entrée (pensez à démonter le répertoire que vous avez monté avec la commande <source lang="bash" inline>mount --bind</source> d'avant).
Création du vHost Apache
vim /etc/apache2/sites-enabled/apt-mirror.conf
<source lang="apache"> <VirtualHost *:80>
ServerAdmin toto@foo.bar
# --- Alias principal Debian ---
Alias /debian /var/www/apt-mirror/mirror/ftp.fr.debian.org/debian
# --- Alias Security pour stretch (Jessie n'en a pas besoin) ---
Alias /debian-security /var/www/apt-mirror/mirror/security.debian.org/
# --- Alias Security pour Jessie ---
Alias / /var/www/apt-mirror/mirror/security.debian.org/
DocumentRoot /var/www/apt-mirror/mirror
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost> </source>
Deuxième méthode
Création du répertoire qui contiendra les journaux
mkdir /var/spool/apt-mirror/log