Cette page explique comment mettre en place et maintenir un miroir Debian/Ubuntu

Pourquoi avoir un miroir local ?

Contraintes

Il faut avoir une connection Internet correcte (256kbps minimum), stable, du courant la nuit et un GROS disque dur :

Attention : sur une bande passante moyenne, commencer un miroir à partir de rien n'est absolument pas raisonnable. Il faut commencer avec une archive de base qui sera soit un miroir assez récent obtenu chez un collègue (sur un disque dur USB2 par exemple), soit un ensemble de cédéroms ou dévédéroms (opération assez complexe, voir en bas de la page).

Solution 1 : debmirror

  1. Installer le logiciel prévu pour faire des miroirs :
    # aptitude install debmirror
  2. Ecrire un ou des scripts de mise à jour des miroirs (par exemple dans /usr/local/bin/miroirs-debian) : voir des exemples ci-dessous
  3. Créer un utilisateur miroir dédié à cet usage, lui donner les droits rwx dans les répertoires où seront téléchargés les miroirs

  4. Tester vos scripts en les lançant à la main, avec cet utilisateur miroir

  5. Si tout va bien, le placer en cron. Par exemple :

    # fichier /etc/cron.d/miroirs
    # Lancement du miroir Debian
    # tous les soirs à 20h, par l'utilisateur "miroir" créée spécifiquement :
    0 20 * * * miroir /usr/local/bin/miroirs-debian
    # 4 heures ensuite, on lance le miroir d'Ubuntu :
    0 0 * * * miroir /usr/local/bin/miroirs-ubuntu

Scripts debmirror pour Debian et Ubuntu

Un script pour faire ou mettre à jour un miroir Debian :

Script pour Ubuntu : miroir-ubuntu.sh

Solution 2 : apt-mirror

Solution 3 : reprepro

A étudier : http://lostwebsite.wordpress.com/2008/10/21/partial-debian-mirrors/

Vérifier la place occupée par distribution/section/architecture

Voici un petit script permettant de calculer la place utilisée globalement ou par distribution, section ou architecture dans le miroir.

/!\ Attention : vu que tout est mis en vrac dans un pool, il se base sur les informations déclarées dans les fichiers Packages, ce qui suppose donc un miroir en bon état faute de quoi les calculs ne refléteraient pas la réalité.

Débuter un miroir à partir des cédéroms

Les DVD de debian et ubuntu alternate (etch, gutsy et hardy sont les distributions pour lesquels j'ai testé cette méthode) comporte une arborescence classique comprenant les répertoires pool et dists à la racine de chaque dvd. Pool contient les différents paquets de la distribution, et dists contient pour chaque distributions (en supposant qu'on dispose de dvd de plusieurs distributions de ubuntu par exemple) la liste des paquets et les versions correspondantes. Les paquets décrits dans les listes contenues dans les répertoires dists sont en principe dans le répertoire pool.

Pour copier le contenu de ces répertoires vers la racine de notre miroir, l'utilisation de rsync par exemple peut être envisagé de la façon suivante pour chaque dvd:

mount /media/cdrom
rsync -av /media/cdrom/pool /srv/www/miroirs/ubuntu/pool
rsync -av /media/cdrom/dists /srv/www/miroirs/ubuntu/dists
umount -l /media/cdrom

Une fois tous les dvd copiés, il suffit de mettre en marche les différents scripts présentés ci-dessus pour terminer la mise à jour du miroir et le téléchargement des dernières versions des fichiers Release, Packages et Contents.

Faire un ou plusieurs miroirs de PPA

Voici un script qui appelle debmirror avec les bons paramètres pour faire le miroir d'un PPA donné (PPA = Personal Package Archives, un système qui permet à tout le monde de faire héberger ses paquets sur Launchpad, le système de Canonical/Ubuntu).