Guide pratique des référentiels Debian

Version française du Debian Repository HOWTO

Aaron Isotton

Adaptation française: Éric Madesclair

Résumé

Ce document décrit le fonctionnement et l'installation des référentiels Debian.


Table des matières

Introduction
Copyright et licence
Réactions
Termes utilisés dans ce document
Comment fonctionne un référentiel
Comment installer un référentiel
Référentiel automatique
Référentiel trivial
Créer les catalogues
Créer le fichier Release
Créer un « Pool »
Outils
Utiliser un référentiel
Voir aussi

Introduction

Un référentiel Debian est un ensemble de paquets Debian et de fichiers additionnels organisés sous une arborescence particulière. Les fichiers additionnels sont les fichiers catalogues et les fichiers contenant les sommes de contrôles des paquets. Si un utilisateur ajoute une nouvelle entrée dans le fichier /etc/apt/source.list, il pourra facilement avoir accès et installer tous les paquets disponibles dans ce référentiel.

Un référentiel peut être soit en ligne « online » ou hors-ligne « offline » (par exemple sur un cédérom), les référentiels en ligne sont les plus courants.

Ce document présente le fonctionnement des référentiels Debian, les méthodes pour les créer et comment y accéder en les ajoutant correctement dans le fichier sources.list.

Le document original peut être récupéré à l'adresse : http://www.isotton.com/debian/docs/repository-howto/.

Copyright et licence

Référentiels Debian HOWTO, Copyright (c) 2002-2003 Aaron Isotton. Permission est donnée de copier, distribuer ou modifier ce document selon les termes de la GNU Free Documentation License, version 1.1 ou suivante, publié par la Free Software Foundation ; sans Sections Invariables, sans Texte de Première de Couverture, et sans Texte de Quatrième de Couverture.

Réactions

Les réactions sur ce document sont les bienvenues. Envoyez en anglais vos ajouts, vos commentaires et critiques à l'adresse suivante : .

Toutes les remarques concernant cette traduction peuvent être envoyées à l'adresse suivante ou à la liste de diffusion

Termes utilisés dans ce document

Distributions

Fait référence aux trois distributions Debian : stable, testing et unstable.

Les catalogues

Fait référence aux fichiers Packages.gz et Sources.gz.

Comment fonctionne un référentiel

Un référentiel est constitué d'au moins un répertoire contenant des paquets DEB, et de deux fichiers particuliers : Packages.gz pour les paquets binaires, et Sources.gz pour les paquets source.

Si le référentiel est correctement ajouté dans le fichier sources.list, la commande apt-get récupérera les catalogues. Le fichier Packages.gz pour la liste des paquets binaires (mot clef deb) et le fichier Sources.gz pour la liste des paquets source (mot clef deb-src).

Le fichier Packages.gz contient le nom, la version, la taille, une description courte et une longue, les dépendances de chaque paquet (et des informations complémentaires). Toute ces informations sont affichées (et utilisées) par des logiciels d'administration des paquets comme dselect ou aptitude.

Le fichier Sources.gz contient le nom, la version et les dépendances pour la compilation (les paquets nécessaires pour construire le paquet) de chaque paquet (et des informations complémentaires) ; ces informations sont utilisées par apt-get source ou par des outils similaires.

Le fichier optionnel Release contient des informations sur le référentiel. Ces informations sont utilisées pour l'étiquetage « Pinning ». Pour plus d'information sur l'étiquetage, vous pouvez consulter le APT HOWTO.

Ainsi, une fois que le référentiel a été correctement configuré, vous pouvez installer tous vos paquets avec ceux propres à Debian. Si un paquet est mis à jour dans le référentiel, l'utilisateur pourra mettre à niveau son paquet en exécutant la commande apt-get upgrade. De plus chaque utilisateur aura accès facilement à la description courte et aux autres informations importantes sur vos paquets.

De plus, si le référentiel a été correctement créé, vous pouvez obtenir les paquets pour chaque distribution et pour chaque architecture (actuellement onze) supportées ; apt récupérera automatiquement le bon paquet pour la machine de l'utilisateur, sans rien connaître des autres architectures. Il est aussi possible de grouper les paquets selon différents composants. Les paquets officiels Debian sont répartis en trois composants, main, non-free et contrib. Donc si votre paquet a été porté sur plusieurs architectures, vous apprécierez la souplesse des référentiels.

Comment installer un référentiel

Il existe deux sortes de référentiels ; le premier, complexe où l'utilisateur a seulement besoin de spécifier l'adresse du référentiel, la distribution et les composants désirés (apt cherchera automatiquement les paquets pour la bonne architecture, s'ils sont disponibles) et le second, plus simple où l'utilisateur doit indiquer le chemin exact (apt déterminera quel paquet est le bon). Le premier est plus difficile à configurer mais son utilisation est simplifié, il doit toujours être utilisé pour des référentiels complexe ou multiplateforme. Le second est plus simple à mettre en oeuvre, mais doit être réservé pour des petits référentiels ou des référentiels gérant une seule architecture.

Pour simplifier, on parlera dans la suite du document de référentiels automatiques pour le premier et de référentiels triviaux pour le second.

Référentiel automatique

La structure des répertoires d'un référentiel automatique pour les architectures et les composants standards de Debian doit ressemblé à ça :

Exemple 1. Un référentiel Debian standard

(racine du référentiel) 
| 
+-dists
  | 
  |-stable
  | |-main
  | | |-binary-alpha 
  | | |-binary-arm
  | | |-binary-...
  | | +-source 
  | |-contrib
  | | |-binary-alpha 
  | | |-binary-arm
  | | |-binary-...
  | | +-source 
  | +-non-free
  |   |-binary-alpha
  |   |-binary-arm
  |   |-binary-...
  |   +-source
  |
  |-testing 
  | |-main
  | | |-binary-alpha 
  | | |-binary-arm
  | | |-binary-...
  | | +-source 
  | |-contrib
  | | |-binary-alpha 
  | | |-binary-arm
  | | |-binary-...
  | | +-source 
  | +-non-free
  |   |-binary-alpha
  |   |-binary-arm
  |   |-binary-...
  |   +-source
  |
  +-unstable 
    |-main
    | |-binary-alpha 
    | |-binary-arm
    | |-binary-...
    | +-source 
    |-contrib
    | |-binary-alpha 
    | |-binary-arm
    | |-binary-...
    | +-source 
    +-non-free
      |-binary-alpha
      |-binary-arm
      |-binary-...
      +-source
	 

Les paquets libres sont placés dans la section main ; les paquets non libres dans la section non-free et les paquets libres dépendant de paquets non-free sont placés dans la section contrib. Debian s'installe actuellement sur onze architectures différentes ; la plupart d'entre elles ont été omises dans l'exemple pour rester concis.

Chaque répertoire binary-* contient un fichier Packages.gz et un fichier Release optionnel. Chaque répertoire source contient un fichier Sources.gz et un fichier Release optionnel. Notez que les paquets n'ont pas besoin d'être dans le même répertoire que les catalogues ; car le chemin de chaque paquet est contenu dans les catalogues. De ce fait, les paquets peuvent être mis n'importe ou dans le référentiel. Ce qui rend possible la création de «  pools ».

Vous êtes libre de créer autant de distributions et de composants et de les nommer comme vous le souhaitez. Ceux pris dans les exemple sont ceux utilisés par Debian. Il est possible par exemple de créer les distributions courante et bêta (au lieu de stable, testing et unstable), et les composants foo, bar, baz et qux (à la place de main, contrib et non-free).

Bien que vous soyez libre de nommer les composants comme vous le souhaitez, Il est préférable d'utiliser les noms standards, car c'est ce qu'attendent les utilisateurs de Debian.

Référentiel trivial

Un référentiel trivial est composé d'un répertoire racine et de plusieurs sous-répertoires. Comme l'utilisateur doit spécifier le chemin de la racine du référentiel ainsi que le chemin relatif entre la racine et le répertoire contenant les catalogues, vous êtes libre de faire ce que vous désirez (même mettre tout à la racine du référentiel. Dans ce cas, le chemin relatif sera très simple : « / »).

Exemple 2.  Un référentiel trivial avec deux sous-répertoires

(racine du référentiel)
|
|-binary
+-source
    
	

Créer les catalogues

La commande dpkg-scanpackages permet de générer le fichier Packages et la commande dpkg-scansources le fichier Sources.

Le résultat des deux commandes est affiché sur la sortie standard ; ainsi pour générer un fichier compressé, vous pouvez utiliser une commande comme : dpkg-scanpackages arguments | gzip -9c > Packages.gz.

Les deux commandes fonctionnent de la même manière ; elles prennent deux arguments (en réalité il y en a plus, reportez-vous aux pages de manuel pour en savoir plus). Le premier est le répertoire où sont les paquets, et le second est un fichier override. Pour un simple référentiel le fichier override n'est pas nécessaire, mais l'argument est obligatoire, utilisez simplement /dev/null.

La commande dpkg-scanpackages recherche les paquets avec l'extension .deb et dpkg-scansources les fichiers avec l' extension .dsc. Il est nécessaire de mettre les fichiers .orig.gz, .diff.gz et .dsc ensemble. Le fichier .changes n'est pas utilisé.

Ainsi, si vous avez un référentiel trivial comme celui de Exemple 2, «  Un référentiel trivial avec deux sous-répertoires », vous pouvez créer les catalogues de la façon suivante :

	$ cd my-repository
	$ dpkg-scanpackages binary /dev/null | gzip -9c > binary/Packages.gz
	$ dpkg-scansources source /dev/null | gzip -9c > source/Sources.gz
	

Si votre référentiel est plus complexe comme celui de Exemple 1, « Un référentiel Debian standard », vous devriez écrire des scripts pour automatiser le processus.

Vous pouvez aussi utiliser l'argument pathprefix avec les deux commandes pour simplifier la syntaxe ; ceci est laissé comme exercice pour le lecteur (reportez-vous aux pages de manuel).

Créer le fichier Release

Si vous souhaitez que les utilisateurs puissent utiliser l'étiquetage « Pinning » avec votre référentiel, vous devez inclure un fichier Release dans chaque répertoire contenant les catalogues. (Vous pouvez consulter le APT HOWTO pour plus d'information sur l'étiquetage).

Le fichier Release est un simple fichier texte de la forme suivante :

    Archive: archive
    Component: composant
    Origin: votre Compagnie
    Label: YourCompany Debian repository
    Architecture: architecture
	
Archive

Le nom de la distribution Debian auquel appartiennent les paquets du répertoire, c'est-à-dire stable, testing ou unstable.

Component

Les composants auquel appartiennent les paquets du répertoire, par exemple main, non-free, ou contrib.

Origin

Le nom du responsable du paquet.

Label

un commentaire satisfaisant pour les paquets ou pour votre référentiel. Utilisez votre imagination.

Architecture

L'architecture cible des paquets du répertoire, comme i386, sparc ou source.

Il est important d'avoir des valeurs correctes pour les champs Archive et Architecture, car ce sont les plus utilisés pour l'étiquetage. Les autres champs sont moins importants.

Créer un « Pool »

Avec les référentiels automatiques, distribuer les paquets dans des répertoires différents peut devenir rapidement difficile à administrer. Il y a aussi de l'espace disque ainsi que de la bande passante gâché, car il y a beaucoup de paquets (par exemple les paquets de documentation) identiques dans toutes les architectures.

Dans ce cas, une solution possible est un pool. Un pool est un répertoire supplémentaire à la racine du référentiel qui regroupe tous les paquets (les binaires pour toutes les architectures, toutes les distributions et tous les composants ainsi que toutes les sources). Au travers d'une combinaison adéquate des fichiers override. Un bon exemple de référentiel incluant un pool est le référentiel Debian.

Les pools sont seulement utiles pour des référentiels importants. Je n'ai jamais fait de référentiel semblable et je ne pense pas en avoir besoin prochainement, c'est pourquoi je n'expliquerai pas comment faire. Si vous pensez qu'une section doit être ajoutée, vous êtes libre de l'écrire. Contactez-moi alors pour que je la rajoute.

Outils

Il existe différents outils pour automatiser et faciliter la création des archives Debian ; j'ai listé les plus importants.

apt-ftparchive est utilisé pour déplacer un ensemble de paquets Debian dans une arborescence du type de celle utilisée dans les archives officielles de Debian. Cette commande fait partie du paquet apt-utils.

apt-move est utilisé pour déplacer un ensemble de paquets Debian dans une arborescence du type de celle utilisée dans les archives officielles de Debian.

Utiliser un référentiel

L'utilisation d'un référentiel est très simple, mais dépend du genre de référentiel que vous avez fait : binaire ou source, et automatique ou trivial.

Chaque référentiel prend une ligne dans le fichier sources.list ; pour un référentiel de binaire vous utilisez la commande deb, et pour les sources la commandedeb-src.

Chaque ligne a la syntaxe suivante :

deb|deb-src uri distribution [component1] [component2] [...]

L'uri est l'URI de la racine du référentiel comme par exemple : ftp://ftp.votresite.com/debian, http://votresite.com/debian, ou, pour un référentiel trivial : file::///home/joe/mon-referentiel-debian. La dernière barre oblique est facultative.

Pour un référentiel automatique, vous devez spécifier une distribution et un ou plusieurs composants ; le nom de la distribution ne doit pas se terminer par une barre oblique.

Exemple 3. Deux référentiels automatiques dans mon sources.list

	  deb ftp://sunsite.cnlab-switch.ch/mirror/debian/ unstable main contrib non-free
	  deb-src ftp://sunsite.cnlab-switch.ch/mirror/debian/ unstable main contrib non-free
	  

Ces deux lignes définissent un référentiel automatique pour paquets binaires et paquets source ayant pour racine ftp://sunsite.cnlab-switch.ch/mirror/debian/, comme distribution unstable et pour composants main, contrib et non-free.

Si le référentiel n'est pas automatique, alors la distribution définit le chemin relatif vers les catalogues et doit se terminer par une barre oblique, et aucun composant ne doit être spécifié.

Exemple 4. Deux référentiels triviaux dans mon sources.list

	  deb file:///home/aisotton/rep-exact binary/
	  deb-src file:///home/aisotton/rep-exact source/
	  

La première de ces deux lignes définit un référentiel de paquet binaire dans le répertoire /home/aisotton/rep-exact/binary sur ma machine locale ; et la seconde définit un référentiel pour paquets source dans le répertoire /home/aisotton/rep-exact/source.

Voir aussi

  • La documentation sur apt-ftparchive.

  • La documentation sur apt-get et pour apt.

  • La documentation sur apt-move

  • http://www.apt-get.org/ pour des exemples de référentiels.

  • Le APT HOWTO.

  • La documentation sur dpkg-scanpackages.

  • La documentation sur dpkg-scansources.

  • Les pages de manuels sur sources.list(5).