Miroir Debian

De ClissXXI.

Si vous allez chez des clients démunis d'un accès haut débit, un miroir Debian partiel doit faire partie de votre kit de survie.

Sommaire

Tentons donc de créer un miroir

  • Utilisation de debmirror:
aptitude install debmirror patch
  • Télécharger les clefs GPG (cf. commentaires).
  • Lancer la réplication:
#!/bin/sh
# Download and update a Debian Etch mirror
# Author: Sylvain Beucler <beuc@beuc.net>

# You may need to import signing keys first:
# gpg --keyring /etc/apt/trusted.gpg --export | gpg --import
#
# Or manually:
# gpg --keyserver keyring.debian.org --recv 4F368D5D # 2005
# gpg --keyserver keyring.debian.org --recv 2D230C5F # 2006
# gpg --keyserver keyring.debian.org --recv 6070D3A1 # Etch auto
# gpg --keyserver wwwkeys.eu.pgp.net --recv ADB11277 # Etch stable
#   http://ftp-master.debian.org/keys/archive-key-5.0.asc
# gpg --keyserver wwwkeys.eu.pgp.net --recv F42584E6 # Lenny stable
# gpg --keyserver wwwkeys.eu.pgp.net --recv BBE55AB3 # Etch volatile auto
#   http://volatile.debian.org/etch-volatile.asc
# gpg --keyserver wwwkeys.eu.pgp.net --recv  6D849617 # Lenny volatile auto
#   http://www.debian.org/volatile/lenny-volatile.asc
# gpg --keyserver wwwkeys.eu.pgp.net --recv 55BE302B # Lenny auto
#   http://ftp-master.debian.org/keys/archive-key-5.0.asc
# gpg --keyserver pgpkeys.pca.dfn.de --recv 16BA136C # backports.org
#   http://backports.org/debian/archive.key
# gpg --keyserver keyring.debian.org --recv 1F41B907 # debian-multimedia

verbose="0"
verbose_opt=""
if [ $verbose -eq 1 ]; then
    verbose_opt="--verbose"
fi
# Etch
# Currently 2.6.18-4 packages are removed from the pool/, but not from
# Packages, so we use --ignore-small-errors
debmirror $verbose_opt --host=ftp.fr.debian.org --dist=etch --dist=stable \
    --section=main,main/debian-installer --nosource --getcontents \
    --ignore-small-errors \
    /var/www/mirrors/debian

# Etch security
debmirror $verbose_opt --host=security.debian.org --dist=etch/updates \
    --root=debian-security --section=main --nosource --method=http \
    /var/www/mirrors/debian-security

# Etch volatile
debmirror $verbose_opt --host=volatile.debian.org --dist=etch/volatile \
    --root=debian-volatile --section=main --nosource --getcontents \
     --method=http /var/www/mirrors/debian-volatile

# Etch backports
debmirror $verbose_opt --host=www.backports.org --method=http \
    --dist=etch-backports --section=main --nosource --getcontents \
    /var/www/mirrors/backports.org

# Debian multimedia
# deb http://mirror.home-dn.net/debian-multimedia stable main
debmirror $verbose_opt --host=www.debian-multimedia.org --method=http \
    --dist=stable --root=/ --section=main --nosource --getcontents \
    /var/www/mirrors/debian-multimedia

Il est possible d'interrompre la réplication et de la reprendre plus tard.

Il est également possible d'utiliser plusieurs fois l'option --dist, par exemple --dist=sarge --dist=etch. Ici on récupère à la fois 'sarge' et 'stable' de sorte que les deux soient disponibles (les logiciels peuvent utiliser alternativement un nom ou l'autre) - bien entendu les paquets eux-mêmes ne seront téléchargés qu'une seule fois, dans pool/.

--getcontents permet de récupérer le fichier Content-i386.gz, utilisé notamment par apt-file. Il n'est pas fourni par security.debian.org pour le moment, et demander --getcontents est considéré comme une erreur (plus de mise à jour de Packages.gz - à corriger).

Inconvénients:

  • Il y a une perte de place, car les paquets qui ont eu une mise à jour de sécurité sont téléchargés dans mirrors/debian, et redondants par rapport à mirrors/debian-security. Pourrait-il y avoir des problèmes avec l'installateur Debian si la version d'origine de ces paquets manque, cependant?
  • Il n'est pas possible de récupérer uniquement les codes source


En local, on peut utiliser directement le miroir; dans /etc/apt/sources.list:

deb file:///mnt/mirrors/debian sarge main

Place disque utilisée

  • 2006-03-25 - release Sarge 6/2005:
    • mirrors/debian: ~8,6 Go (fixe, + ~9 Go pour les sources)
    • mirrors/debian-security: ~1,4 Go (grossit, + ~800 Mo pour les sources)
    • mirrors/backports.org: ~2,8 Go (grossit, + ~2Go pour les sources)
  • 2007-04-23, paquets binaires uniquements, release Etch 4/2007:
$ du -sch backports.org/ debian/ debian-security/
200M    backports.org/
13G     debian/
523M    debian-security/
14G     total
  • 2009-05, paquets binaires uniquements, release Lenny 2/2009:
1,2G    debian-backports.org/
TODO

Partager le miroir

Une petite config Apache suffit:

#Alias /mirrors /var/www/mirrors
<Directory "/var/www/mirrors">
  Options Indexes
  AllowOverride None
</Directory>

Au niveau client, le /etc/apt/sources.list ressemblera à:

deb http://192.168.1.63/mirrors/debian etch main
deb http://192.168.1.63/mirrors/debian-security etch/updates main
deb http://192.168.1.63/mirrors/backports.org etch-backports main

Pour une installation Debian par le réseau, lorsque l'installateur vous demande le pays de votre miroir, choisissez le paramétrage manuel (tout en haut de la liste), puis:

  • Nom d'hôte: IP de votre machine
  • Répertoire: /mirrors/debian

Autres solutions à creuser

  • apt-move "can also build a partial or complete local mirror of a Debian binary distribution (including an ``installed-packages only mirror)."
  • debian-mirror est peut-être intéressant, mais pas de paquet Debian, bouh :p
  • Setting up a Debian archive mirror recommande d'utiliser anonftpsync. Même remarque :p Qui plus est, il faut sélectionner les architectures qu'on ne souhaite pas télécharger, à la place de ne sélectionner que les architectures dont on a besoin. C'est un script très court qui se base sur rsync, et ne peut pas créer de miroir partiel. debmirror semble plus simple.

Autres solutions non retenues

  • Il est possible d'utiliser un DVD d'installation, mais ce ne sera pas pratique:
    • il vous faudra changer régulièrement entre les deux CDs, voire entre plusieurs postes
    • vous n'aurez pas les mises à jour de sécurité (même si votre CD a été créé avec Jigdo)
  • Utiliser un apt-proxy sur votre ordinateur portable n'est pas une solution satisfaisante: il vous faudra le paramétrer pour éviter qu'il cherche des mises à jour lors d'un travail hors-ligne, et il vous manquera certainement des paquets.
  • debmirror + fichier de configuration (par opposition à ligne de commande): on a besoin d'au moins deux serveurs et donc deux configurations au minimum (stable, stable/security, éventuellement sarge-backports). C'est plus pratique en ligne de commande.
Outils personnels