Le réseau de serveurs d'empaquetage automatique est un développement de Debian qui permet d'accélérer les empaquetages de paquet pour toutes les architectures que Debian gère actuellement. Ce réseau est constitué de plusieurs serveurs qui utilisent un programme empaqueté dédié appelé buildd afin de récupérer des paquets depuis l'archive Debian et les empaqueter pour l'architecture cible.
La distribution Debian gère pas mal d'architectures, mais les responsables de paquets construisent habituellement des versions binaires pour une seule architecture (i386 habituellement). Les développeurs pour les autres architectures doivent surveiller les nouvelles versions de paquets et les empaqueter à nouveau s'ils souhaitent rester à jour avec la distribution Intel.
Quand le projet Debian/m68k (le premier portage non-Intel) a débuté, tout ceci était fait à la main : les développeurs surveillaient sur la liste de diffusion les envois de nouveaux paquets et les récupéraient pour les construire. Afin qu'aucun paquet ne soit construit deux fois, la coordination se faisait par des annonces sur la liste de diffusion. Évidemment, cette procédure mène à des erreurs et prend du temps. Ça a pourtant été, pendant longtemps, la méthode habituelle pour maintenir les distributions non-i386 à niveau.
Le système d'empaquetage automatise la plupart de ces processus. Il consiste en une série de scripts (écrits en Perl et Python) qui ont évolué à travers le temps pour aider les porteurs dans diverses tâches. Ils ont finalement développé un système capable de maintenir à niveau quasi automatiquement des distributions non-i386.
Buildd est le nom usuel que l'on donne aux programmes utilisés par le réseau de serveurs d'empaquetage automatique, mais il est en réalité constitué de différentes parties :
Toutes ces parties contribuent ensemble à faire fonctionner le réseau de serveurs d'empaquetage.
Dans les faits, le développeur Debian moyen n'a rien à faire explicitement pour utiliser le service d'empaquetage. À chaque fois qu'il envoie un paquet à l'archive (un binaire compilé pour une architecture donnée), celui-ci est ajouté à la base de données de toutes les architectures (dans l'état Needs-Build). Les serveurs d'empaquetage enverront des requêtes à la base de données pour les paquets qui sont dans cet état, et prendront habituellement les paquets de cette liste. La liste est priorisée par précédent état de compilation, priorité, section et enfin nom de paquet.
Si l'empaquetage réussit sur toutes les architectures, les responsables n'auront rien à faire. Tous les paquets binaires produits seront envoyés sur le site principal de l'architecture. Si l'empaquetage échoue, le paquet entrera dans un état spécial (Failed ou Dep-Wait, s'ils nécessitent des dépendances spécifiques qui ne sont pas disponibles). Les administrateurs des serveurs d'empaquetage automatique examineront les paquets dont l'empaquetage échoue et rapporteront cet échec au responsable, habituellement par l'ouverture d'un bogue dans le système de suivi des bogues.
Parfois, un paquet met du temps à être empaqueté pour une architecture donnée et cela bloque son entrée dans testing. Malheureusement, le paquet devra attendre que le serveur le reprenne. Les administrateurs des serveurs d'empaquetage n'accepteront pas de demande d'accélération de l'empaquetage d'un paquet à partir du moment où la liste de priorité a déjà été établie.
Vous pouvez vérifier le statut des différentes tentatives d'empaquetage des paquets qui appartiennent à n'importe quel responsable donné en jetant un œil aux journaux des services d'empaquetage. Ces journaux sont aussi liés aux pages récapitulatives des responsables de paquets.
Pour plus d'information sur les différents états que peut prendre un paquet, veuillez lire wanna-build-states.
Bien entendu, la documentation et le code source disponibles pour ces différents outils sont le meilleur moyen de bien comprendre comment fonctionne le réseau d'empaqueteurs. Par ailleurs, la section Portage de la Référence du développeur Debian fournit des informations complémentaires sur la manière dont cela fonctionne et elle fournit aussi quelques infos sur les empaqueteurs et les outils de portage qui sont impliqués dans les processus d'installation et de maintenance du réseau de serveurs d'empaquetage.
Quelques statistiques sur le réseau de serveurs d'empaquetage sont disponibles sur les pages de statistiques des serveurs d'empaquetage.
Il peut y avoir plusieurs raisons pour qu'un développeur (ou qu'un utilisateur) veuille mettre en place et faire fonctionner un service d'empaquetage automatique :
Vous pourrez lire plus d'information sur la méthode de mise en place d'un serveur d'empaquetage automatique.
Cette introduction au réseau de serveurs d'empaquetage automatique a été écrite à partir d'extraits fournis par Roman Hodek, Christian T. Steigies, Wouter Verhelst, Andreas Barth, Francesco Paolo Lovergine et Javier Fernández-Sanguino.