3616
Commentaire: converted to 1.6 markup
|
← Version 37 à la date du 2011-02-02 19:33:19 ⇥
10152
apt-mirror abandonné à Montréal
|
Texte supprimé. | Texte ajouté. |
Ligne 1: | Ligne 1: |
== Maintenir un miroir Debian/Ubuntu == | <<TableOfContents>> |
Ligne 3: | Ligne 3: |
=== Avantages === | Cette page explique comment mettre en place et maintenir un miroir Debian/Ubuntu |
Ligne 5: | Ligne 5: |
* Installer un miroir Debian sur son réseau local rend plus rapide l'installation et la mise à jour de paquets sur ses machines. | = Pourquoi avoir un miroir local ? = * Installer un miroir Ubuntu sur son réseau local rend plus rapide l'installation et la mise à jour de paquets sur ses machines. * Un miroir Debian permet d'installer et maintenir facilement son parc de serveur |
Ligne 8: | Ligne 11: |
=== Contraintes === | = Contraintes = |
Ligne 10: | Ligne 13: |
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 ? |
Il faut avoir une connection Internet correcte (256kbps minimum), stable, du courant la nuit et un GROS disque dur : * 50Go pour [[Debian]] Etch+Lenny i386+amd64 (sans doute la moitié pour une seule architecture) * 10Go pour Debian "security" Etch+Lenny i386+amd64 (mesuré le 4 mai 2009) * 70Go pour [[Ubuntu]] Hardy+Intrepid+Jaunty i386 |
Ligne 19: | Ligne 20: |
=== L'outil : debmirror === | = Principe général = |
Ligne 21: | Ligne 22: |
1. Installer le logiciel prévu pour faire des miroirs : {{{# aptitude install debmirror}}} 1. Ecrire un ou des scripts de mise à jour des miroirs (par exemple dans /usr/local/bin/miroirs-debian) : voir des exemples ci-dessous 1. Tester votre/vos script(s) en les lançant à la main 1. Si tout va bien, le placer en cron avec 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 |
1. Ecrire un script de mise à jour du miroir (par exemple dans /usr/local/bin/miroirs-debian.sn), voir des exemples ci-dessous 1. 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 (et nulle part ailleurs) 1. Tester le script en le lançant à la main, depuis cet utilisateur `miroir` 1. Si tout va bien, placer le script dans un ''cron''. Par exemple : {{{ # extrait du 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.sh # 4 heures plus tard, on lance le miroir d'Ubuntu : 0 0 * * * miroir /usr/local/bin/miroirs-ubuntu.sh |
Ligne 32: | Ligne 35: |
=== Scripts pour Debian et Ubuntu === | == Solution 1 (recommandée) : scripts utilisant debmirror == |
Ligne 34: | Ligne 37: |
Un script pour faire ou mettre à jour un miroir Debian : | Installer d'abord le logiciel `debmirror`. Lisez la documentation (`man debmirror` et `debmirror --help`) : elle est très bien faite. |
Ligne 36: | Ligne 39: |
{{{#!/bin/sh | Ces scripts permettent de créer puis de mettre à jour un miroir : * pour Debian : [[attachment:miroir-debian.sh]] * pour Ubuntu : [[attachment:miroir-ubuntu.sh]] |
Ligne 38: | Ligne 43: |
# Repertoire cible et site source (prendre le plus proche au sens réseau Internet) LOCALDEST=/srv/www/miroirs/debian SERVSOURCE=ftp.fr.debian.org |
== Solution 2 (à valider) : apt-mirror == |
Ligne 42: | Ligne 45: |
# Choisir les options pour la création du miroir : # man debmirror # et/ou # debmirror --help |
Solution actuellement utilisée pour les miroirs à Montréal. . ''Mise à jour (02 fév 2011) : "git-commit: On remonte le miroir en utilisant debmirror / avec apt-mirror on a plusieurs fois eu des soucis de miroir non à jour" Donc apt-mirror abandonné à Montréal -- [[MoussaNombre|NM]]'' |
Ligne 47: | Ligne 49: |
debmirror $LOCALDEST --host=$SERVSOURCE \ --arch=i386 --nosource --method=rsync \ --root=:debian --dist=etch \ # --debug --progress # décommenter pour déboguer |
Solution actuellement utilisée pour les miroirs à Cotonou. |
Ligne 52: | Ligne 51: |
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 |
* [[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/ * Il faut créer un cron journalier (dans '/etc/cron.d/apt-mirror' par exemple) et y ajouter les lignes suivantes : {{{ # chez moi, c'est tous les jours à 20h qu'il se lance 0 20 * * * mirror_user /usr/bin/apt-mirror /Path_to_mirror_list/mirror.list > /Path_to_mirror_list/var/cron.log }}} * Et ensuite dans /Path_to_mirror_list/mirror.list {{{ # apt-mirror configuration file |
Ligne 57: | Ligne 64: |
exit 0 | set base_path /Path_to_mirror_directory # Les répertoires suivants doivent exister et être modifiable par mirror_user set mirror_path $base_path/mirror set skel_path $base_path/skel set var_path $base_path/var # set defaultarch i386,amd64 set nthreads 20 # set _tilde 0 # Mirroirs à copier : ETCH deb http://ftp2.fr.debian.org/debian etch main contrib non-free deb http://ftp2.fr.debian.org/debian etch main/debian-installer deb http://ftp2.fr.debian.org/debian lenny main contrib non-free deb http://ftp2.fr.debian.org/debian lenny main/debian-installer # Mirroirs à copier : UBUNTU HARDY deb http://archive.ubuntu.com/ubuntu/ hardy main restricted universe multiverse deb http://archive.ubuntu.com/ubuntu/ hardy-updates main restricted universe multiverse deb http://archive.ubuntu.com/ubuntu/ hardy-backports main restricted universe multiverse deb http://archive.ubuntu.com/ubuntu/ hardy main/debian-installer restricted/debian-installer universe/debian-installer multiverse/debian-installer deb http://archive.ubuntu.com/ubuntu/ hardy-updates main/debian-installer restricted/debian-installer universe/debian-installer deb http://archive.ubuntu.com/ubuntu/ hardy-backports main/debian-installer # Mirroirs à copier : UBUNTU INTREPID deb http://archive.ubuntu.com/ubuntu intrepid main restricted universe multiverse deb http://archive.ubuntu.com/ubuntu intrepid-updates main restricted universe multiverse deb http://archive.ubuntu.com/ubuntu intrepid-backports main restricted universe multiverse deb http://archive.ubuntu.com/ubuntu intrepid main/debian-installer restricted/debian-installer universe/debian-installer multiverse/debian-installer deb http://archive.ubuntu.com/ubuntu intrepid-updates main/debian-installer deb http://archive.ubuntu.com/ubuntu intrepid-backports main/debian-installer # Cleaning section clean http://ftp2.fr.debian.org/ skip-clean http://ftp2.fr.debian.org/doc/ skip-clean http://ftp2.fr.debian.org/tools/ skip-clean http://ftp2.fr.debian.org/debian-cd/ skip-clean http://ftp2.fr.debian.org/debian-minicd/ skip-clean http://ftp2.fr.debian.org/debian/dists/lenny/main/installer-i386/ skip-clean http://ftp2.fr.debian.org/debian/dists/etch/main/installer-i386/ skip-clean http://ftp2.fr.debian.org/debian/doc/ skip-clean http://ftp2.fr.debian.org/debian/tools/ skip-clean http://ftp2.fr.debian.org/debian/project/ skip-clean http://ftp2.fr.debian.org/debian-non-US/project/ clean http://archive.ubuntu.com/ubuntu }}} == Solution 3 (à tester) : reprepro == Nous ne l'avons encore jamais mis en place, mais elle semble intéressante. Voir ici : http://lostwebsite.wordpress.com/2008/10/21/partial-debian-mirrors/ = Faire le miroir d'un (ou plusieurs) PPA, avec debmirror = ''PPA'' (Personal Package Archives) est un système qui permet à tout le monde de faire héberger ses paquets sur Launchpad, le système de Canonical/Ubuntu. Voici un script [[attachment:debmirror-ppa.sh]] qui appelle debmirror avec les bons paramètres pour faire le miroir d'un PPA donné. ---- = Annexes = == A tester : utilisation du script debmirror de Debian Sid sur une Lenny == En septembre 2009, une nouvelle version de debmirror a fait son entrée dans Debian sid. Elle propose des fonctionnalités qui pourraient nous intéresser, et semble plus efficace. Voir [[http://alioth.debian.org/~fjp/log/posts/debmirror_II_-_Overview_of_new_features.html|la page d'annonce]] du développeur. L'auteur indique que l'installation de la version de Debian unstable sur une Lenny ne pose aucun problème (debmirror est un script Perl). Vous pouvez donc aller voir sur http://packages.debian.org/debmirror, récupérer le .deb de sid (unstable) et l'installer avec dpkg. Merci d'indiquer le résultat de vos expériences ici, concluantes ou non. -- ThomasNoël <<DateTime(2009-09-15T10:44:58Z)>> == Un problème avec le debmirror de Etch pour les miroirs Ubuntu == Le problème indiqué ci-dessous se pose avec la version debmirror de Etch. La version de debmirror fournie avec Lenny est plus intelligente (migrez, migrez). Les sites d'Ubuntu ont un problème : ils ne possèdent pas de section "restricted/debian-installer" au niveau de *-security", *-updates ou *-backports... Ca fait planter les miroirs quand on veut y intégrer le système d'installation par réseau. C'est très génant. Une façon simple de contourner ce problème est d'installer la version de debmirror fournie par Lenny. Elle fonctionne sans soucis sur Etch, car debmirror est un «simple» script Perl. Pour cela, téléchargez uniquement le fichier `.deb` du paquet, et installez-le avec `dpkg`. Rendez-vous ici : http://packages.debian.org/lenny/all/debmirror/download == 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 |
Ligne 60: | Ligne 158: |
Pour Ubuntu Feisty (actuel) et Gutsy (à prévoir pour décembre 2007) : | 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. |
Ligne 62: | Ligne 160: |
{{{#!/bin/bash | == Vérifier la place occupée par distribution/section/architecture == |
Ligne 64: | Ligne 162: |
# Repertoire cible et site source (prendre le plus proche au sens réseau Internet) LOCALDEST=/srv/www/miroirs/ubuntu SERVSOURCE=fr.archive.ubuntu.com |
Voici un petit script permettant de calculer la place utilisée globalement ou par distribution, section ou architecture dans le miroir : [[attachment:taille-miroir.sh]] |
Ligne 68: | Ligne 164: |
# 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 }}} === Débuter un miroir à partir des cédéroms === En cours de migration de : http://tech.auf/wiki/MiroirDebian Pour aller plus loin : http://tech.auf/wiki/BAP:Miroirs |
/!\ 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é. |
Sommaire
Cette page explique comment mettre en place et maintenir un miroir Debian/Ubuntu
Pourquoi avoir un miroir local ?
- Installer un miroir Ubuntu sur son réseau local rend plus rapide l'installation et la mise à jour de paquets sur ses machines.
- Un miroir Debian permet d'installer et maintenir facilement son parc de serveur
- 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 GROS disque dur :
50Go pour Debian Etch+Lenny i386+amd64 (sans doute la moitié pour une seule architecture)
- 10Go pour Debian "security" Etch+Lenny i386+amd64 (mesuré le 4 mai 2009)
70Go pour Ubuntu Hardy+Intrepid+Jaunty 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).
Principe général
- Ecrire un script de mise à jour du miroir (par exemple dans /usr/local/bin/miroirs-debian.sn), voir des exemples ci-dessous
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 (et nulle part ailleurs)
Tester le script en le lançant à la main, depuis cet utilisateur miroir
Si tout va bien, placer le script dans un cron. Par exemple :
# extrait du 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.sh # 4 heures plus tard, on lance le miroir d'Ubuntu : 0 0 * * * miroir /usr/local/bin/miroirs-ubuntu.sh
Solution 1 (recommandée) : scripts utilisant debmirror
Installer d'abord le logiciel debmirror. Lisez la documentation (man debmirror et debmirror --help) : elle est très bien faite.
Ces scripts permettent de créer puis de mettre à jour un miroir :
pour Debian : miroir-debian.sh
pour Ubuntu : miroir-ubuntu.sh
Solution 2 (à valider) : apt-mirror
Solution actuellement utilisée pour les miroirs à Montréal.
Mise à jour (02 fév 2011) : "git-commit: On remonte le miroir en utilisant debmirror / avec apt-mirror on a plusieurs fois eu des soucis de miroir non à jour"
Donc apt-mirror abandonné à Montréal -- NM
Solution actuellement utilisée pour les miroirs à Cotonou.
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/
- Il faut créer un cron journalier (dans '/etc/cron.d/apt-mirror' par exemple) et y ajouter les lignes suivantes :
# chez moi, c'est tous les jours à 20h qu'il se lance 0 20 * * * mirror_user /usr/bin/apt-mirror /Path_to_mirror_list/mirror.list > /Path_to_mirror_list/var/cron.log
- Et ensuite dans /Path_to_mirror_list/mirror.list
# apt-mirror configuration file set base_path /Path_to_mirror_directory # Les répertoires suivants doivent exister et être modifiable par mirror_user set mirror_path $base_path/mirror set skel_path $base_path/skel set var_path $base_path/var # set defaultarch i386,amd64 set nthreads 20 # set _tilde 0 # Mirroirs à copier : ETCH deb http://ftp2.fr.debian.org/debian etch main contrib non-free deb http://ftp2.fr.debian.org/debian etch main/debian-installer deb http://ftp2.fr.debian.org/debian lenny main contrib non-free deb http://ftp2.fr.debian.org/debian lenny main/debian-installer # Mirroirs à copier : UBUNTU HARDY deb http://archive.ubuntu.com/ubuntu/ hardy main restricted universe multiverse deb http://archive.ubuntu.com/ubuntu/ hardy-updates main restricted universe multiverse deb http://archive.ubuntu.com/ubuntu/ hardy-backports main restricted universe multiverse deb http://archive.ubuntu.com/ubuntu/ hardy main/debian-installer restricted/debian-installer universe/debian-installer multiverse/debian-installer deb http://archive.ubuntu.com/ubuntu/ hardy-updates main/debian-installer restricted/debian-installer universe/debian-installer deb http://archive.ubuntu.com/ubuntu/ hardy-backports main/debian-installer # Mirroirs à copier : UBUNTU INTREPID deb http://archive.ubuntu.com/ubuntu intrepid main restricted universe multiverse deb http://archive.ubuntu.com/ubuntu intrepid-updates main restricted universe multiverse deb http://archive.ubuntu.com/ubuntu intrepid-backports main restricted universe multiverse deb http://archive.ubuntu.com/ubuntu intrepid main/debian-installer restricted/debian-installer universe/debian-installer multiverse/debian-installer deb http://archive.ubuntu.com/ubuntu intrepid-updates main/debian-installer deb http://archive.ubuntu.com/ubuntu intrepid-backports main/debian-installer # Cleaning section clean http://ftp2.fr.debian.org/ skip-clean http://ftp2.fr.debian.org/doc/ skip-clean http://ftp2.fr.debian.org/tools/ skip-clean http://ftp2.fr.debian.org/debian-cd/ skip-clean http://ftp2.fr.debian.org/debian-minicd/ skip-clean http://ftp2.fr.debian.org/debian/dists/lenny/main/installer-i386/ skip-clean http://ftp2.fr.debian.org/debian/dists/etch/main/installer-i386/ skip-clean http://ftp2.fr.debian.org/debian/doc/ skip-clean http://ftp2.fr.debian.org/debian/tools/ skip-clean http://ftp2.fr.debian.org/debian/project/ skip-clean http://ftp2.fr.debian.org/debian-non-US/project/ clean http://archive.ubuntu.com/ubuntu
Solution 3 (à tester) : reprepro
Nous ne l'avons encore jamais mis en place, mais elle semble intéressante. Voir ici : http://lostwebsite.wordpress.com/2008/10/21/partial-debian-mirrors/
Faire le miroir d'un (ou plusieurs) PPA, avec debmirror
PPA (Personal Package Archives) est un système qui permet à tout le monde de faire héberger ses paquets sur Launchpad, le système de Canonical/Ubuntu. Voici un script debmirror-ppa.sh qui appelle debmirror avec les bons paramètres pour faire le miroir d'un PPA donné.
Annexes
A tester : utilisation du script debmirror de Debian Sid sur une Lenny
En septembre 2009, une nouvelle version de debmirror a fait son entrée dans Debian sid. Elle propose des fonctionnalités qui pourraient nous intéresser, et semble plus efficace. Voir la page d'annonce du développeur.
L'auteur indique que l'installation de la version de Debian unstable sur une Lenny ne pose aucun problème (debmirror est un script Perl). Vous pouvez donc aller voir sur http://packages.debian.org/debmirror, récupérer le .deb de sid (unstable) et l'installer avec dpkg.
Merci d'indiquer le résultat de vos expériences ici, concluantes ou non. -- ThomasNoël 2009-09-15 10:44:58
Un problème avec le debmirror de Etch pour les miroirs Ubuntu
Le problème indiqué ci-dessous se pose avec la version debmirror de Etch. La version de debmirror fournie avec Lenny est plus intelligente (migrez, migrez). Les sites d'Ubuntu ont un problème : ils ne possèdent pas de section "restricted/debian-installer" au niveau de *-security", *-updates ou *-backports... Ca fait planter les miroirs quand on veut y intégrer le système d'installation par réseau. C'est très génant.
Une façon simple de contourner ce problème est d'installer la version de debmirror fournie par Lenny. Elle fonctionne sans soucis sur Etch, car debmirror est un «simple» script Perl. Pour cela, téléchargez uniquement le fichier .deb du paquet, et installez-le avec dpkg. Rendez-vous ici : http://packages.debian.org/lenny/all/debmirror/download
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.
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 : taille-miroir.sh
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é.