Richard Dern

Installation d'un miroir pour debian ou ubuntu

Histoire d’avoir ça toujours sous la main, voilà la procédure pour créer un miroir d’un dépôt Debian. Tout d’abord, il faut déterminer si le dépôt que l’on veut copier permet de passer par rsync ou non.

Dépôt avec accès rsync

On installe le paquet rsync:

apt-get install rsync

On télécharge le fichier de configuration:

wget http://www.debian.org/mirror/anonftpsync

Si l’on souhaite synchroniser plusieurs miroirs avec rsync, enregistrez ce fichier avec un nom unique. Par exemple, debian-sync, debian-multimedia-sync, etc.

Dans ce fichier, modifier les lignes suivantes:

TO=<répertoire de destination>
RSYNC_HOST=<hôte du dépôt>
RSYNC_DIR=<répertoire du dépôt>
LOGDIR=<fichier journal>
ARCH_EXCLUDE=<toutes les architectures à exclure, séparées par des espaces>

L’hôte du dépôt peut être sélectionné depuis la liste des miroirs Debian. Il ne s’agit que du nom de domaine (par exemple: ftp2.fr.debian.org).

Pour la variable RSYNC_DIR, connectez-vous au dépôt dont vous voulez faire un miroir, et placez-vous à la racine de ce dépôt. Généralement, RSYNC_DIR aura pour valeur debian, dans la mesure où il devrait exister un répertoire de ce nom, immédiatement à la racine du serveur.

LOGDIR contient le chemin complet vers le répertoire où seront stockés les fichiers journaux. Attention si vous faites plusieurs miroirs avec le même LOGDIR: vous devrez modifier la variable LOGFILE plus bas dans le fichier de configuration, pour éviter que les journaux s’écrasent mutuellement.

La liste des architectures disponibles est présente dans la description de la variable ARCH_EXCLUDE: il suffit de copier celles dont on ne veut pas, entre guillemets.

Une fois la configuration terminée, il ne reste plus qu’à rendre le script exécutable:

chmod +x /scripts/debian-rsync

Et à l’exécuter une première fois:

/scripts/debian-rsync

Attention, ça va prendre plusieurs heures, voire une nuit entière.

Dépôt sans accès rsync

Dans le cas où le serveur que vous voulez copier ne propose pas de module rsync, vous devrez utiliser apt-mirror.

apt-get install apt-mirror

Après cette installation, vous trouverez un fichier mirror.list dans le dossier /etc/apt. Faites une copie de ce fichier, et donnez-lui un nom unique (comme tout à l’heure, mirror.list-debian ou mirror.list-debian-multimedia), puis éditez-le.

base_path correspond au répertoire cible, là où sera créé le dépôt. Laissez les autres variables telles quelles. Ajoutez ensuite la liste du ou des dépôt(s) à copier. Par exemple, pour ubuntu, nous aurons le fichier de configuration suivant:

set base_path /mnt/shares/debian-mirror/ubuntu
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 i386
set nthreads     4
set tilde 0

deb http://archive.ubuntu.com/ubuntu/ lucid main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ lucid-updates main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ lucid-security main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ lucid-backports main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ lucid main/debian-installer

deb-amd64 http://archive.ubuntu.com/ubuntu/ lucid main restricted universe multiverse
deb-amd64 http://archive.ubuntu.com/ubuntu/ lucid-updates main restricted universe multiverse
deb-amd64 http://archive.ubuntu.com/ubuntu/ lucid-security main restricted universe multiverse
deb-amd64 http://archive.ubuntu.com/ubuntu/ lucid-backports main restricted universe multiverse
deb-amd64 http://archive.ubuntu.com/ubuntu/ lucid main/debian-installer

clean http://archive.ubuntu.com/ubuntu

Vous noterez les lignes commençant par “deb-amd64”: il s’agit simplement d’indiquer à apt-mirror que l’on souhaite également faire un miroir des dépôts pour une architecture amd64. Si vous ne voulez que cette architecture et uniquement celle-là, remplacez la variable:

set defaultarch amd64

Et supprimez les lignes commençant par “deb-amd64”. Laconfiguration présentée ici est valable pour les architectures i386 et amd64.

Maintenant, nous allons créer l’arborescence cible (en fonction de la variable base_path définie ci-dessus):

mkdir -p  /mnt/shares/debian-mirror/ubuntu/{var,skel,mirror}

On lance ensuite une première fois la copie:

apt-mirror /etc/apt/mirror.list-debian

Ici aussi, patience, la copie peut prendre plusieurs heures.

Automatisation de la mise à jour

On rajoute la ligne suivante dans la crontab, si on utilise rsync:

2     54     *     *     *     /scripts/debian-rsync

Ou la ligne suivante, si on utilise apt-mirror:

2     54     *     *     *     /usr/bin/apt-mirror /etc/apt-/mirror.list-debian

Vérifiez bien les chemins et les noms de fichiers, pour qu’ils correspondent à votre cas. Maintenant, chaque nuit, vos miroirs vont se mettre à jour tout seuls.

Rendre accessible les miroirs via http

Il faut, bien sûr, avoir un serveur http sous la main. Par exemple, apache. Créez un hôte virtuel, ayant pour racine, par exemple, /var/www/mirror.

L’idéal serait de mettre tous les miroirs dans un même répertoire, chaque miroir ayant son propre répertoire. Par exemple:

Il suffit ensuite d’exécuter la commande suivante pour rendre un miroir disponible via http:

ln -s <chemin vers le miroir> /var/www/mirror/

Attention aux miroirs créés via apt-mirror: apt-mirror créé une arborescence particulière, du type <base_path>/mirror//, où:

En reprenant l’exemple de notre fichier de configuration, le chemin complet vers notre dépôt ubuntu serait /mnt/shares/debian-mirror/ubuntu/mirror/archive.ubuntu.com/ubuntu. C’est un peu long, mais au moins, tout est bien organisé…

Conclusion

Pour finir, il faut ajouter notre dépôt à notre sources.list:

deb http://<adresse du serveur>/<root> <dist> <branches>

Échanger autour de ce texte

Si vous souhaitez réagir publiquement, un fil dédié vous attend.

Ouvrir le fil de discussion

Taxonomies

Tags