Thématiques principales

mardi 26 décembre 2017

Faire un dépôt debian

Un dépôt debian est un répertoire distant dans lequel se trouve des paquets debian [2] . Ces paquets sont accessible via les commandes apt [1] du système debian et la conjonction des deux mécanismes (apt+dépôts) permet l’installation et la maintenance des applications présent dans le système

Procédure d’installation debian

Lors de l’installation d’un paquet, on appellera la commande
apt-get install tee
La composant apt va télécharger depuis le dépôt via ftp ou http l’outil tee et le depackagera dans le système (pour les plus curieux sur la structure du paquet debian et son processus de déploiement : [4] mais je rédigerai un article à cet effet ).

L’installation n’est possible que si apt ne connait le contenu du dépôts. Pour cela, il est nécessaire de mettre à jour le référentiel connu de apt du dépôt distant en téléchargeant le package spécial : Packages.gz qui liste les paquets présent dans le dépôt. Il reste a appliquer la commande suivant:
apt-get update
Il manque encore une information importante: La localisation du dépôt qu’il est nécessaire de renseigner dans le fichier de configuration sources.list d'Apt (dans le répertoire /etc/apt)

Cependant pour renseigner ce fichier, il nous faut connaître la structure du dépôt et comment celui-ci se construit.

Structure d’un dépôt

Un dépôt debian n’est qu’un répertoire contenant des paquets debian. Ce répertoire va contraindre le nommage du dépôt. Pour que le dépôt soit viable, il doit contenir au moins un fichier Packages.gz cité plus haut dans un répertoire bien spécifique [6] . Ce répertoire est accessible via un chemin contenu dans le dépôt commençant par “dists” qui va spécifier divers informations facilitant le classement des paquets. Par exemple, il va être possible de distinguer les paquets propre à des architecture cibles différentes et des paquets pour les architectures  amd64, armhf, i386, etc.

Ce qui importe c’est d’avoir conscience que le chemin menant aux différents Packages.gz, va conditionner la façon dont on va référencer le dépôt coté client dans le sources.list.

Le fichier sources.list suit la syntaxe suivante [6] :
deb uri distribution [component1] [component2] [...]
  • la primitive deb spécifié qu’il s’agit d’un dépôt debian
  • uri est le chemin local ou réseau pour accéder au dépôt (généralement il est positionné derrière un serveur http apache)
  • distribution est le système cible mais celui ci est généralement le premier sous répertoire du chemin commençant par dists.
  • component* est un ensemble de sous répertoires au chemin suivant la distribution et avant le répertoire spécifiant l’architecture. Ils facilitent le classement des paquets selon leur utilisation (paquet de test, de sources, gratuit ou non, etc.)

Enfin le chemin se termine sur un répertoire spécifiant au moins une architecture.

Exemple si on considère un serveur apache exposant le chemin suivant:
(/var/www) ./debian/dists/maDistrib/all/binary-amd64/Packages.gz
Il faut spécifier dans le sources.list du client apt:
deb http://ipServer/debian maDistrib all 

Initialisation du dépôt

Maintenant que l’on a un dépôt debian, ou mettre nos paquets et comment procéder à son initialisation?

Dans la pratique les paquets debian produits sont déposés à la racine du paquet ou dans des sous répertoires de classement. Ces paquets sont ensuite indexés lors que la construction du Packages.gz a l’aide de la commande scanpackage [3].
cd $DEB_DIR; dpkg-scanpackages . /dev/null | gzip -9c > $DEB_DIR/dists/maDistrib/all/binary-amd64/Packages.gz
Voila les paquets sont accessibles il reste a mettre a jour le client (apt-get update) puis faire soit une installation ou une mise a jours (apt-get upgrade)

Nous intéresserons dans un autre article a la structure d'un paquet debian, a son cycle de vie et comment le produire.

References

[1] https://www.debian.org/doc/manuals/debian-faq/ch-pkgtools.fr.html#s-pkgprogs
[2] https://www.debian.org/doc/manuals/debian-faq/index.fr.html#contents
[3] https://wiki.debian.org/DebianRepository/Setup?action=show&redirect=HowToSetupADebianRepository
[4] Base sur le paquet bebian https://www.debian.org/doc/manuals/debian-faq/ch-pkg_basics.fr.html
[5] https://wiki.debian.org/DebianRepository/
[6] https://wiki.debian.org/DebianRepository/Format

Aucun commentaire:

Enregistrer un commentaire