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
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/.
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.
Les réactions sur ce document sont les bienvenues. Envoyez en anglais vos ajouts,
vos commentaires et critiques à l'adresse suivante :
<[email protected]>
.
Toutes les remarques concernant cette traduction peuvent être envoyées à l'adresse
suivante <[email protected]>
ou à la liste de diffusion
<[email protected]>
Fait référence aux trois distributions Debian : stable, testing et unstable.
Fait référence aux fichiers Packages.gz
et Sources.gz
.
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.
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.
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.
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 : « /
»).
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).
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.
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.
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.
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-srcuri
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
.
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)
.