Créer un dépôt Debian local sans liaison Internet

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 8 DVD d'installation de Debian 6.0.3 (à télécharger ici)
  • une machine sous Debian 6.0.3 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.0.3.

On crée 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

On copie les fichiers .deb des DVD dans ce répertoire en utilisant la commande suivante (à répéter pour les 8 DVD):

for f in $(find /media/cdrom/debian/pool/ -type f); do cp $f -t /data/debian $(echo $f); done

A la fin de cette opération, le répertoire /data/debian devrait contenir l'ensemble des paquets .deb constituant la distribution stable de Debian Squeeze (pour une taille d'environ 33 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écri 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/debian;

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:

Vus : 1932
Publié par Nicolargo : 402