Créer son Dépot de paquets debian

Créer son dépôt

Dans mon tutorial sur les microcontrolleurs, j’ai dû me créer mon dépot Debian dans lequel j’y ai mis les paquets nécessaires à l’installation de l’environnement de développement. Je reprends ici, toutes les étapes pour le faire proprement.

Installation des outils

On ne va pas réinventer la roue et utiliser quelques outils. Commencez par installer quelques petites choses :

sudo apt-get install reprepro  
sudo apt-get install gpg  

Création de sa clef GPG

GPG étant installé, lancez le wizard de création d’une clef:

gpg --gen-key  

Ensuite, prenez les valeurs par défaut, précisez un nom, une adresse mail, et pas de phrase secrète. Si vous précisez une phrase secrète, reprepro va crier. Le système vous demandera de bouger la souris et de taper des trucs au clavier. Faites, c’est pour générer de l’aléatoire.

Vous avez une clef. Cette clef est identifiée par l’adresse mail. Pour fixer les idées, imaginons que cet identifiant est foo@noopy.fr

Configuration de reprepro

Commencez par vous créer un dossier de travail:

mkdir ~/repository  

et créer deux sous-dossiers qui seront utilisés par reprepro

mkdir ~/repository/conf  
mkdir ~/repository/conf  

Créer une configuration avec votre éditeur préféré:

nano ~/repository/conf/distributions  

et ajoutez les lignes suivantes:

Origin: www.noopy.fr  
Label: Noopy  
Suite: unstable  
Codename: unstable  
Version: all  
Architectures: i386 amd64  
Components: main  
Description: Repository for Noopy  
SignWith: foo@noopy.fr  

Ajout des paquets

Ca ne sera pas bien compliqué. Il vous suffira de lancer la commande suivante:

cd ~/repository  
reprepro -b . includedeb unstable my_debian_packet.deb  

Génération de la clef publique

Il faudra que les utilisateur de votre dépôt puisse récupérer la clef publique. Il vous faut donc la générer avec la commande suivante:

gpg --armor --output ~/repository/public.key --export foo@noopy.fr  

Automatisation

Je vous propose d’automatiser tout ça avec deux scripts (dont un pompé sur Ubuntu

#!/bin/bash
# filename: add.sh
for paquet in $1/*.deb; do  
reprepro -b . includedeb unstable $paquet;  
done  
#!/bin/bash
# filename: create_repo.sh
rm -r db  
rm -r pool  
rm -r dists  
./add.sh source
gpg --armor --output ~/repository/public.key --export foo@noopy.fr  

Finalisation

C’est bien sympas, vous avez un dépôt en local. Ça sert à pas grand chose. Créez-vous un serveur ouèb sur votre PC ou faites appel à un hébergeur. Admettons que vous ayez votre serveur web sur www.hebergeur.fr/foo. Connectez-vous par FTP et créez un dossier depot. Dans ce dossier depot, transférez :

  • dossier db
  • dossier dists
  • dossier pool
  • fichier public.key

Côté client

C’est ce que vous devez communiquer à tous les utilisateurs de votre dépôt. Ajoutez votre nouveau dépot:

sudo nano /etc/apt/sources.list  

et ajoutez la ligne suivante:

deb http://www.hebergeur.fr/foo/depot unstable main  

Récupérez la clef publique GPG:

wget -q http://www.hebergeur.fr/foo/depot/public.key -O- | sudo apt-key add -  
sudo apt-get update