« Debmirror » : différence entre les versions
(Page créée avec « Category:miroir_apt ''Debmirror'' permet de réaliser un miroir des dépôts ''Debian'' en utilisant le protocole Rsync à l'image de Ftpsync. La différence m... ») |
(Remplacement de la balise "source" obsolète + ajout d'un chevron redirecteur dans le script de synchronisation des dépôts principaux afin de ne pas tronquer le début du journal) |
||
(Une version intermédiaire par le même utilisateur non affichée) | |||
Ligne 23 : | Ligne 23 : | ||
vim /etc/apache2/sites-available/debmirror.conf | vim /etc/apache2/sites-available/debmirror.conf | ||
< | <syntaxhighlight lang="apache"> | ||
<VirtualHost *:80> | <VirtualHost *:80> | ||
Ligne 40 : | Ligne 40 : | ||
</VirtualHost> | </VirtualHost> | ||
</ | </syntaxhighlight> | ||
'''Désactivation de l'hôte virtuel par défaut''' | '''Désactivation de l'hôte virtuel par défaut''' | ||
Ligne 54 : | Ligne 54 : | ||
vim /usr/local/bin/debmirror_debian | vim /usr/local/bin/debmirror_debian | ||
< | <syntaxhighlight lang="bash"> | ||
#!/bin/bash | #!/bin/bash | ||
Ligne 64 : | Ligne 64 : | ||
distributions="buster,buster-updates,sid" | distributions="buster,buster-updates,sid" | ||
sections="main,contrib,non-free,main/debian-installer" | sections="main,contrib,non-free,main/debian-installer" | ||
cible="/var/www/dépôts/debian/" | cible="/var/www/dépôts/debian/" | ||
architecture="amd64" | architecture="amd64" # « i386,amd64 » | ||
jour_semaine=$(date +%u) | |||
echo "--- Début de la synchronisation le $(date +%x) à $(date +%T) ---" > /var/log/debmirror/debmirror."${jour_semaine}".log | |||
# Commande pour synchroniser le miroir avec Debian | # Commande pour synchroniser le miroir avec Debian | ||
Ligne 75 : | Ligne 77 : | ||
--section="${sections}" --arch="${architecture}" "${cible}" \ | --section="${sections}" --arch="${architecture}" "${cible}" \ | ||
--getcontents --keyring /usr/share/keyrings/debian-archive-keyring.gpg \ | --getcontents --keyring /usr/share/keyrings/debian-archive-keyring.gpg \ | ||
--i18n --postcleanup --progress --rsync-extra=doc,tools --diff=none > /var/log/debmirror/debmirror.$ | --i18n --postcleanup --progress --rsync-extra=doc,tools --diff=none >> /var/log/debmirror/debmirror."${jour_semaine}".log | ||
# Commande pour obtenir le sous répertoire "installer-amd64" (facultatif). Je n'ai pas trouvé une autre façon de faire... | # Commande pour obtenir le sous répertoire "installer-amd64" (facultatif). Je n'ai pas trouvé une autre façon de faire... | ||
rsync -a "${hote}"::debian/dists/buster/main/installer-amd64 "${cible}"/dists/buster/main/ | rsync -a "${hote}"::debian/dists/buster/main/installer-amd64 "${cible}"/dists/buster/main/ | ||
</ | |||
echo "--- Fin de la synchronisation à $(date +%T) ---" >> /var/log/debmirror/debmirror."${jour_semaine}".log | |||
</syntaxhighlight> | |||
vim /usr/local/bin/debmirror_debian-security | vim /usr/local/bin/debmirror_debian-security | ||
< | <syntaxhighlight lang="bash"> | ||
#!/bin/bash | #!/bin/bash | ||
# Définition des variables pour Debian | # Définition des variables pour Debian | ||
hote=" | hote="ftp.fr.debian.org" | ||
racine="debian-security" | racine="debian-security" | ||
methode="rsync" | methode="rsync" | ||
Ligne 96 : | Ligne 100 : | ||
cible="/var/www/dépôts/debian-security/" | cible="/var/www/dépôts/debian-security/" | ||
architecture="amd64" | architecture="amd64" | ||
jour_semaine=$(date +%u) | |||
echo "--- Début de la synchronisation le $(date +%x) à $(date +%T) ---" > /var/log/debmirror/debmirror-security."${jour_semaine}".log | |||
# Commande pour synchroniser le mirroir avec Debian | # Commande pour synchroniser le mirroir avec Debian | ||
Ligne 102 : | Ligne 110 : | ||
--section="${sections}" --arch="${architecture}" "${cible}" \ | --section="${sections}" --arch="${architecture}" "${cible}" \ | ||
--getcontents --keyring /usr/share/keyrings/debian-archive-keyring.gpg \ | --getcontents --keyring /usr/share/keyrings/debian-archive-keyring.gpg \ | ||
--i18n --postcleanup --progress --diff=none > /var/log/debmirror/debmirror-security.$(date +% | --i18n --postcleanup --progress --diff=none >> /var/log/debmirror/debmirror-security."${jour_semaine}".log | ||
</ | |||
echo "--- Fin de la synchronisation à $(date +%T) ---" >> /var/log/debmirror/debmirror-security."${jour_semaine}".log | |||
</syntaxhighlight> | |||
'''Attribution des droits''' | '''Attribution des droits''' | ||
Ligne 125 : | Ligne 135 : | ||
crontab -e -u debmirror | crontab -e -u debmirror | ||
00 4,10,16,22 * * * usr/local/bin/debmirror_debian 2>&1 | 00 4,10,16,22 * * * /usr/local/bin/debmirror_debian 2>&1 | ||
10 4,10,16,22 * * * /usr/local/bin/debmirror_debian-security 2>&1 | 10 4,10,16,22 * * * /usr/local/bin/debmirror_debian-security 2>&1 | ||
Dernière version du 18 juillet 2023 à 21:19
Debmirror permet de réaliser un miroir des dépôts Debian en utilisant le protocole Rsync à l'image de Ftpsync. La différence majeure qui le distingue de celui-ci est sa capacité à sélectionner les branches à synchroniser. Il n'est donc pas destiné à faire un miroir complet du dépôt distant (même s'il le permet tout à fait). L'outil est plus adapté à la mise à disposition des paquets nécessaires au fonctionnement des machines de votre réseau local. Il leur permettra d'avoir accès aux paquets dont elles ont besoin sans avoir à interroger de serveur sur Internet. De par sa capacité à discriminer les branches à copier, il est plus économe en espace disque ainsi qu'en bande passante lors des opérations de synchronisation. À titre d'exemple, voici la place occupée par le résultat de ce document au 29/12/2020 :
root@debmirror:~# du -hs /var/www/dépôts/* 152G /var/www/dépôts/debian 11G /var/www/dépôts/debian-security
Installation et préparation
Comme à notre habitude lors de la mise en place de ce type d'outil, nous mettrons à disposition les paquets téléchargés via Apache2 et automatiserons la synchronisation avec Cron.
Préparation de l'environnement
Installation des dépendances
apt install --no-install-recommends apache2 debmirror debian-keyring cron
Création d'un utilisateur dédié à la synchronisation
useradd --system --home-dir /var/www/dépôts/ --user-group debmirror
Création des répertoires d'accueil
mkdir -p /var/www/dépôts/{debian,debian-security} /var/log/debmirror/
Configuration d'Apache
Création de l'hôte virtuel
vim /etc/apache2/sites-available/debmirror.conf
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/dépôts/
<Directory />
Options FollowSymLinks
AllowOverride none
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error-debmirror.log
CustomLog ${APACHE_LOG_DIR}/access-debmirror.log combined
</VirtualHost>
Désactivation de l'hôte virtuel par défaut
a2dissite 000-default.conf
Activation du nouveau et rechargement du service
a2ensite debmirror.conf systemctl reload apache2.service
Configuration de debmirror
L'outil a besoin d'un fichier de configuration par dépôt à synchroniser. Nous en créerons donc deux : un pour le dépôt debian, l'autre pour debian-security, le tout en amd64. Je ne synchroniserai que les branches main, contrib, non-free et main/debian-installer pour le premier dépôt ainsi que buster/updates pour le deuxième.
vim /usr/local/bin/debmirror_debian
#!/bin/bash
# Définition des variables pour Debian
hote="ftp.fr.debian.org"
racine="debian/"
methode="rsync" # au choix ftp|http|https|rsync
distributions="buster,buster-updates,sid"
sections="main,contrib,non-free,main/debian-installer"
cible="/var/www/dépôts/debian/"
architecture="amd64" # « i386,amd64 »
jour_semaine=$(date +%u)
echo "--- Début de la synchronisation le $(date +%x) à $(date +%T) ---" > /var/log/debmirror/debmirror."${jour_semaine}".log
# Commande pour synchroniser le miroir avec Debian
/usr/bin/debmirror --nosource --passive --method="${methode}" \
--root="${racine}" --dist="${distributions}" --host="${hote}" \
--section="${sections}" --arch="${architecture}" "${cible}" \
--getcontents --keyring /usr/share/keyrings/debian-archive-keyring.gpg \
--i18n --postcleanup --progress --rsync-extra=doc,tools --diff=none >> /var/log/debmirror/debmirror."${jour_semaine}".log
# Commande pour obtenir le sous répertoire "installer-amd64" (facultatif). Je n'ai pas trouvé une autre façon de faire...
rsync -a "${hote}"::debian/dists/buster/main/installer-amd64 "${cible}"/dists/buster/main/
echo "--- Fin de la synchronisation à $(date +%T) ---" >> /var/log/debmirror/debmirror."${jour_semaine}".log
vim /usr/local/bin/debmirror_debian-security
#!/bin/bash
# Définition des variables pour Debian
hote="ftp.fr.debian.org"
racine="debian-security"
methode="rsync"
distributions="buster/updates"
sections="main,contrib,non-free"
cible="/var/www/dépôts/debian-security/"
architecture="amd64"
jour_semaine=$(date +%u)
echo "--- Début de la synchronisation le $(date +%x) à $(date +%T) ---" > /var/log/debmirror/debmirror-security."${jour_semaine}".log
# Commande pour synchroniser le mirroir avec Debian
/usr/bin/debmirror --nosource --passive --method="${methode}" \
--root="${racine}" --dist="${distributions}" --host="${hote}" \
--section="${sections}" --arch="${architecture}" "${cible}" \
--getcontents --keyring /usr/share/keyrings/debian-archive-keyring.gpg \
--i18n --postcleanup --progress --diff=none >> /var/log/debmirror/debmirror-security."${jour_semaine}".log
echo "--- Fin de la synchronisation à $(date +%T) ---" >> /var/log/debmirror/debmirror-security."${jour_semaine}".log
Attribution des droits
chmod ug+x /usr/local/bin/debmirror_debian /usr/local/bin/debmirror_debian-security chown -R debmirror:debmirror /var/www/dépôts /var/log/debmirror /usr/local/bin/debmirror_debian*
Synchronisation du miroir
Il convient désormais de lancer une synchronisation. Prennez en compte que cette étape va prendre un certain temps au vu de la quantité de données à rappatrier. Sachez également que le serveur ftp.fr.debian.org limite les téléchargements aux environs de 10Mo/s.
Dépôt debian
su - debmirror -c '/usr/local/bin/debmirror_debian'
Dépôt debian-security
su - debmirror -c '/usr/local/bin/debmirror_debian-security'
Automatisation
Afin de maintenir un miroir à jour, la mise en place d'une synchronisation automatique et périodique s'impose. Les dépôts Debian se répliques quatres fois par jours. Nous en ferrons de même.
Création de la crontab
crontab -e -u debmirror
00 4,10,16,22 * * * /usr/local/bin/debmirror_debian 2>&1 10 4,10,16,22 * * * /usr/local/bin/debmirror_debian-security 2>&1