Private Debian repository

Wikis > Informatique > Linux > APT > Private Debian repository

== Prérequis ==

Le format d’un paquet est le suivant « foo_VVV-RRR_AAA.deb » :

VVV => la version

RRR => la révision

AAA => l’architecture

Le serveur qui gère les dépôts possède un Apache configuré et qui est accessible via l’URL (HTTP ou HTTPS) :

http://www.languille11.fr/

Le serveur Apache pointe sur le dossier suivant :

 »’/data/www/repo »’

== Génération de la clé GPG ==

Pour authentifier vos paquets, vous pouvez générer une clé GPG pour les signer. Ensuite, la clé sera utilisée pour certifier votre dépôt personnel.

Pour générer la clé (il faudra définir un nom et une adresse email) :

cd /root
gpg --gen-key
4 (pour choisir RSA)
4096
O

 »’Ce processus peut prendre du temps. Laissez la console en l’état et ouvrez une nouvelle console. »’

Lors de la création d’un clé GPG, il faut générer des activités systèmes pour que des chaines aléatoires soient utilisées en copiant des fichiers, lister des répertoires, etc.
Vous rencontrerez surement le message ci-dessous :

Il n'y a pas assez d'octets aléatoires disponibles. Faites autre chose
pour que l'OS puisse amasser plus d'entropie ! (il faut 277 octets de plus)

Pour connaitre le nombre d’octets aléatoires générés par votre système, ouvrez une nouvelle console SHELL :

cat /proc/sys/kernel/random/entropy_avail

Pour accélérer cette génération aléatoire, voici le petit script que j’utilise :

#!/bin/bash

while true
do
cp -rp /etc/ /tmp/.
rm -r /tmp/etc/
done

L’opération devrait se terminer au bout de plusieurs minutes. N’oubliez pas de tuer le processus du script ci-dessus car il ne se terminera jamais à cause du « while true ».

Une fois la clé générée, on peut l’afficher :

gpg --list-keys

/root/.gnupg/pubring.gpg
------------------------
pub   1024R/EA8AE8AD 2013-04-23
uid                  Anthony Magnini 

Il faut maintenant exporter la clé pour être rendue publique, en effet, les machines qui accéderont à ce dépôt personnel demanderont la clé car les paquets sont signés :

gpg --armor --export anthonym@languille11.fr >> /data/www/repo/key/languille11.gpg.key

Ainsi, pour récupérer la clé à partir d’une machine, elle est accessible via :

http://repo.highlands.local/key/languille11.gpg.key

== Installation de REPREPRO ==

Le paquet REPREPRO permet de créer son propre dépôt personnel. L’installation est rapide :

aptitude install reprepro

La configuration est à placer dans un répertoire dédié :

mkdir /data/www/repo/conf/

Il faut ensuite définir les repos que l’on veut créer et rendre accessible aux utilisateurs :

*/data/www/repo/conf/distributions

Origin: Languille11
Label: Languille11
Suite: stable
Codename: languille11
Architectures: i386 amd64 source
Components: unstable testing stable
Description: Languille11 repository
SignWith: yes

Le paramètre SignWith est spécifié à yes sur sur le repos Youactive car nos paquets sont signés.

== Construction du dépôt ==

Soit on peut construire l’arborescence entière du répos maintenant, soit elle se créera petit à petit en fonction des paquets qui seront poussés dans telle ou telle branche

Pour construire le répos entièrement :

reprepro --ask-passphrase -Vb /data/www/repo export

La passphrase de la clé GPG sera demandé.

== Ajout d’un paquet au répos ==

Le dépôt est prêt à accueillir les paquets .deb pour les rendre accessible aux autres machines.

Pour notre exemple :

le nom logique du paquet se nomme mon-paquet
le nom physique est mon-paquet_1.2-1_amd64.deb
Ajouter un paquet :

reprepro --ask-passphrase -Vb /data/www/repo -C 'testing' includedeb languille11 /root/mon-paquet_1.2-1_amd64.deb

Supprimer un paquet :

reprepro --ask-passphrase -vb /data/www/repo -C 'testing' remove languille11 mon-paquet

Lister les paquets non référencés :

reprepro --ask-passphrase -vb /data/www/repo dumpunreferenced

Effacer les paquets non référencés :

reprepro --ask-passphrase -vb /data/www/repo deleteunreferenced

Reréférencer les paquets :

reprepro --ask-passphrase -vb /data/www/repo rereference

== Supprimer un repos ==

Enlever le repos du fichier

*/data/www/repo/conf/distributions

Puis lancer la commande suivante :

reprepro --delete clearvanished

== Côté client ==

Comme votre serveur peut fournir les paquets .deb avec reprepro, il faut maintenant configurer vos serveurs (ou PC clients) pour les récupérer.

nano /etc/apt/sources.list.d/depot-deb.list

# depot-deb repository
deb http://www.languille11.fr/ languille11 testing

Pour éviter le message d’erreur à cause de l’absence de clé, il faut l’ajouter dans le trousseau de clés :

wget -O - http://www.languille11.fr/key/languille11.gpg.key | apt-key add -

Une fois la clé ajoutée, on met à jour :

aptitude update

Puis notre paquet est déployable sur la cible :

aptitude install mon-paquet