Serveur APT-mirror Lenny
>>> Création d’un miroir APT sous Debian Lenny
Description :

Avoir tous les packages de Debian ou Ubuntu à domicile, pour pouvoir installer votre serveur sans connexion internet. C’est possible !
Ce cours va vous apprendre comment faire.

>>> Création d’un miroir APT sous Debian Lenny

Sommaire :

I) Sur le serveur
1) Installation & configuration de APT-Mirror
2) Droit d’exécution
3) Récupération des fichiers
4) Si erreurs
5) Installation et configuration d’Apache2
6) Petits conseils
II) Sur le client


I) Sur le serveur

1) Installation & configuration de APT-Mirror

On commence par installer APT-Mirror :

aptitude install apt-mirror

Ensuite pour configurer APT-Mirror il faut éditer le fichier "mirror.list"

vim /etc/apt/mirror.list

On se retrouve avec le document suivant :

############# config ###################
set base_path    /var/spool/apt-mirror
#
# if you change the base path you must create the directories below with write privlages
#
set mirror_path  $base_path/mirror
set skel_path    $base_path/skel
set var_path     $base_path/var
set cleanscript $var_path/clean.sh
set defaultarch  i386
set nthreads     100
set _tilde 0
#
############# end config ##############

deb http://ftp.fr.debian.org/debian/ lenny main
deb-src http://ftp.fr.debian.org/debian/ lenny main
deb http://security.debian.org/ lenny/updates main
deb-src http://security.debian.org/ lenny/updates main
deb http://volatile.debian.org/debian-volatile lenny/volatile main
deb-src http://volatile.debian.org/debian-volatile lenny/volatile main
clean http://ftp.fr.debian.org/debian/
clean http://volatile.debian.org/debian-volatile
clean http://security.debian.org/

Quelques informations sont nécessaires :

La ligne ci-dessous, indique le chemin où sont stockés les fichiers :

set base_path    /var/spool/apt-mirror

Les lignes ci-dessous, indiquent le nom des répertoires où sont répartit les différents fichiers :

set mirror_path  $base_path/mirror
set skel_path    $base_path/skel
set var_path     $base_path/var
set cleanscript $var_path/clean.sh

La ligne ci-dessous, indiquent l’architecture des fichiers que nous voulons télécharger (si l’on commente on téléchargera toutes les architectures) :

set defaultarch  i386

La ligne ci-dessous, indiquent le nombre de threads simultanés qui vont télécharger les données, (sorte de compte à rebours, 100... 99... 98...) :

set nthreads     100

La ligne ci-dessous, pas d’informations sur cette ligne à par quelle soit utile :

set _tilde 0

Les lignes suivantes sont les dépôts qui serviront de base pour télécharger les fichiers :

deb http://ftp.fr.debian.org/debian/ lenny main
deb-src http://ftp.fr.debian.org/debian/ lenny main
deb http://security.debian.org/ lenny/updates main
deb-src http://security.debian.org/ lenny/updates main
deb http://volatile.debian.org/debian-volatile lenny/volatile main
deb-src http://volatile.debian.org/debian-volatile lenny/volatile main
clean http://ftp.fr.debian.org/debian/
clean http://volatile.debian.org/debian-volatile
clean http://security.debian.org/

Dans notre cas, j’ai laissé le dossier "/var/spool" par défaut, j’ai choisi les fichiers correspondant seulement au architecture "i386" avec un nthreads de "100".

2) Droit d’exécution

APT-Mirror utilise un script de nettoyage "clean.sh" il faut lui donner des droits d’exécution :

chmod +x /var/spool/apt-mirror/var/clean.sh

 Bien sur à vous d’adapter le chemin.

3) Récupération des fichiers

apt-mirror

 Après une ou plusieurs longue(s) journée(s) de téléchargement le téléchargement se finira.

4) Si erreur

Si vous rencontrez des erreurs à la fin du téléchargement comme par exemple :

closedir() attempted on invalid dirhandle DIR at /usr/bin/apt-mirror line 530.

Alors modifiez le fichier "/usr/bin/apt-mirror" :

vim /usr/bin/apt-mirror

 Dans le fichier de plusieurs pages qui s’affichera cherchez les lignes "sub process directory"

vous obtenez ceci :

sub process_directory {
    my $dir = shift;
    my $is_needed = 0;
    return 1 if $skipclean{$dir};
    opendir(DIR, $dir) or die "apt-mirror: can't opendir $dir: $!";
    foreach (grep { !/^\.$/ && !/^\.\.$/ } readdir(DIR)) {
        my $item = $dir . "/". $_;
        $is_needed |= process_directory($item)  if -d $item && ! -l $item;
        $is_needed |= process_file($item)       if -f $item;
        $is_needed |= process_symlink($item)    if -l $item;
    }
    closedir DIR;
    push @rm_dirs, $dir unless $is_needed;
    return $is_needed;
}

Modifiez le par ceci :

sub process_directory {
    my $dir = shift;
    my $is_needed = 0;
    return 1 if $skipclean{$dir};
     opendir(my $dir_h, $dir) or die "apt-mirror: can't opendir $dir: $!";
     foreach (grep { !/^\.$/ && !/^\.\.$/ } readdir($dir_h)) {
#    opendir(DIR, $dir) or die "apt-mirror: can't opendir $dir: $!";
#    foreach (grep { !/^\.$/ && !/^\.\.$/ } readdir(DIR)) {
        my $item = $dir . "/". $_;
        $is_needed |= process_directory($item)  if -d $item && ! -l $item;
        $is_needed |= process_file($item)       if -f $item;
        $is_needed |= process_symlink($item)    if -l $item;
    }
#    closedir DIR;
     closedir $dir_h;
     push @rm_dirs, $dir unless $is_needed;
     return $is_needed;
}

 remarquez que nous avons ajouté 3 lignes et commenté 3 autres lignes.

5) Installation et configuration d’Apache2

On commence par l’installation :

aptitude install apache2

Et nous n’avons plus qu’à créer des liens symboliques :

ln -s /var/spool/apt-mirror/mirror/ftp.fr.debian.org/debian /var/www/debian   
ln -s /var/spool/apt-mirror/mirror/security.debian.org/ /var/www/debian-security
ln -s /var/spool/apt-mirror/mirror/volatile.debian.org/debian-volatile/ /var/www/debian-volatile

6) Petits conseils

 Une fois le téléchargement terminé, relancez le une deuxième fois.
 Une fois le téléchargement terminé, exécutez le script clean.sh.

II) Sur le client

Il faut maintenant ajouter notre serveur à la liste APT de notre machine cliente :

vim /etc/apt/sources.list

Ensuite on commente toutes les lignes et on ajoute les lignes suivantes :

deb http://10.1.1.100/debian-security/ lenny/updates main
deb-src http://10.1.1.100/debian-security/ lenny/updates main
deb http://10.1.1.100/debian/ lenny main
deb-src http://10.1.1.100/debian/ lenny main
deb http://10.1.1.100/debian-volatile/ lenny/volatile main
deb-src http://10.1.1.100/debian-volatile/ lenny/volatile main

Il nous reste plus qu’à faire une mise à jour de la base APT :

aptitude update