Note : pour les utilisateurs africains qui n'ont pas une grande bande.

Voilà donc comment procéder (sur ma debian bien sûr):

Il faut donc se munir des Cds (indispensable :) ) et les monter un part un.

amelnaud@serveur1:~ -> mount /cdrom

ou

amelnaud@serveur1:~ -> mount /media/cdrom

Créer le répertoire destination. Il vous faut beaucoup de place (environ 5Go). Pour moi, j'ai beaucoup de place dans /home et j'aime bien découper les services entre utilisateurs. Donc j'ai créé un utilisateur dont le mot de passe est désactivé afin de disposer d'un espace complet et distinct du système et de mon propre compte.

amelnaud@serveur1:~ -> sudo adduser --disabled-password debmirror
Ajout de l'utilisateur debmirror...
Adding new group `debmirror' (1001).
Adding new user `debmirror' (1001) with group `debmirror'.
Création du répertoire personnel /home/debmirror.
Copie des fichiers depuis /etc/skel

Ensuite je travaille avec sudo de la manière suivante pour accéder à ce nouveau compte:

amelnaud@serveur1:~ -> sudo -H -u debmirror -s
debmirror@serveur1:/home/amelnaud$ cd
debmirror@serveur1:~$

Me voilà donc debmirror dans son répertoire d'accueil. Je crée alors un répertoire dans lequel je vais stocker toute l'arborescence du miroir Debian, je copie ensuite l'intrégralité des cds dans ce répertoire:

0 debmirror@serveur1:~$ mkdir mirror
1 debmirror@serveur1:~$ cp -a /media/cdrom/* mirror
2 debmirror@serveur1:~$ umount /media/cdrom
3 debmirror@serveur1:~$ find mirror -exec chmod u+w {} \;

répétez 1, 2 et 3 autant de fois qu'il y a de cd (le 3 permet de donner les droits d'écriture à l'utilisateur debmirror sur les fichiers et répertoires que l'on vient de copier; ceci est nécessaire car on «écrase» des informations que l'on copie à partir d'une source en lecture seule) :)

Une fois cette opération effectué, il faut régénérer les fichiers administratifs Debian afin que le miroir soit fonctionnel, pour cela, il faut s'assurer que le package apt-utils est installé.

amelnaud@serveur1:~ -> sudo apt-get update
amelnaud@serveur1:~ -> sudo apt-get install apt-utils

Il faut créer un répertoire où l'on stockera le cache pour apt-ftparchive:

debmirror@serveur1:~$ mkdir cache

Il faut maintenant créer un fichier de configuration pour apt-ftparchive. Faites un copier/coller du fichier ci dessous:

debmirror@serveur1:~$ cat > apt-ftparchive.conf
Dir {
ArchiveDir "/home/debmirror/mirror";
CacheDir "/home/debmirror/cache";
};

Default {
Packages::Compress ". gzip bzip2";
Sources::Compress ". gzip bzip2";
Contents::Compress ". gzip bzip2";
};

TreeDefault {
BinCacheDB "packages-$(SECTION)-$(ARCH).db";
Directory "pool/$(SECTION)";
Packages "$(DIST)/$(SECTION)/binary-$(ARCH)/Packages";
SrcDirectory "pool/$(SECTION)";
Sources "$(DIST)/$(SECTION)/source/Sources";
Contents "$(DIST)/Contents-$(ARCH)";
};

Tree "dists/stable" {
Sections "main contrib non-free";
Architectures "i386";
}
^D
debmirror@serveur1:~$

Il ne reste plus qu'à tester avec la commande suivante qui prend énormément de temps sur une machine pas très puissante (compter plusieurs heures sur une machine de type PIII).

debmirror@serveur1:~$ apt-ftparchive generate apt-ftparchive.conf

Normalement tout s'est bien passé :)

L'étape suivante consiste à signer certains fichiers administratifs car depuis la version 0.6 de apt cela devient nécessaire. Il faut donc que l'utilisateur debmirror ait un clé gpg pour fonctionner. Attention ceci n'est pas un tutoriel d'utilisation de gpg. Les commandes suivantes ne sont applicables que dans le cadre de notre miroir !

debmirror@serveur1:~$ gpg --gen-key
gpg (GnuPG) 1.4.1; Copyright (C) 2005 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. See the file COPYING for details.

gpg: directory `/home/debmirror/.gnupg' created
gpg: new configuration file `/home/debmirror/.gnupg/gpg.conf' created
gpg: WARNING: options in `/home/debmirror/.gnupg/gpg.conf' are not yet active during this run
gpg: keyring `/home/debmirror/.gnupg/secring.gpg' created
gpg: keyring `/home/debmirror/.gnupg/pubring.gpg' created
Please select what kind of key you want:
(1) DSA and Elgamal (default)
(2) DSA (sign only)
(5) RSA (sign only)
Your selection?
DSA keypair will have 1024 bits.
ELG-E keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048)
Requested keysize is 2048 bits
Please specify how long the key should be valid.
0 = key does not expire
<n> = key expires in n days
<n>w = key expires in n weeks
<n>m = key expires in n months
<n>y = key expires in n years
Key is valid for? (0)
Key does not expire at all
Is this correct? (y/N) y

You need a user ID to identify your key; the software constructs the user ID
from the Real Name, Comment and Email Address in this form:
"Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>"

Real name: Mon miroir Debian
Email address: debian@localhost.localdomain
Comment:
You selected this USER-ID:
"Mon miroir Debian <debian@localhost.localdomain>"

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O
You need a Passphrase to protect your secret key.

You don't want a passphrase - this is probably a *bad* idea!
I will do it anyway. You can change your passphrase at any time,
using this program with the option "--edit-key".

We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
...+.+.+..+..+..+++
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
.+.+...+..>.+.+>+.......................................................................+++^^^^
gpg: /home/debmirror/.gnupg/trustdb.gpg: trustdb created
gpg: key 276400F1 marked as ultimately trusted
public and secret key created and signed.

gpg: checking the trustdb
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0 valid: 1 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 1u
pub 1024D/276400F1 2005-11-07
Key fingerprint = 43B5 1B08 52FE 9D93 D5DC DA7B 16B4 63F0 2764 00F1
uid Mon miroir Debian <debian@localhost.localdomain>
sub 2048g/F7051ACA 2005-11-07

La clé généréé est sans passphrase (pour des besoins internes de commodité): il ne faut généralement pas le faire (c'est pour cela que je le fais :) ). L'identité que j'ai utilisé est Mon miroir Debian et l'adresse mail (non valide) est debian@localhost.localdomain. Il ne faut en aucun cas diffuser sur les serveurs public cette adresse.

Maintenant il nous faut signer tous les fichiers Release de notre archive.

debmirror@serveur1:~$ find mirror -type f -name Release -exec gpg --output {}.gpg -ba {} \;

Voilà notre miroir presque prêt à l'utilisation. Il faut maintenant le rendre disponible sur le réseau. Pour cela on installe apache (ou apache2), si ce n'est pas déjà fait.

amelnaud@serveur1:~ -> sudo apt-get install apache2

On répond au diverses questions et ensuite on crée un VirtualHost qui hébergera notre miroir.

amelnaud@serveur1:~ -> sudo > cat /etc/apache2/site-available/debian-mirror Merci Seb pour avoir signalé la typo :)
amelnaud@serveur1:~ -> sudo sh -c "cat > /etc/apache2/site-available/debian-mirror"
<VirtualHost *>
Alias /debian "/home/debmirror/mirror"
<Directory "/home/debmirror/mirror">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>

Et on l'active et on relance apache:

amelnaud@serveur1:~ -> cd /etc/apache2/site-enabled
amelnaud@serveur1:site-enabled -> ln -s ../site-available/debian-mirror 99debian-mirror
amelnaud@serveur1:site-enabled -> /etc/init.d/apache2 restart

Voilà donc votre mirror prêt à l'emploi. Il suffit de rentrer la lignequivabien© dans le fichier /etc/apt/sources.list des machines qui vont l'uiliser. Cette ligne est la suivante (remplacer nom_machine par le nom pleinement qualifié de la machine ou son adresse IP):

amelnaud@adidogome:~ -> sudo sh -c "cat >> /etc/apt/sources.list"
deb http://nom_machine/debian sarge main contrib non-free
^D

On vérifie par:

amelnaud@adidogome:~ -> sudo apt-get update

Et voilà, le tour est joué.

Source : http://genibel.org/blog/

Arnaud/Memo/MiroireCdrom (dernière édition le 2008-02-21 22:09:59 par localhost)