Créer un dépôt Debian local sans liaison Internet
Date: 15/01/2012 | Catégories: Open-source,Planet-libre,Systeme | Tags: apt,cdrom,debian,depot,dvd,local,repo
Vous êtes sur un réseau sans accès Internet et vous devez installer et maintenir plusieurs machines Debian ?
Ce scénario s'étant présenté à moi, j'ai décidé d'installer sur ce réseau isolé un dépôt Debian local que j'ai construit à partir des 8 DVD d'installation de la version 6.0.3 de Debian Squeeze. Nous allons donc dans ce billet voir la marche à suivre, étape par étape.
Construction du dépôt local
Pour effectuer cette action, il faut:
- les DVD d'installation de la Debian 6.0.x ou toutes les images ISO des DVD d'installation de Debian 6.0.x (à télécharger ici)
- une machine sous Debian qui hébergera le dépôt local (donc avec un minimum de 50 Go de disque disponible)
- du temps...
On commence par faire une installation standard de Debian 6.
On créé ensuite un répertoire qui contiendra le dépôt local (/data/debian dans mon exemple qui est en fait un point de montage sur un deuxième disque dur):
mkdir /data/debian
Si vous avez les DVD...
On copie les fichiers .deb des DVD dans ce répertoire en utilisant insérant le DVD dans le lecteur puis en saisissant la commande suivante (action à répéter pour les 8 DVD):
for f in $(find /media/cdrom/debian/pool/ -type f); do cp $f -t /data/debian; done
Si vous avez les images ISO...
Si comme moi vous avez copié les images ISO des DVD sur un NAS (monté dans le répertoire /mnt/nas/iso/debian) alors vous pouvez utiliser cette commande en lieu et place de la précédante:
mkdir -p /mnt/iso for i in `ls /mnt/nas/iso/debian` do mount -o loop /mnt/nas/iso/debian/$i /mnt/iso for f in $(find /mnt/iso/debian/pool -type f) do echo $f cp $f -t /data/debian done umount /mnt/iso done
A la fin de ces opérations, le répertoire /data/debian devrait contenir l'ensemble des paquets .deb constituant la distribution stable de Debian Squeeze (pour une taille d'environ 35 Go).
On passe ensuite à la création des deux fichiers qui vont permettre de transformer ce répertoire en un dépôt Debian: les fichiers Release et Packages.gz.
Le fichier Release
On commence par le fichier Release (à mettre dans le répertoire /data/debian) qui décrit le le dépôt. C'est un fichier texte à créer avec votre éditeur favori:
Archive: squeeze Component: main Origin: Nicolargo Label: Le depot de Nicolargo Architecture: amd64
Les lignes importantes sont:
Archive: squeeze > Ce dépôt sera utilisable par des machines sous Debian 6 (nom de code Squeeze)
Component: main > Ce dépôt contient les composant principaux de la distribution Debian 6
Architecture: amd64 > Ce dépôt sera utilisable par des machines 64 bits
Le fichier Packages.gz
On continu ensuite avec le fichier Packages (compressé avec Gzip) qui contiendra la description (nom, version , description, dépendances...) de tous les paquets .deb se trouvant dans le répertoire. Il est bien sur impossible de construire ce fichier à la mimine. Nous allons donc utiliser l'utilitaire dpkg-scanpackages.
cd /data/debian dpkg-scanpackages ./ /dev/null | gzip -9c > Packages.gz
Cette opération va prendre un certain temps... Soyez patient...
Test local du dépôt
Avant d'utiliser ce dépôt sur d'autres machines, il faut dans un premier temps le tester sur notre machine hébergeant le dépôt. Pour cela il faut éditer le fichier /etc/apt/sources.list pour y laisser seulement la ligne suivante:
deb file:///data/debian ./
On met ensuite à jour la base APT de notre machine:
apt-get update
Installation du serveur Web pour proposer le dépôt à d'autres machines
Pour que votre dépôt soit visible depuis les autres machines de votre réseau, le plus simple est d'y installer un serveur Web qui va présenter le répertoire /data/debian en utilisant le protocole HTTP.
Personnellement, j'utilise le serveur Web NGinx:
apt-get install nginx
Puis en éditant le fichier /etc/nginx/sites-enabled/defaults:
server { listen 80; server_name localhost; access_log logs/debianrepos.access.log main; location /debian { root /data; autoindex on; } }
On relance NGinx pour prendre en compte la configuration:
/etc/init.d/nginx restart
Utilisation du dépôt local
Pour utiliser notre beau dépôt local sur une autre machine Debian Squeeze, il suffit d'éditer le fichier /etc/apt/sources.list pour y laisser seulement la ligne suivante:
deb http://192.168.1.100/debian ./
Ou 192.168.1.100 est à remplacer par l'adresse IP du serveur hébergeant votre dépôt.
On met ensuite à jour la base APT de notre machine:
apt-get update
Il ne reste plus qu'a installer vos logiciels en utilisant la commande apt-get install !
Sources pour la rédaction de ce billet: