7169
Commentaire:
|
7299
|
Texte supprimé. | Texte ajouté. |
Ligne 152: | Ligne 152: |
Les dvd de debian etch et hardy 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. | Les dvd de debian et ubuntu (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. |
Ligne 154: | Ligne 154: |
Pour copier le contenu de ces répertoire vers la racine de notre miroir, l'utilisation de rsync par exemple peut être envisager de la façon suivante pour chaque dvd: | 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: |
Ligne 159: | Ligne 159: |
umount -l /media/cdrom | |
Ligne 160: | Ligne 161: |
Ensuite, 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. | 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. |
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
- Installer le logiciel prévu pour faire des miroirs :
# aptitude install debmirror
- Ecrire un ou des scripts de mise à jour des miroirs (par exemple dans /usr/local/bin/miroirs-debian) : voir des exemples ci-dessous
- Tester votre/vos script(s) en les lançant à la main...
- 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
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
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
Les dvd de debian et ubuntu (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.