Si l’on administre beaucoup de machines sous Debian, ou si l’on installe souvent des machines, il peut être intéressant d’avoir une copie locale des dépots afin d’améliorer le temps d’accès.
La distribution Debian, et ses dérivées comme Ubuntu, propose des outils permettant de réaliser cette copie simplement.

Les outils nécessaires

Pour faire cette copie, il faut installer apt-mirror, en tant que root, utiliser la commande :

    apt-get install apt-mirror

Pour Ubuntu, il faudra précéder cette commande de sudo.

Les répertoires du miroir

Pour mes tests, j’ai utilisé une partition disponible qui a été montée dans le dossier /montage avec la commande :

    mkdir /montage
    mount /dev/hda4 /montage

Pour accueillir le contenu du dépot, il faut créer un certains nombre de dossiers, cela se fait avec la commande suivante :

    mkdir -p /montage/depot/{mirror,skel,var}

Il faut ensuite modifier le propriétaire de ces dossiers, ils doivent appartenir au compte apt-mirror qui a été créé lors de l’installation de l’outil. Il faut utiliser la commande :

    cd /montage
    chown -R apt-mirror:apt-mirror depot

Il faut que le système de fichier devant accueillir le miroir du dépot soit assez grand, une copie du mirroir de Lenny en 32 bits occupe 24Go.

La configuration

Un exemple de configuration de l’outil apt-mirror est donnée dans le fichier /etc/apt/mirror.list.
Pour séparer la configuration mise en place de celle livrée par défaut, il faut créer un dossier et y copier la modèle de configuration :

    mkdir /monatge/depot/config
    cp /etc/apt/mirror.list /monatge/depot/config/.

Il faut ensuite adapter ce fichier à son besoin, voila ce que cela donne pour une copie de Debian Lenny en 32bits :

    ############# config ##################
    #
    # Definition du repertoire racine du miroir local
    # set base_path    /var/spool/apt-mirror
    set base_path    /montage/depot
    #
    # if you change the base path you must create the directories below with write privlages
    #
    set mirror_path  $base_path/mirror
    set skel_path    $base_path/skel
    set var_path     $base_path/var
    # set cleanscript $var_path/clean.sh
    # Architecture par defaut
    set defaultarch  i386
    # Nombre de connexions ouvertes en parallele pour le telechargement
    #set nthreads     20
    set nthreads     5
    set _tilde 0
    #
    ############# end config ##############

    #Debian Lenny
    deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
    deb http://security.debian.org/ lenny/updates main contrib non-free
    deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free

    clean http://ftp.fr.debian.org/debian
    clean http://security.debian.org
    clean http://volatile.debian.org/debian-volatile

Si l’on veut réaliser un miroir avec les architectures 32 et 64 bits, il faut utiliser la syntaxe suivante pour décrire l’adresse source des dépots 64 bits:

    #Debian Lenny
    deb-amd64 http://ftp.fr.debian.org/debian/ lenny main contrib non-free
    deb-amd64 http://security.debian.org/ lenny/updates main contrib non-free
    deb-amd64 http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free

Activer la copie

Pour lancer la création du miroir local, il faut utiliser la commande

    apt-mirror /montage/depot/config/mirror.list

Pour la première copie, il faut être patient :

    $ date ; apt-mirror /montage/depot/config/mirro.list ; date
    samedi 21 novembre 2009, 17:10:12 (UTC+0100)
    Downloading 27 index files using 5 threads...
    Begin time: Sat Nov 21 17:10:12 2009
    [5]... [4]... [3]... [2]... [1]... [0]... 
    End time: Sat Nov 21 17:11:10 2009

    Proceed indexes: [PPP]

    22.8 GiB will be downloaded into archive.
    Downloading 24073 archive files using 5 threads...
    Begin time: Sat Nov 21 17:11:17 2009
    [5]... [4]... [3]... [2]... [1]...  [0]... 
    End time: Sun Nov 22 02:46:54 2009

Utiliser le dépot

Une fois la copie réalisée sur une machine locale, il faut rendre accessible ces répertoires depuis une instance web.
Il faut créer les liens permettant d’accéder aux fichiers :

    cd /var/www
    ln -s /montage/depot/mirror/security.debian.org
    ln -s /montage/depot/mirror/ftp.fr.debian.org/debian
    ln -s /montage/depot/mirror/volatile.debian.org/debian-volatile

Enfin, il faut modiifer le fichier sources.list pour le faire pointer vers le miroir :

    deb http://<adresse du miroir>/debian/ lenny main contrib non-free
    deb http://<adresse du miroir>/debian-security/ lenny/updates main contrib non-free
    deb http://<adresse du miroir>/debian-volatile/ lenny/volatile main contrib non-free

 

Liens

Quelques informations complémentaires sur le forum Ubuntu-Fr.