Ceci est une ancienne révision du document !



ubumirror

Le paquet ubumirror est un ensemble de scripts permettant de créer et maintenir à jour un miroir de la distribution Ubuntu. A la différence de l'outil apt-mirror utilisant wget, celui-ci réalise la synchronisation sur base l'outil rsync offrant de meilleurs performances. Ce paquet apporte une solution supportée par la communauté Ubuntu pour le maintient des miroirs synchronisés et uniformisés. Celui-ci a été introduit dans la distribution avec la release de Lucid Lynx (10.04 LTS).

Pour créer et maintenir un miroir à jour et fonctionnel, il est recommendé de suivre ces indications :

  • Bien savoir dans quoi on s'engage. Un miroir générera beaucoup d'activité réseau et plus, s'il est à vocation public. Dans un tel cas, l'administrateur ne devrait pas avoir de limite de trafic auprès de son fournisseur d'accès à Internet (FAI).
  • Etre sûr de consacrer un espace disque suffisant pour acceuillir le miroir. Actuellement, un petit dépôt (seulement pour les architectures x86 et amd64) fait déjà 400 Go pour 500000 fichiers. Il est recommendé de dédier un disque dur (min. 500GB) ou, au minimum, une partition pour le stockage du miroir. Le système de fichier pourra être judicieusement choisi. Ext3 ou Ext4 ne sont pas des mauvais choix mais XFS semble interessant dans ce type de stockage.
  • Rester à jour. Il est recommendé de mettre à jour son mirroir 4 fois par jour (ç-a-d. chaque 6 heures) pour la partie archive. Pour la partie releases, une fois par jour suffit. Le push mirroring est une alternative disponnible.
  • Surveiller le résultat des synchronisations automatiques. En cas de défaillance de la synchronisation automatique, l'administrateur devra réagir pour corriger les problèmes rencontrés lors de la synchronisation. Effectivement, l'absence de paquets est très mal perçue par les utilisateurs du miroir.
  • Etre ou ne pas être un miroir officiellement reconnu ? Chaque contribution est toujours la bienvenue. Cependant, il est nuisible à l'image d'Ubuntu qu'un miroir ne soit pas de qualité (à jour, accessible, offrant une bande passante correcte). Publier officiellement son miroir démontre une volonté de fournir ce service sur un long terme et avec une bonne qualité. Ne le faites que si vous êtes prêts à vous y engager.

Il suffit d'installer le paquet ubumirror.

Ce paquet comprend 4 shell scripts pour les synchronisations et un unique fichier de configuration.

Les scripts

ubuarchive

Le script /usr/bin/ubuarchive va synchroniser l'ensemble des paquets de la distribution pour les architectures officiellement supportées (i386, amd64, powerpc et sparc jusqu'à 6.10). Cette synchronisation se fait en deux temps. Premièrement, on synchronise pool contenant l'ensemble des paquets (.dsc, .diff.gz, .tar.gz et .deb), ainsi que project. Deuxièmement, on synchronise indices et dists. Ces deux synchronisations se font avec l'option --delete-after qui assure de supprimer les paquets qui ont disparu le plus tard possible (après la copie de tous les nouveaux fichiers). Ceci est important car les outils de gestion de paquets (tel que APT) se basent sur la seconde partie (indices et dists) pour déterminer quels sont les paquets disponibles sur le dépôt. L'absence de paquets dans le pool alors qu'ils seraient référencés dans indices et dists génèrera des erreurs chez l'utilisateur du dépôt.

uburelease

Le script /usr/bin/uburelease va synchroniser l'ensemble des images officielles (iso, img) nécessaires pour réaliser l'installation d'une machine sous Ubuntu ou sous une distribution fille officiellement supportée (Edubuntu et Kubuntu). Cette synchronisation se fait en un temps avec l'option --delete-after.

ubucdimage

Le script /usr/bin/ubucdimage va synchroniser l'ensemble des images (iso, img) nécessaires, quotidiennement mises à jours, pour réaliser l'installation d'une machine sous Ubuntu et les distributions filles officiellement supportées (Edubuntu et Kubuntu). Cette synchronisation se fait un temps avec l'option --delete-after. Vu son caractère évolutif quotidiennement, cette synchronisation, en fonction de la variable UBUCDI_FLAVOUR expliquée ci-dessous, génèrera beaucoup de trafic.

ubuports

A l'image du script ubuarchive, celui-ci va synchroniser l'ensemble des paquets de la distribution pour les archictures non-officiellement supportées (armel, hppa, ia64, lpia, powerpc, sparc)

Le fichier de configuration

ubumirror.conf

Le fichier /etc/ubumirror.conf est bien documenté en soi. En voici une traduction personnelle:

/etc/ubumirror.conf
# Adresse e-mail utilisée pour avertir l'administrateur du miroir
EMAIL=root@localhost
 
# Le FQDN du serveur
HOSTNAME=$(hostname -f)
 
# Limite de bande passante utilisée pour tous les scripts (0 signifie sans limite)
# La valeur est exprimée en KBytes par seconde
SPEED=0
 
# UBUARC_DIR est la destionation pour la base du répertoire archive
# Le script ubuarchive ne s'exécutera pas si cette variable n'est pas définie
#UBUARC_DIR="/srv/mirror/ubuntu"
 
# UBUCDI_DIR est la destionation pour la base du répertoire cdimage
# Le script ubucdimage ne s'exécutera pas si cette variable n'est pas définie
#UBUCDI_DIR="/srv/mirror/ubuntu-cdimage"
 
# UBUREL_DIR est la destionation pour la base du répertoire releases
# Le script uburelease ne s'exécutera pas si cette variable n'est pas définie
#UBUREL_DIR="/srv/mirror/ubuntu-releases"
 
# UBUPOR_DIR est la destionation pour la base du répertoire ports
# Le script ubuports ne s'exécutera pas si cette variable n'est pas définie
#UBUPOR_DIR="/srv/mirror/ubuntu-ports"
 
# LOGDIR est le répertoire où seront enregistrés tous les logs (journaux)
LOGDIR="/var/log/ubumirror/"
 
# UBUxxx_MIRROR est la destination rsync (au format hôte::répertoire/) sur le mirroir
# de référrence à partir duquel sera fait la synchronisation par les scripts d'ubumirror
UBUARC_MIRROR=archive.ubuntu.com::ubuntu/
UBUCDI_MIRROR=cdimage.ubuntu.com::cdimage/
UBUREL_MIRROR=rsync.releases.ubuntu.com::releases/
UBUPOR_MIRROR=ports.ubuntu.com::ubuntu-ports/
 
# UBUCDI_FLAVOURS est le set d'images favorites à récupérer du miroir cdimage
# Le nom du répertoire doit correspondre à un nom de cette liste
UBUCDI_FLAVOURS="\
  daily daily-live \
  ubuntu-netbook/daily-live ubuntu-server/daily \
"
 
# UBUxxx_EXCLUDE est une liste d'exclusions à appliquer lors la synchronisation
UBUARC_EXCLUDE="\
#  --exclude binary-powerpc/ --exclude binary-sparc/ \
#  --exclude daily-installer-powerpc/ --exclude daily-installer-sparc/ \
#  --exclude installer-powerpc/ --exclude installer-sparc/ \
#  --exclude *_powerpc.deb --exclude *_powerpc.udeb \
#  --exclude *_sparc.deb --exclude *_sparc.udeb \
#  --exclude Contents-powerpc.gz --exclude Contents-sparc.gz \
"
 
UBUCDI_EXCLUDE="\
#  --exclude *-powerpc.* --exclude *-sparc.* \
#  --exclude source/ \
"
 
UBUREL_EXCLUDE="\
#  --exclude *-powerpc.* --exclude *-sparc.* \
"
 
UBUPOR_EXCLUDE="\
#  --exclude binary-powerpc/ --exclude binary-sparc/ \
#  --exclude daily-installer-powerpc/ --exclude daily-installer-sparc/ \
#  --exclude installer-powerpc/ --exclude installer-sparc/ \
#  --exclude *_powerpc.deb --exclude *_powerpc.udeb \
#  --exclude *_sparc.deb --exclude *_sparc.udeb \
#  --exclude Contents-powerpc.gz --exclude Contents-sparc.gz \
"

Ce fichier de configuration doit être adapté à vos besoins.

  • EMAIL : Une adresse mail personnelle externe peut être introduite cependant il faudra avoir un agent de transport de courier configuré telque postfix (recommandé).
  • SPEED : Il est recommandé de mettre une valeur basse (par exemple 128 KBytes par seconde) afin de ne pas étrangler le serveur à partir duquel la synchronisation se fait. Effectivement, il n'y a aucune urgence à ce que cette synchronisation se fasse dans les plus bref délais. Cette valeur basse devrait permettre de maintenir à jour un dépôt selon les recommandations d'une synchronisation chaque 6 heures. Comme annoncé dans les recommandations particulières, l'administrateur veillera au bon déroulement des synchronisations.
  • Les variables suivantes dépendent des choix fait par l'administrateur du miroir. Effectivement, pour plusieurs raisons, il est bon de limiter la synchronisation aux parties dont on aura besoin. Par exemple, je souhaite avoir un mirroir pour servir des machines x86 et amd64 uniquement. Je peux dés lors décommenter UBUARC_DIR et les exclusions qui s'y rapportent UBUARC_EXCLUDE. Il faudra s'assurer que le répertoire indiqué pour la variable UBUARC_DIR existe ou il faudra le créer.
  • Pour plusieurs raisons ayant atrait à la qualité du réseau, il est recommandé de bien choisir le serveur à partir duquel l'administrateur synchronisera le sien. Evidemment, il faudra veiller à ce que ce serveur supporte bien la synchronisation par rsync. Ce n'est pas le cas de tous les dépôts. Dans le cas d'un serveur national officiel, il est demandé que celui-ci se synchronise sur le serveur de base (Londre). Dans les autres cas, il est recommandé de synchroniser son serveur à partir du serveur national officiel ou d'un autre serveur proche (en terme réseau ç-à-d avec peu de hop) et bien maintenu à jour. La liste des miroirs Ubuntu est disponible sur Launchpad pour la partie archive et pour la partie cdimage.
sudo ubuarchive

La première exécution sera longue. Si vous n'avez pas une IP fixe, votre connexion se coupera à un moment et l'administrateur recevra un mail d'avertissement que la synchronisation n'a pas réussie. Ce n'est pas grave. Il faudra juste relancer le script qui a échoué. Après avoir introduit votre mot de passe administrateur, s'il vous est demandé, l'exécution de la commande ci-dessus ne renverra rien sur la console (standard output aka stdout). Vous pouvez alors envoyer ce processus à l'arrière plan avec la combinaison des touches CTRL et Z suivi de la commande bg. L'administrateur pourra alors suivre l'évolution de la commande dans le journal (fichier log) avec la commande

tail -f /var/log/ubumirror/ubuarchive.log

Vous pouvez quitter ce processus avec la combinaison des touches CTRL et C sans crainte d'arrêter le processus ubuarchive. Ce sont bien deux processus distincts. Une fois que la première synchronisation sera réussie, l'administrateur pourra automatiser les synchronisations avec un cron job et rendre le miroir accessible aux utilisateurs par http, ftp et/ou rsync.

L'exécution des autres scripts est similaire.

L'administrateur pourra ajouter cette ligne au fichier /etc/crontab pour automatiser la synchronisation de la partie archive

33 */6 * * * root /usr/bin/ubuarchive >/dev/null 2>&-

Il fera de même pour automatiser l'exécution des autres scripts en adaptant l'horraire en fonction du contenu.

sudo apt-get install apache2
sudo ln -s /srv/mirror/ubuntu /var/www

Pour plus d'information sur la configuration d'un serveur web (par exemple apache2), le lecteur trouvera des articles détaillés sur ce site.

  • ubumirror.1295862149.txt.gz
  • Dernière modification: Le 18/04/2011, 14:45
  • (modification externe)