Debian - Dépôt Personnel

Un article de Wiki.OmBreNoiRe.net.

Sommaire

Introduction

Il existe différents types de dépôts : les officiels et les officieux.

Les officieux contiennent généralement soit des programmes qui n'existe pas par défaut avec Debian, soit des versions patchées.

Le problème qui m'ait arrivé un jour, fut de télécharger un paquet patché et revenir 2 mois plus tard pour récupérer à nouveau le paquet mais le site avait disparu. Depuis ce jour dès que je télécharge un paquet non officiel, je l'ajoute à mon dépôt personnel afin d'être sûr de l'avoir toujours sous la main et je vous recommande de faire de même.

Méthodologie avec reprepro

Je ne vous expliquerai pas comment utiliser ce programme, mais il s'agit de la façon la plus "propre" de faire, tout est quasi automatique, mais le problème (à mon sens) est que ce programme crée toute une série de répertoires inutiles. Bref vous l'aurez compris je ne le vous conseil pas.

Méthodologie avec mon script GenDepot.sh

J'ai réalisé un script qui me simplifie largement la tâche et je l'ai amélioré pour qu'il soit utilisable pour d'autre :)

Ce script, basé sur apt-ftparchive, est bien évidemment sous Licence GPL, libre à vous de le distribuer et même de l'améliorer. N'hésitez pas à me contacter si vous avez un problème pour l'exécution, ou si vous avez vu des bugs.

Description

GenDepot.sh permet donc de générer très facilement les fichiers nécessaires au dépot (Packages*, Sources*, Release et Release.gpg) tout en créant les lignes à ajouter dans le fichier /etc/apt/sources.list.

Par ailleurs, la génération faite par GenDepot.sh permet d'avoir 2 types de récupération des paquets :

  • Globale, en ajoutant tous les paquets du dépôt au catalogue grâce à par exemple la ligne deb http://depot.mondomaine.net etch/ au fichier /etc/apt/sources.list.
  • Individuelle, c'est à dire un seul paquet par ligne ajoutée dans /etc/apt/sources.list comme avec la ligne deb http://depot.mondomaine.net/etch/6wall ./ permettant ainsi de pas récupéré TOUS les paquets du dépôt.

Pré-requis

  • Avoir installé apt-ftparchive qui fait parti du paquet apt-utils :
root@monordi:~# aptitude install apt-utils
  • Avoir créé votre clé GPG et avoir envoyé votre clé publique à un serveur de clé. Si cela n'est pas déjà fait, je vous conseil donc d'aller faire un tour sur l'article de GnuPG.

Mise en place du dépôt

  • Créer le répertoire de racine de votre dépôt (c'est à dire la racine du site web, cf la configuration du serveur Apache, nous prendrons ici comme exemple /var/www/depot accessible par l'adresse http://depot.mondomaine.net
  • Puis exécuter les commandes suivantes
user@monordi:~$ cd /var/www/depot

user@monordi:~$ mkdir .apt
user@monordi:~$ chmod 700 .apt
user@monordi:~$ mkdir etch
user@mondori:~$ mkdir lenny

user@monordi:~$ cd /var/www/depot/.apt
user@monordi:~$ wget http://debian.ombrenoire.net/gendepot/gendepot.sh
  • Editer avec emacs le début du fichier afin de l'adapter :
Fichier : /var/www/depot/.apt/gendepot.sh
[...]
################### VALEURS A MODIFIER ######################
# Ce que vous voulez :)
origine="Debian - MonDepot :]"

# L'adresse http ou se trouve le depot
# Exemple : "debian.ombrenoire.net"
# ou encore "debian.ombrenoire.net/mondepot/"
label="debian.mondomaine.net"

# Les distributions prisent en charge (separees par 1 espace)
# NB : Il faut que pour chaque distribution, un repertoire
# du meme nom existe a la racine du site.
# Exemple : "sarge etch lenny"
suite="etch lenny"

# Les architectures prises en charge
architectures="i386 all source"

# Components (normalement vous n'avez pas a modifier)
components="main"
[...]
  • Rendez ce script exécutable :
user@monordi:~$ chmod 700 /var/www/depot/.apt/gendepot.sh
  • Puis pour chaque programme que vous voulez garder sur votre dépôt faite un répertoire et téléchargez-y les fichiers *.deb *.dsc *.tar.gz (pas Package*, Source*, Release*), par exemple pour 6wall :
user@monordi:~$ cd /var/www/depot/etch

user@monordi:~$ mkdir 6wall
user@monordi:~$ cd 6wall
user@monordi:~$ wget http://www.zipman.it/debian/6wall_1.0.2-3b.dsc
user@monordi:~$ wget http://www.zipman.it/debian/6wall_1.0.2-3b.tar.gz
user@monordi:~$ wget http://www.zipman.it/debian/6wall_1.0.2-3b_all.deb
user@monordi:~$ wget http://www.zipman.it/debian/6wall_1.0.2.orig.tgz

  • Et enfin lancer le script :
user@monordi:~$ cd /var/www/depot/

user@monordi:~$ .apt/gendepot.sh .
Quel est votre passphrase pour la cle GnuPG ?
Generation du depot...
Generation de /var/www/depot/add-sources.list.etch...
Generation de /var/www/depot/add-sources.list.lenny...

  • Et voici ce que contient par exemple le fichier /var/www/depot/add-sources.list.etch
Fichier : /var/www/depot/add-sources.list.etch
# [PAQUET INDIVIDUEL]
deb http://debian.mondomaine.net/etch/postfix-vda ./
deb http://debian.mondomaine.net/etch/courier-quota ./
deb http://debian.mondomaine.net/etch/vsftpd-ext ./
deb http://debian.mondomaine.net/etch/6wall ./
deb http://debian.mondomaine.net/etch/apache2-mod-security ./

#deb-src http://debian.mondomaine.net/etch/postfix-vda ./
#deb-src http://debian.mondomaine.net/etch/vsftpd-ext ./
#deb-src http://debian.mondomaine.net/etch/6wall ./
#deb-src http://debian.mondomaine.net/etch/apache2-mod-security ./


# [TOUS LES PAQUETS DISPONIBLES]
deb http://debian.mondomaine.net etch/
#deb-src http://debian.mondomaine.net etch/

Quelques remarques :

  • Il ne faut pas coller l'intégralité des fichier générés par le script dans votre /etc/apt/sources.list mais soit la section avec [PAQUET INDIVIDUEL] ou [TOUS LES PAQUETS DISPONIBLES] de votre distribution.
  • Cette section est à insérer en haut du fichier /etc/apt/sources.list (avant les autres lignes).
  • Toutes les lignes commençant par # sont commentées, donc comme vous pouvez le voir, ce script commente par défaut les lignes deb-src car elles ne seront pas utiles pour la plupart des personnes.
  • l'arborescence du site est donc :
/var/www/depot
             |
             |-/.apt 
             |    |-GenDepot.sh
             |
             |-/etch
             |    |-/Release*, Packages*, Sources*
             |    |   
             |    |-/6wall
             |    |     |-/Release*, Packages*, Sources*, 6wall.*.deb, 6wall.*.orig.tar.gz, 6wall.*.dsc, etc...
             |    |
             |    |-/postfix-vda
             |    '           |-/Release*,...*
             |    '
             | 
             |-/lenny
             |    |-/Release*, Packages*, Sources*
             '    |   
             '    |-/6wall
                  |     |-/Release*, Packages*, Sources*, 6wall.*.deb, 6wall.*.orig.tar.gz, 6wall.*.dsc, etc...
                  |
                  |-/postfix-vda
                  '           |-/Release*,...*
                  '

Quelques approfondissements (pour les plus curieux)

Si vous souhaitez avoir plus d'informations ou bien comprendre les erreurs que vous retourne aptitude et les corriger, je vous conseil la lecture de Debian - Dépôt Approfondissements. Vous n'avez pas du tout besoin de lire ces lignes pour utiliser le script GenDepot.sh !

Conclusion

Vous avez êtes désormais en mesure de créer votre dépôt personnel, n'hésitez pas en cas de problème avec le script à me contacter afin que je puisse éventuellement corriger si bug il y a ;)

Affichages
Boîte à outils
Publicité