Modifications entre les versions 17 et 18
Version 17 à la date du 2008-05-19 15:46:10
Taille: 5685
Commentaire: hop, avec des sous-totaux et j'arrête là... vraiment ! ;-)
Version 18 à la date du 2008-06-10 22:15:32
Taille: 6149
Éditeur: ThomasNoël
Commentaire: apt-mirror, ça semble intéressant comme truc
Texte supprimé. Texte ajouté.
Ligne 1: Ligne 1:
== Maintenir un miroir Debian/Ubuntu == Cette page explique comment mettre en place et maintenir un miroir Debian/Ubuntu
Ligne 3: Ligne 3:
=== Avantages === = Pourquoi avoir un miroir local ? =
Ligne 8: Ligne 8:
=== Contraintes === = Contraintes =
Ligne 19: Ligne 19:
=== L'outil : debmirror === = Solution 1 1 : utiliser debmirror =
Ligne 21: Ligne 21:
 1. Installer le logiciel prévu pour faire des miroirs : {{{  1. Installer le logiciel prévu pour faire des miroirs :
 
{{{
Ligne 25: Ligne 26:
 1. Tester votre/vos script(s) en les lançant à la main
 1. Si tout va bien, le placer en cron avec par exemple :
{{{
 1. Tester votre/vos script(s) en les lançant à la main...
 1. Si tout va bien, le placer en cron, par exemple :
 {{{
Ligne 35: Ligne 36:
=== Scripts pour Debian et Ubuntu === == Scripts debmirror pour Debian et Ubuntu ==
Ligne 39: Ligne 40:
{{{   {{{
#!/bin/sh
Ligne 64: Ligne 66:
Pour Ubuntu Feisty (actuel) et Gutsy (à prévoir pour cembre 2007) : Exemples pour Ubuntu Feisty et Gutsy (à adapter aux versions plus actuelles) :
Ligne 66: Ligne 68:
{{{  {{{
#!/bin/bash
Ligne 87: Ligne 90:
=== Vérifier la place occupée par distribution/section/architecture === = Solution 2 : avec apt-mirror =

 * [[http://packages.debian.org/etch/apt-mirror|le paquet Debian]]
 * c'est une solution qui semble mieux "maintenue" (`debmirror`, c'est quand même un gros ''hack'')
 * `apt-mirror` permet apparement de faire des mirroirs installables en réseau sans trop se fatiguer (c'est prévu, quoi, sans bidouiller)
 * à tester : http://ubuntu-tutorials.com/2008/06/10/how-to-create-an-ubuntu-repository-mirror-on-ubuntu-804/
 
= Vérifier la place occupée par distribution/section/architecture =
Ligne 93: Ligne 103:
{{{   {{{
Ligne 139: Ligne 149:
=== Débuter un miroir à partir des cédéroms ===
Ligne 141: Ligne 150:
En cours de migration de : http://tech.auf/wiki/MiroirDebian = Débuter un miroir à partir des cédéroms =
Ligne 143: Ligne 152:
Pour aller plus loin : http://tech.auf/wiki/BAP:Miroirs ''à écrire''

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

Pourquoi avoir un miroir local ?

  • Installer un miroir Debian sur son réseau local rend plus rapide l'installation et la mise à jour de paquets sur ses machines.
  • En effectuant les mises à jour des miroirs la nuit, cette méthode permet de libérer la bande passante le jour.

Contraintes

Il faut avoir une connection Internet correcte (256kbps minimum), stable, du courant la nuit et un disque dur d'au moins 60Go :

  • 14 Go pour Debian Etch i386 (double si vous avez aussi amd64)

  • XX Mo pour Debian "security" Etch i386
  • 16 Go pour Ubuntu Feisty i386 (amd64 non conseillée, trop de soucis avec les codecs et les plug-ins non libres)

  • 1 Go pour Ubuntu security Feisty i386
  • ... qui sait combien cela donne pour Gutsy i386 ?

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 1 : utiliser 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. Tester votre/vos script(s) en les lançant à la main...
  4. Si tout va bien, le placer en cron, par exemple :
    # fichier /etc/cron.d/miroir-debian-ubuntu
    # Lancement toutes les nuits à 2h du matin, par l'utilisateur "miroir" créée spécifiquement
    0 2 * * * miroir /usr/local/bin/miroirs-debian
    # 3 heures ensuite, on lance le miroir d'Ubuntu
    0 5 * * * miroir /usr/local/bin/miroirs-ubuntu

Scripts debmirror pour Debian et Ubuntu

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

  • #!/bin/sh
    
    # Repertoire cible et site source (prendre le plus proche au sens réseau Internet)
    LOCALDEST=/srv/www/miroirs/debian
    SERVSOURCE=ftp.fr.debian.org
    
    # Choisir les options pour la création du miroir : 
    #     man debmirror  
    # et/ou  
    #     debmirror --help
    
    debmirror $LOCALDEST --host=$SERVSOURCE \
            --arch=i386 --nosource --method=rsync \
            --root=:debian --dist=etch \
    #        --debug --progress # décommenter pour déboguer
    
    debmirror $LOCALDEST-security --host=security.debian.org \
            --arch=i386 --nosource --method=rsync \
            --root=:debian-security --dist=etch/updates \
    #        --debug --progress # décommenter pour déboguer
    
    exit 0

Exemples pour Ubuntu Feisty et Gutsy (à adapter aux versions plus actuelles) :

  • #!/bin/bash
    
    # Repertoire cible et site source (prendre le plus proche au sens réseau Internet)
    LOCALDEST=/srv/www/miroirs/ubuntu
    SERVSOURCE=fr.archive.ubuntu.com
    
    # Choisir les options pour la création du miroir : 
    # lire "man debmirror" et/ou "debmirror --help"
    
    /usr/bin/debmirror $LOCALDEST --host=$SERVSOURCE \
            --arch=i386 --root=:ubuntu --nosource \
            --ignore-release-gpg --timeout=3600 --method=rsync \
            --dist=feisty,feisty-updates,feisty-backports,feisty-security,gutsy,gutsy-updates,gutsy-backports,gutsy-security \
            --section=main,restricted,multiverse,universe \
    #        --debug --progress # décommenter pour déboguer
    
    
    exit 0

Solution 2 : avec apt-mirror

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é.

  • #!/bin/bash
    # taille-miroir.sh - script de vérification de taille de miroir
    # Copyright ©2008  Agence universitaire de la Francophonie
    # Licence : GPL version 2
    # Auteur : Progfou <jean-christophe.andre@auf.org>, Mai.2008
    #
    # Usage : taille-miroir.sh [sous-dossier [dist [section [arch]]]]
    # Exemple : taille-miroir.sh ubuntu intrepid
    #
    DIR="/srv/www/miroirs"
    SUBDIR="$1"
    DIST="$2"
    SECTION="$3"
    ARCH="$4"
    
    cd "$DIR" || exit 1
    dirs=$(find "${SUBDIR:-.}" -name dists -printf "%h\n" | egrep -v '/.temp(/|$)')
    grandtotal=0
    for dir in $dirs
    do
      dir="${dir#./}"
      printf " / Tailles pour $dir :\n"
      total=0
      pathes=$(find "$dir/dists" -name Packages -printf "%P\n" | sort -t/ -k1)
      for path in $pathes
      do
        dist="${path%%/*}" ; path="${path#*/}"
        [ "$DIST" ] && [ "${dist:0:${#DIST}}" != "$DIST" ] && continue
        test -d "$dir/dists/$dist" -a ! -L "$dir/dists/$dist" || continue
        file="${path##*/}" ; path="${path%/*}"
        arch="${path##*/}" ; section="${path%/*}"
        [ "$SECTION" ] && [ "$section" != "$SECTION" ] && continue
        [ "$ARCH" ] && [ "$arch" != "$ARCH" ] && continue
        size=$(awk 'BEGIN{s=0}/^Size:/{s+=$2}END{print int(s/1024/1024)}' $dir/dists/$dist/$section/$arch/$file)
        printf "| %-20s %-30s %10s : %5s Mio\n" "$dist" "$section" "$arch" "$size"
        total=$((total+size))
      done
      printf " \\ TOTAL pour $dir : %s Mio\n" "$total"
      grandtotal=$((grandtotal+total))
    done
    printf "GRAND TOTAL : %s Mio\n" "$grandtotal"
    exit 0

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

à écrire

Miroir (dernière édition le 2011-02-02 19:33:19 par MoussaNombre)