Ubuntu logo

Packaging Guide

3. Développement Distribué d’Ubuntu — Introduction

Ce guide se consacre à l’empaquetage utilisant la méthode Développement Distribué d’Ubuntu (UDD).

Ubuntu Développement Distribué (UDD) est une nouvelle technique de développement de paquets Ubuntu utilisant des outils, des processus et des flux de travail similaires à ceux du développement de logiciels basé sur des Systèmes de Contrôle de Version Distribuée (DVCS) génériques. Le DVCS utilisé pour UDD est Bazaar.

3.1. Limites de l’empaquetage traditionnel

Traditionnellement, les paquets Ubuntu ont été conservés dans des fichiers d’archive tar. Un paquet source traditionnel est composé de la source de l’archive tar de l’amont, d’une archive tar « debian » (ou d’un fichier compressé diff pour les paquets les plus anciens) contenant le paquet et un fichier .dsc de méta-données. Pour voir un paquet traditionnel, lancez :

$ apt-get source kdetoys

Cela va télécharger la source de l’amont kdetoys_4.6.5.orig.tar.bz2, l’empaquetage kdetoys_4.6.5-0ubuntu1.debian.tar.gz et les méta-données kdetoys_4.6.5-0ubuntu1~ppa1.dsc. En supposant que vous avez installé dpkg-dev, cela les décompressera et vous donnera le paquet source.

L’empaquetage traditionnel éditerait ces fichiers et les téléchargerait. Cependant, cela limite les occasions de collaborer avec d’autres développeurs, les modifications doivent être passées sous forme de fichiers diff sans moyen centralisé de les tracer et deux développeurs ne peuvent pas apporter des modifications au même instant. Ainsi, la plupart des équipes ont déplacé leurs empaquetages dans un système de contrôle de révision. Cela facilite le travail commun de plusieurs développeurs sur un paquet. Cependant, il n’existe aucun lien direct entre le système de contrôle de révision et les paquets d’archive, ainsi les deux doivent être synchronisés manuellement. Depuis que chaque équipe travaille dans son propre système de contrôle de révision, un potentiel développeur doit d’abord déterminer la localisation et comment obtenir l’empaquetage avant de pouvoir travailler sur le paquet.

3.2. Développement Distribué Ubuntu

Avec le Développement Distribué Ubuntu, tous les paquets de l’archive Ubuntu (et Debian) sont automatiquement importés sous forme de branches Bazaar sur notre site Launchpad d’hébergement de code. Les modifications sont apportées directement à ces branches en étapes successives par toute personne ayant une autorisation d’engagement. Les modifications peuvent aussi être réalisées dans des branches dérivées puis fusionnées de nouveau avec Fusionner les Propositions, lorsqu’elles sont assez grandes pour nécessiter une relecture ou si elles sont engagées par une personne sans autorisation directe d’engagement.

Les branches UDD sont toutes dans un emplacement standard, facilitant leur extraction :

$ bzr branch ubuntu:kdetoys

L’historique des fusions inclut deux branches distinctes, l’une pour la source de l’amont, et l’autre qui ajoute le répertoire d’empaquetage debian/ :

$ cd kdetoys
$ bzr qlog

(Cette commande utilise qbzr. Pour une interface graphique utilisateur, exécutez log au lieu de qlog pour une interface console.)

./_images/kdetoys-udd-branch.png

Cette branche UDD de kdetoys montre l’empaquetage complet pour chaque version téléchargée vers Ubuntu avec des cercles gris et les versions sources de l’amont avec des cercles verts. Les versions sont étiquetées soit avec leur version dans Ubuntu telle que 4:4.2.29-0ubuntu1 ou pour la branche de l’amont, avec leur version de l’amont upstream-4.2.96.

De nombreux paquets Ubuntu sont basés sur des paquets de Debian, UDD importe aussi les paquets Debian dans nos branches. Dans la branche kdetoys ci-dessus, les versions Debian à partir de unstable sont depuis la fusion avec des cercles bleus alors que ceux de Debian experimental sont avec des cercles jaunes. Les versions Debian sont étiquetées avec leur numéro de version, par exemple, 4:4.2.2-1.

Ainsi, depuis une branche UDD, vous pouvez voir l’historique complet des modifications du paquet et comparer n’importe quelle version entre elles. Par exemple, pour voir les changements entre la version 4.2.2 dans Debian et la 4.2.2 dans Ubuntu, utilisez :

$ bzr qdiff -r tag:4:4.2.2-1..tag:4:4.2.2-1ubuntu1

(Cette commande utilise qbzr. Pour une interface graphique utilisateur, exécutez diff au lieu de qdiff pour une interface console.)

./_images/kdetoys-udd-diff.png

A partir de là, nous pouvons clairement voir ce qui a changé dans Ubuntu par rapport à Debian, très pratique.

3.3. Bazaar

Les branches UDD utilisent Bazaar, un système de contrôle des versions distribuées conçu pour être facile à utiliser pour les familiers de systèmes populaires comme Subversion, tout en offrant la puissance de Git.

To do packaging with UDD you will need to know the basics of how to use Bazaar to manage files. For an introduction to Bazaar see the Bazaar Five Minute Tutorial and the Bazaar Users Guide.

3.4. Limites de l’UDD

Le Développement Distribué d’Ubuntu est une nouvelle méthode de travail avec les paquets Ubuntu. Elle compte actuellement quelques limitations importantes :

  • Réaliser une branche complète avec historique peut prendre beaucoup de temps et de ressources réseau. Vous trouverez plus rapide d’effectuer une vérification allégée avec bzr checkout --lightweight ubuntu:kdetoys mais cela nécessitera un accès réseau pour les opérations bzr ultérieures.

  • Travailler avec des correctifs est fastidieux. Les correctifs peuvent êtres considérés comme un Système de Contrôle de Révision ramifié, ainsi nous nous retrouvons avec un SCR par-dessus un SCR.

  • Il est impossible de construire directement depuis les branches. Vous devez créer un paquet source et le télécharger.

  • Some packages have not been successfully imported into UDD branches. Recent versions of Bazaar will automatically notify you when this is the case. You can also check the status of the package importer manually before working on a branch.

Tout ce qui précède est en cours d’élaboration et UDD est appelé à devenir prochainement le principal moyen de travailler sur les paquets Ubuntu. Cependant, la plupart des équipes actuellement dans Ubuntu ne travaille pas encore avec les branches UDD pour leur développement. Toutefois, puisque les branches UDD sont les mêmes que les paquets dans l’archive, n’importe quelle équipe devrait être en mesure d’accepter leurs fusions respectives.