Gentoo Logo

[ << ] [ < ] [ Sommaire ] [ > ] [ >> ]


5. Guide de maintenance des ebuilds

Table des matières :

5.a. Introduction

Ce guide a pour objectif de présenter les procédures courantes de maintenance des ebuilds ainsi que les procédures de maintenance plus rares avec lesquelles les développeurs ne sont pas forcément très familiers.

5.b. Ajouter un ebuild

Quand vous créez un nouvel ebuild, vous ne devez inclure que les KEYWORDS pour les architectures qui ont été effectivement testées pour cet ebuild, ce qui confirmera qu'il fonctionne effectivement bien comme nous l'espérons et que les paramètres USE sont bien respectés dans le paquet résultant de l'installation à partir de l'ebuild. Dans la mesure du possible, vous devez également préciser les bibliothèques ou applications qui ont été effectivement utilisées lors des tests dans la mesure où vous serez responsable des problèmes inhérents à votre paquet pour les architectures présentées. Un minimum de vérifications doit être effectué comme s'assurer que l'application se lance bien et sans erreurs.

Si vous ajoutez un ebuild proposé par un utilisateur, faites comme si celui-ci n'avait pas fait de vérification sur les différentes architectures : il arrive souvent que les KEYWORDS aient été récupérés sur d'autres paquets ou générés à partir de la documentation proposée avec les sources des paquets. Cela ne signifie en rien que le paquet fonctionnera effectivement sur ces mêmes architectures.

5.c. Stabiliser des ebuilds

Les ebuilds ne peuvent être stabilisés, c'est-à-dire placés de ~arch à arch que si le mainteneur de l'ebuild ou un mainteneur de l'architecture concernée considère l'ebuild comme effectivement stable. Le mainteneur du paquet doit toujours être contacté juste pour le cas où il y ait une raison pour que l'ebuild ne soit pas stabilisé pour cette architecture. Si vous faites partie d'une équipe qui gère une architecture, alors vous pouvez marquer un ebuild pour celle-ci. Si l'architecture qui vous intéresse n'est pas indiquée, veuillez consulter le responsable.

Vous ne devez jamais stabiliser des paquets sur des architectures pour lesquelles vous ne pouvez faire aucun test. À la place, vous devez remplir un formulaire de bogue destiné à l'équipe de l'architecture correspondante, comme par exemple sparc@gentoo.org pour que l'équipe s'occupant de l'architecture SPARC stabilise si possible l'ebuild. Sinon, vous pouvez également chercher des développeurs Gentoo sur IRC qui pourront vous aider dans votre demande.

Il vaut mieux éviter d'utiliser arch-maintainers@gentoo.org et préférer ajouter les équipes d'architecture dans le champ CC d'un rapport de bogue à la place. De cette manière les équipes peuvent s'enlever de la liste une fois qu'ils ont effectué le travail, ce qui permet de savoir de manière précise quelles sont les équipes qui doivent toujours stabiliser le paquet.

5.d. Règles pour stabiliser un ebuild

SPARC : vous devez avoir l'autorisation du responsable (actuellement Weeve). Vous devriez être inscrit dans l'alias sparc pour pouvoir suivre le processus d'assurance-qualité, mais d'autres dispositions peuvent être prises si vous ne travaillez que sur un petit nombre d'ebuilds.

ALPHA : les responsables de paquets peuvent marquer leurs paquets stables pour Alpha, mais il leur est demandé d'en informer l'équipe Alpha pour effectuer des tests supplémentaires et ainsi permettre de corriger les éventuelles erreurs.

MIPS : vous devez avoir l'autorisation d'un développeur MIPS expérimenté. À cause de la grande variété de matériel, vous devez être inscrit dans l'alias mips et avoir accès à des machines MIPS.

5.e. Mettre à jour des ebuilds

Les nouveaux ebuilds sont rarement proposés directement avec un mot-clef arch et, même s'ils le sont, les paquets doivent être testés sur toutes les architectures listées dans la variable KEYWORDS d'un nouvel ebuild.

Les exceptions à la règle qui consiste à ne jamais proposer directement un ebuild en arch sont les correctifs majeurs ou les mises à jour de sécurité. Si la version précédente d'un ebuild contient des mots-clefs KEYWORDS pour lesquels vous ne pouvez pas faire de tests, vous devez les replacer en instable en changeant tous les arch que vous ne pouvez pas tester en ~arch. Si vous pensez que votre paquet ne fonctionnera pas du tout même en le mettant comme ~arch, alors il est préférable d'enlever le mot-clef et de faire une demande de tests à l'équipe concernée : si vous êtes amenés à faire ce genre de chose, vous devez faire un rapport de bogue à destination de l'équipe en question.

Si une nouvelle version introduit de nouvelles dépendances qui ne sont pas disponibles sur certaines architectures, vous devez rapporter un bogue ou demander de l'aide sur IRC avant de mettre à jour le paquet. Si vous avez réellement besoin d'ajouter cet ebuild et que c'est urgent, par exemple, pour une correction de sécurité, alors vous devez enlever tous les KEYWORDS qui posent problème et mettre en CC les architectures en question dans le bogue rapporté. Vous devez pour cela ouvrir un nouveau bogue pour l'architecture en question, sauf si celui-ci existe déjà.

S'il n'y a pas de nouvelles dépendances, n'enlevez pas de mots-clefs. Si la soumission échoue avec repoman, essayez de faire un cvs update complet et si le problème subsiste, alors faites votre soumission avec repoman -I et rapportez un nouveau bogue pour l'architecture qui pose problème en indiquant le problème dans votre message de soumission de CVS.

Attention : Lorsque vous faites votre soumission CVS, assurez-vous que vous référencez bien tous les bogues rencontrés ainsi que le message CVS. Ne pas le faire est considéré comme un geste de très mauvais goût et peut donner lieu à une sanction disciplinaire.

5.f. Déplacer des ebuilds

Déplacer des ebuilds se fait en deux temps :

Tout d'abord, vous devez déplacer l'ebuild dans le CVS. Pour faire cela, vous devrez copier l'ebuild à sa nouvelle position et soumettre celui-ci comme si vous soumettiez un nouvel ebuild.

Ensuite, vous devez changer tous les ebuilds qui dépendent (via la variable DEPEND) de l'ancien ebuild pour qu'ils pointent vers le nouveau. Alors seulement, vous pourrez enlever l'ensemble des fichiers relatifs à l'ancien ebuild avec cvs remove dans l'ancien répertoire.

Note : CVS ne peut pas détruire de répertoire : il ne recréera tout simplement pas ceux-ci si ils sont vides, dans l'hypothèse ou vous utilisez l'option -P de cvs.

Une autre méthode consiste à utiliser epkgmove qui fera le travail pour vous :

Exemple de code 6.1 : Déplacer un paquet avec epkgmove

# epkgmove net-ancien/paquet net-nouveau/paquet

Une fois que le déplacement a été fait, ajoutez une entrée au dernier fichier dans profiles/updates/ dans l'arbre de Portage, avec la syntaxe suivante :

Exemple de code 6.2 : Ajouter une entrée dans les mises à jour

move net-misc/fwbuilder net-firewall/fwbuilder

Cet exemple devrait déplacer de manière transparente net-misc/fwbuilder vers net-firewall si les utilisateurs l'ont installé. De cette manière, les utilisateurs pourront désormais récupérer les mises à jour sur net-firewall quand elles sont disponibles.

5.g. Enlever des ebuilds

Quand vous supprimez un ebuild, assurez-vous qu'aucune dépendance dans Portage ne se casse à cause de la suppression. De plus, votre message de soumission au CVS devra expliquer clairement pourquoi l'ebuild a été supprimé du CVS.

Si vous avez besoin d'enlever des ebuilds, assurez-vous de ne pas enlever de manière accidentelle des ebuilds nouveaux ou stables uniquement pour certaines architectures. Si vous voulez faire une nouvelle version marquée comme stable, merci de faire un rapport de bogue ou d'en discuter sur IRC.

Vous devez également éviter de diminuer les versions stables des paquets quand vous supprimez des ebuilds. À la place, le mieux est de prendre la plus récente version marquée comme ~arch en premier lieu, puis supprimez les versions redondantes de l'ebuild.

5.h. Collision de fichiers

Si vous trouvez des paquets qui essaient d'installer des fichiers déjà installés par un autre paquet (par exemple en utilisant FEATURES=collision-protect), vous devez résoudre ce problème avant de soumettre l'ebuild. Si l'ebuild est déjà dans l'arbre Portage, remplissez un rapport de bogue sur ce paquet (voir plus bas pour une liste d'exceptions). La raison pour laquelle les collisions de fichiers sont critiques est que si « foo » installe le fichier /usr/bin/exemple et « bar » essaie d'écrire un autre fichier par dessus, puis plus tard « bar » est désinstallé, Portage va supprimer /usr/bin/exemple, avec de grandes chances pour que cela empêche « foo » de fonctionner.

La solution la plus évidente est d'ajouter une dépendance bloquante sur les deux paquets qui veulent installer le même fichier, afin qu'ils ne puissent pas être installés tous les deux en même temps. Mais, à moins qu'il n'y ait d'autres raisons pour que ces paquets se bloquent entre eux, vous devriez éviter ce genre de manipulation et essayer plutôt de modifier les paquets en utilisant l'une des méthodes suivantes (liste non exhaustive) :

  • Modifiez le (R)DEPEND de « foo » pour que ce dernier dépende de « bar ».
  • Enlevez les fichiers qui engendrent la collision de « foo » dans src_install ou pkg_preinst.
  • Déplacez les fichiers en conflit dans un nouveau sous-paquet et faites en sorte que « foo » et « bar » dépendent ((R)DEPEND) tous deux de ce paquet.
  • Changez le répertoire dans lequel « foo » ou « bar » installent les fichiers en conflit.

Dans certains cas, les collisions de fichiers ne peuvent pas être résolues ou ne sont pas critiques. Les exceptions connues actuellement sont les pages de manuel des modules Perl (qui écrasent celles de Perl lui-même), ainsi que les fichiers protégés par CONFIG_PROTECT (les collisions sur ces fichiers devraient tout de même être corrigées, mais elles sont moins graves puisque Portage n'écrasera aucun de ces fichiers).


[ << ] [ < ] [ Sommaire ] [ > ] [ >> ]


Imprimer

Voir tout

Dernière mise à jour le 5 décembre 2004

Résumé : Cette section décrit comment les développeurs devraient réaliser les tâches communes lors de la maintenance des ebuilds dans l'arbre Portage.

Donny Davies
HOWTO Ebuilds - Auteur

Peter Gavin
Auteur

Karl Trygve Kalleberg
Auteur

Mike Frysinger
Auteur

Daniel Robbins
Auteur/Relecteur

John P. Davis
Auteur/Relecteur

Jorge Paulo
Relecteur

Sven Vermeulen
Relecteur

Zack Gilburd
Relecteur

Benny Chuang
Relecteur

Erwin
Relecteur

Dan Armak
HOWTO Eclass - Autheur

Alastair Tse
Erreurs Classiques pour les ebuilds - Auteur

Paul De Vrieze
Documentation Metadata - Auteur

Owen Stampflee
Politique générale concernant les ebuilds - Auteur

Seemant Kulleen
Relecteur

Jon Portnoy
Relecteur

Carl Anderson
Relecteur

Ciaran McCreesh
Correcteur

Nicholas D. Wolfwood
Correcteur

Marius Mauch
Correcteur

Daniel Black
Correcteur

Tim Yamin
Auteur/Relecteur

Wernfried Haas
Correcteur

Shyam Mani
Relecteur

L'équipe relationnelle des développeurs Gentoo
Relecteurs

Clément Varaldi
Traducteur

Xavier Neys
Traducteur

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.