fichier
Transcription
fichier
Guide Bugzilla - Version 2.16.4 Matthew P. Barnson The Bugzilla Team Romain Conseil Adaptation française Guillaume Huray Adaptation française Mickaël Lagneaux Adaptation française Guillaume Tanguy Adaptation française Yvon Benoist Relecture Guide Bugzilla - Version 2.16.4 by Matthew P. Barnson, and The Bugzilla Team, Romain Conseil Adaptation française Guillaume Huray Adaptation française Mickaël Lagneaux Adaptation française Guillaume Tanguy Adaptation française Yvon Benoist Relecture Published 2003-11-01 Ceci est la documentation de Bugzilla, le système de suivi de bogues de mozilla.org. Bugzilla est un logiciel pour les entreprises, qui permet à des centaines d’organismes du monde entier de dépister des anomalies par millions. La maintenance de cette documentation est assurée dans le format DocBook 4.1.2 XML. La meilleure façon de procéder est de soumettre les modifications sous forme de texte clair ou de balises XML, joint au bogue archivé dans le système Bugzilla de mozilla.org (http://bugzilla.mozilla.org/enter_bug.cgi?product=Bugzilla&component=Documentation). La version la plus récente de ce document en version originale est tout le temps disponible sur la page de documentation de Bugzilla (http://www.bugzilla.org/documentation.html). La version française de cette documentation est disponible à l’adresse : http://www.traduc.org/docs/guides/lecture/bugzilla-guide/ (http://www.traduc.org/docs/guides/lecture/bugzillaguide). Table of Contents 1. A propos de ce guide .................................................................................................................................................1 1.1. Informations sur le Copyright ........................................................................................................................1 1.2. Décharge de responsabilités ...........................................................................................................................1 1.3. Nouvelles Versions .........................................................................................................................................1 1.4. Remerciements ...............................................................................................................................................2 1.5. Conventions du Document .............................................................................................................................3 2. Introduction...............................................................................................................................................................4 2.1. Qu’est-ce que Bugzilla ? ................................................................................................................................4 2.2. Pourquoi utiliser Bugzilla ?............................................................................................................................4 3. Utilisation de Bugzilla...............................................................................................................................................6 3.1. Comment utiliser Bugzilla ?...........................................................................................................................6 3.1.1. Créez un compte Bugzilla..................................................................................................................6 3.1.2. Anatomie d’un bogue ........................................................................................................................6 3.1.3. Recherche de bogues .........................................................................................................................7 3.1.4. Listes de Bogues ................................................................................................................................8 3.1.5. Classement des bogues ......................................................................................................................8 3.2. Trucs et astuces ..............................................................................................................................................8 3.2.1. Création automatique de liens (Autolinkification) ............................................................................9 3.2.2. Quicksearch .......................................................................................................................................9 3.2.3. Commentaires ....................................................................................................................................9 3.2.4. Pièces jointes .....................................................................................................................................9 3.2.5. Classement des bogues ....................................................................................................................10 3.3. Préferences Utilisateurs................................................................................................................................10 3.3.1. Account Settings (Configuration du compte) ..................................................................................10 3.3.2. Email Settings (Configuration des Emails)......................................................................................10 3.3.3. Pied de page.....................................................................................................................................11 3.3.4. Permissions ......................................................................................................................................11 4. Installation ...............................................................................................................................................................12 4.1. Installation étape par étape ...........................................................................................................................12 4.1.1. Introduction......................................................................................................................................12 4.1.2. Liste des logiciels ............................................................................................................................12 4.1.3. MySQL ............................................................................................................................................13 4.1.4. Perl...................................................................................................................................................14 4.1.5. Modules Perl....................................................................................................................................14 4.1.5.1. DBI......................................................................................................................................15 4.1.5.2. Data::Dumper......................................................................................................................15 4.1.5.3. Les modules liés à MySQL .................................................................................................15 4.1.5.4. Modules TimeDate..............................................................................................................15 4.1.5.5. GD (facultatif).....................................................................................................................15 4.1.5.6. Chart::Base (facultatif)........................................................................................................16 4.1.5.7. Template Toolkit .................................................................................................................16 4.1.6. Serveur HTTP ..................................................................................................................................16 4.1.7. Bugzilla............................................................................................................................................17 4.1.8. Configurer la Base de Données MySQL .........................................................................................18 iii 4.1.9. checksetup.pl .............................................................................................................................18 4.1.10. Configurer Bugzilla .......................................................................................................................19 4.2. Configuration supplémentaire facultative.....................................................................................................19 4.2.1. Diagrammes de dépendance ............................................................................................................19 4.2.2. Les graphiques de Bogues ...............................................................................................................20 4.2.3. Le cron plaintif ................................................................................................................................20 4.2.4. Authentification LDAP ....................................................................................................................20 4.2.5. Empêcher les pages de Bugzilla d’exécuter du code Javascript malveillant. ..................................21 4.2.6. Fichiers .htaccess et sécurité.......................................................................................................22 4.2.7. mod_throttle et la sécurité ..........................................................................................................22 4.3. Notes d’installation sur Win32.....................................................................................................................23 4.3.1. Installation sur Win32 : étape par étape...........................................................................................23 4.3.2. Astuces supplémentaires pour Windows .........................................................................................29 4.4. Notes d’installation sous Mac OS X ............................................................................................................30 4.5. Résolution des problèmes.............................................................................................................................30 4.5.1. Bundle::Bugzilla met à niveau Perl à la version 5.6.1.....................................................................30 4.5.2. "DBD::Sponge::db prepare failed" (la préparation de DBD::Sponge::db a échoué).......................30 4.5.3. "cannot chdir(/var/spool/mqueue)" (impossible de faire chdir...)....................................................31 4.5.4. "Your vendor has not defined Fcntl macro O_NOINHERIT" (votre revendeur n’a pas défini ...) ..31 5. Administrer Bugzilla ..............................................................................................................................................33 5.1. Configuration de Bugzilla ............................................................................................................................33 5.2. Administration des utilisateurs.....................................................................................................................34 5.2.1. Créer l’utilisateur par défaut ............................................................................................................35 5.2.2. Gérer les autres utilisateurs..............................................................................................................35 5.2.2.1. Créer de nouveaux utilisateurs ............................................................................................35 5.2.2.2. Modifier les utilisateurs.......................................................................................................35 5.3. Produit, composant, jalon ["Milestone"], et administration de version .......................................................37 5.3.1. Les produits .....................................................................................................................................37 5.3.2. Les composants................................................................................................................................37 5.3.3. Les versions .....................................................................................................................................38 5.3.4. Jalons ...............................................................................................................................................38 5.4. Le vote..........................................................................................................................................................39 5.5. Groupes et sécurité de groupes.....................................................................................................................39 5.6. Sécurité Bugzilla ..........................................................................................................................................40 5.6.1. Ports TCP/IP ....................................................................................................................................41 5.6.2. MySQL ............................................................................................................................................41 5.6.3. Comptes démons..............................................................................................................................42 5.6.4. Contrôles d’accès au serveur Web ...................................................................................................42 5.7. Personnalisation des modèles ["Template Customisation"] .........................................................................43 5.7.1. Ce qu’il faut éditer ...........................................................................................................................44 5.7.2. Comment éditer des modèles...........................................................................................................45 5.7.3. Formats des modèles........................................................................................................................45 5.7.4. Modèles particuliers.........................................................................................................................46 5.8. Mettre à jour avec les nouvelles versions.....................................................................................................47 5.9. Intégrer Bugzilla avec des outils Third-Party...............................................................................................49 5.9.1. Bonsai ..............................................................................................................................................50 5.9.2. CVS..................................................................................................................................................50 iv 5.9.3. Perforce SCM ..................................................................................................................................50 5.9.4. Tinderbox/Tinderbox2 .....................................................................................................................50 A. La foire aux questions de Bugzilla........................................................................................................................51 B. La base de données de Bugzilla.............................................................................................................................63 B.1. Schema de la base de données .....................................................................................................................63 B.2. Introduction à la base de données MySQL de Bugzilla ..............................................................................65 B.2.1. Les rudiments de la base de données de Bugzilla...........................................................................65 B.2.1.1. Les tables de la base de données de Bugzilla .....................................................................66 C. Programmes de correction et utilitaires utiles pour Bugzilla ............................................................................71 C.1. L’excellent mod_rewrite d’Apache ..........................................................................................................71 C.2. Requêtes Bugzilla en ligne de commande ...................................................................................................71 D. Variantes et Concurrents de Bugzilla...................................................................................................................73 D.1. Le Bugzilla de Red Hat ...............................................................................................................................73 D.2. Loki Bugzilla (Fenris) .................................................................................................................................73 D.3. Issuezilla ......................................................................................................................................................73 D.4. Scarab ..........................................................................................................................................................73 D.5. Perforce SCM ..............................................................................................................................................74 D.6. SourceForge.................................................................................................................................................74 E. GNU Free Documentation License .......................................................................................................................75 0. PREAMBLE....................................................................................................................................................75 1. APPLICABILITY AND DEFINITIONS........................................................................................................75 2. VERBATIM COPYING..................................................................................................................................76 3. COPYING IN QUANTITY ............................................................................................................................76 4. MODIFICATIONS..........................................................................................................................................77 5. COMBINING DOCUMENTS ........................................................................................................................78 6. COLLECTIONS OF DOCUMENTS..............................................................................................................78 7. AGGREGATION WITH INDEPENDENT WORKS.....................................................................................78 8. TRANSLATION .............................................................................................................................................79 9. TERMINATION..............................................................................................................................................79 10. FUTURE REVISIONS OF THIS LICENSE ................................................................................................79 How to use this License for your documents ......................................................................................................79 Glossary .......................................................................................................................................................................81 v List of Figures 4-1. D’autres message d’erreur File::Temp ..................................................................................................................31 4-2. Rustine pour for File::Temp dans Perl 5.6.0..........................................................................................................32 List of Examples 4-1. Installer les modules ppd ActivePerl sur Microsoft Windows ..............................................................................24 4-2. Installer manuellement les modules ppd d’OpenInteract sur Microsoft Windows. ..............................................24 4-3. Suppression de encrypt() dans la version 2.12 et antérieur de Bugzilla, pour Windows NT ................................29 5-1. Mise à niveau avec CVS ........................................................................................................................................47 5-2. Mise à niveau avec l’archive "tar" .........................................................................................................................48 5-3. Mise à niveau avec les programmes de correction ................................................................................................49 vi Chapter 1. A propos de ce guide 1.1. Informations sur le Copyright La permission est accordée pour la copie, la distribution et/ou la modification ce document en vertu de la Licence GNU sur la Documentation libre, en Version 1.1 ou n’importe quelle version plus récente publiée par la Free Software Foundation ; sans section invariante, sans texte sur le premier de couverture ou sur le dernier de couverture. Une copie de la Licence est inclue dans l’appendice Appendix E. —Copyright (c) 2000-2003 Matthew P. Barnson and The Bugzilla Team Si vous avez des questions concernant ce document, son copyright ou sur la publication de ce document sous une forme non électronique, veuillez contacter The Bugzilla Team. 1.2. Décharge de responsabilités Aucune responsabilité quant au contenu de ce document ne peut être acceptée. Vous utilisez les concepts, exemples et autres contenus du présent document à vos propres risques. Ce document peut contenir des erreurs et des inexactitudes qui peuvent endommager votre système, causer le départ de votre partenaire, pourrait pousser votre patron à vous licencier, vos chats à faire pipi sur vos meubles et vos vêtements, et une guerre mondiale thermonucléaire. Agissez avec prudence. Chaque copyright concerne exclusivement ceux qui le détiennent, à moins qu’il n’en soit fait mention contraire. L’utilisation d’un terme dans ce document ne doit pas être considéré comme ayant une incidence sur une marque déposée ou d’une marque de service. Nommer des produits particuliers ou des marques ne doit pas être vu comme une recommandation publicitaire, excepté le terme "GNU/Linux". Nous approuvons sans réserves l’utilisation de GNU/Linux dans chaque situation où il est approprié. C’est un système d’exploitation extrêmement polyvalent, stable, et robuste qui offre un environnement idéal de fonctionnement pour Bugzilla. Nous vous recommandons vivement de faire une sauvegarde de votre système avant l’installation Bugzilla et à intervalles réguliers ensuite. Si il y a une suggestion de ce guide à appliquer, c’est bien celle-là ! Bien que l’équipe de développement Bugzilla ait porté une grande attention pour s’assurer que tous les bogues ou options facilement exploitables soient documentés ou inscrits dans le code, des trous de sécurité existent sûrement. Le plus grand soin devra être pris quant à l’installation et à l’utilisation de ce logiciel. Réfléchissez soigneusement aux implications de l’installation d’autres services de réseau avec Bugzilla. Les membres d’équipe de développement Bugzilla, Netscape Communications, America Online inc., et tous développeurs ou sponsors affiliés n’assument aucune responsabilité quant à l’usage que vous faites de ce produit. Vous avez le code source de ce produit, et êtes responsable de le contrôler vous-même pour assurer vos besoins en terme de sécurité. 1.3. Nouvelles Versions Ceci est la version 2.16.4 du Guide Bugzilla. Il est ainsi nommé pour correspondre à la version de Bugzilla avec laquelle il est distribué. Si vous lisez ceci depuis une autre source que celles mentionnées plus bas, veuillez vérifiez 1 Chapter 1. A propos de ce guide un de ces miroirs pour être certain que vous lisez une version à jour de ce guide. On peut toujours trouver la dernière version de ce guide à l’adresse bugzilla.org (http://www.bugzilla.org); y compris la documentation pour les versions antérieures ainsi que la version actuellement en développement. On peut également trouver la documentation de la dernière version stable de Bugzilla sur The Linux Documentation Project (http://www.tldp.org). On peut toujours aller voir la dernière version de ce document via le serveur CVS. Suivez les instructions disponibles sur la page CVS de Mozilla (http://www.mozilla.org/cvs.html),et allez dans l’arborescence mozilla/webtools/bugzilla/docs/ Le Guide de Bugzilla est actuellement disponible seulement en Anglais et en Français. Si vous voulez vous porter volontaire pour traduire ce guide dans d’autres langues, veuillez entrer en contact avec Dave Miller (mailto:[email protected]). 1.4. Remerciements Les personnes énumérées ci-dessous ont apporté d’énormes contributions à la création de ce guide, par leurs écrits, pour s’être donné pleinement, de nombreuses séances d’aide par E-mails ou IRC, et l’excellente contribution globale à la communauté de Bugzilla : Matthew P. Barnson <[email protected]> pour la tâche Herculéenne qui a consisté à rassembler le guide Bugzilla et le produire en version 2.14. Terry Weissman <[email protected]> pour avoir été le premier à écrire Bugzilla et créer le README sur lequel la documentation d’installation d’UNIX est basée en grande partie. Tara Hernandez <[email protected]> Pour avoir maintenu le développement de Bugzilla à un rythme soutenu après le départ de Terry et pour gérer un site d’enfouissement de déchets. Dave Lawrence <[email protected]> pour fournir l’aperçu des différences principales entre le Bugzilla personnalisé de Red Hat, et pour être en grande partie responsable de la partie Section D.1. Dawn Endico <[email protected]> pour être un extraordinaire mordu d’informatique et avoir supporté les incessantes questions et pinaillages de Matthew sur irc.mozilla.org dans la salle # mozwebtools Jacob Steenhagen <[email protected]> pour avoir pris la relève pendant la période de développement de la version 2.17 et pour avoir transposé les corrections de documentation à cette version 2.16 Enfin, tous les membres du newsgroup news://news.mozilla.org/netscape/public/mozilla/webtools. Sans vos discussions, perspicacité, suggestions, et correctifs, ceci n’aurait jamais pu exister. 2 Chapter 1. A propos de ce guide Les remerciements vont également aux personnes suivantes pour leurs contributions significatives à cette documentation (dans l’ordre alphabétique) : Andrew Pearson, Ben FrantzDale, Eric Hanson, Gervase Markham, Joe Robins, Kevin Brannen, Ron Teitelbaum, Spencer Smith, Zach Liption . 1.5. Conventions du Document Ce document utilise les conventions suivantes : Descriptions Représentation Soyez prudents Caution Ne courez pas avec des ciseaux! Conseil Notes Avertissements Tip: Voulez vous un bonbon à la menthe ? Note: Cher Jean... Warning Lisez ceci sinon le chat va le prendre. Nom de fichier nom du fichier Noms des répertoires Répertoire Commandes à taper commande Noms d’Applications application Invite de commande utilisateurs sous l’interpréteur de bash$ commandes bash Invite de commande super utilisateur sous l’interpréteur bash# de commandes bash Invite de commande utilisateurs sous l’interpréteur de tcsh$ commandes tcsh Variables d’environnement VARIABLE Mot souligné mot Terme trouvé dans le glossaire Bugzilla Exemple de code <para> Début et fin de paragraphe </para> 3 Chapter 2. Introduction 2.1. Qu’est-ce que Bugzilla ? Bugzilla est un système de suivi de bogues ou d’anomalies. Les systèmes de suivi de bogues permettent à des développeurs individuels ou en groupes de garder la trace des problèmes marquants qu’ils rencontrent avec leurs produits. Bugzilla a été au départ écrit par Terry Weissman dans un langage de programmation appelé TCL, pour remplacer une base de données de dépistage de bogues rudimentaire à usage interne chez Netscape Communications. Terry a ensuite fait migrer Bugzilla de TCL en Perl, et il est toujours en Perl à ce jour. La plupart des vendeurs de logiciels standards de suivi ont alors facturé d’énormes honoraires de Licence, et Bugzilla est rapidement devenu un favori chez les tenants des logiciels libres Open-source (avec sa genèse dans le projet de navigateur open-source, Mozilla). C’est maintenant de-facto le système de suivi de bogues standard par rapport auquel tous les autres se mesurent. Bugzilla présente beaucoup de caractéristiques avancées. Celles-ci incluent : • Un outil de recherche puissant • La notification par E-mail configurable par l’utilisateur des corrections des bogues • Un historique complet des modifications • Des graphiques et suivis de dépendance entre les bogues • Une excellente gestion des fichiers joints • Un schéma intégré de sécurité, granulaire, basé sur le produit • Un système entièrement sécurisé, et qui tourne sous le mode de déboguage de Perl • Un RDBMS robuste et stable • Des interfaces Web, XML, d’email et de console • Une interface utilisateur complètement paramétrable et/ou localisable • Possibilité de configuration étendue • Moyen de mise à niveau homogène entre les versions 2.2. Pourquoi utiliser Bugzilla ? Pendant de nombreuses d’années, le logiciel de suivi de défauts est resté principalement le domaine de grandes maisons de développement de logiciel. Même à cette époque, la plupart des revendeurs ne se préoccupaient jamais des logiciels de suivi de bogues, et par contre elles comptaient simplement sur les listes de diffusion et l’email pour suivre l’état des défauts. Ce procédé est sujet à des erreurs et par conséquent, le risque est que les bogues jugés moins importants par les développeurs soient laissés de côté ou ignorés. De nos jours, beaucoup de sociétés trouvent que les systèmes de suivi de bogues intégrés réduisent le temps d’immobilisation, augmentent la productivité et la satisfaction du client par rapport à leurs produits. En même temps qu’une information complète, un système ouvert de suivi de bogues permet à des constructeurs de rester en contact avec leurs clients et revendeurs, de communiquer efficacement sur les problèmes d’un bout à l’autre de la 4 Chapter 2. Introduction chaîne de gestion des données. De nombreuses sociétés ont également découvert que les aides au dépistage des défauts réduisait les coûts en fournissant un service de support technique qui engage sa responsabilité, des bases de connaissance de support par téléphone, et un système universel et facile à comprendre pour rendre compte de problèmes peu courants dans les systèmes et logiciels. Mais, vous, pourquoi devriez-vous utiliser Bugzilla ? Bugzilla s’adapte très bien à diverses situations. Les utilisations connues incluent actuellement les files d’attente pour l’aide technique, la gestion du déploiement de systèmes d’administration, le suivi des problèmes de développement et de conception de microprocesseurs (aussi bien avant qu’après la fabrication), et le suivi de bogues logiciels et matériels pour des sommités tels que Redhat, la NASA, Linux-Mandrake, et VA Systems. Combiné avec des systèmes tels que CVS (http://www.cvshome.org), Bonsai (http://www.mozilla.org/bonsai.html), ou Perforce SCM (http://www.perforce.com), Bugzilla fournit une solution puissante et facile à utiliser aux problèmes de reproduction des bogues et de gestion des configurations. Bugzilla peut considérablement augmenter la productivité et la responsabilité de chaque employé, en fournissant un déroulement des opérations documentées et un retour positif en cas de bonne prestation. Est ce que vous ne vous réveillez pas souvent le matin en vous rappelant que vous êtes censés faire quelque chose dans la journée, mais vous ne vous rappelez pas quoi exactement ? Mettez le dans Bugzilla, et vous en avez un enregistrement à partir duquel vous pouvez extrapoler des étapes importantes, prédire des versions du produit pour l’intégration, et suivre l’enchaînement de la discussion qui a menée aux décisions critiques. En fin de compte, Bugzilla met entre vos mains la possibilité d’améliorer votre valeur par rapport à votre employeur ou votre activité tout en fournissant un cadre dédié à votre soucis naturel du détail et fournissant un stock de connaissances que vous pouvez mettre en valeur. 5 Chapter 3. Utilisation de Bugzilla 3.1. Comment utiliser Bugzilla ? Cette section contient des informations pour les utilisateurs de Bugzilla. Il y a une installation d’essai de Bugzilla, appelée Landfill (http://landfill.bugzilla.org/), avec laquel vous êtes invités à jouer (si elle est en disponible). Cependant, toutes les fonctionnalités de Bugzilla n’y sont pas nécessairement accessibles, souvent des versions de pointe de Bugzilla sont exécutées pour les tester, par conséquent le fonctionnement peut parfois être légèrement différent de ce qui est mentionné ici. 3.1.1. Créez un compte Bugzilla Si vous voulez utiliser Bugzilla, vous devez d’abord créer un compte. Renseignez vous auprès de l’administrateur responsable de votre installation de Bugzilla sur l’URL que vous devez utiliser pour y accéder. Si vous utilisez la version de test de Bugzilla, utilisez cette URL : http://landfill.bugzilla.org/bugzilla-tip/ (http://landfill.bugzilla.org/bugzillatip/) 1. Cliquez sur le lien “Open a new Bugzilla account”, entrez votre adresse email et éventuellement votre nom dans les espaces prévus à cet effet, puis cliquez sur “Create Account” (Créer un compte). 2. Après quelques instants, vous devriez recevoir un email à l’adresse que vous avez fournie précédemment, qui contient votre login de connexion (généralement le même que l’adresse email), et un mot de passe que vous pouvez utiliser pour accéder à votre compte. Ce mot de passe est généré aléatoirement, et peut être remplacé par un autre plus facile à mémoriser. 3. Cliquez sur le lien “Log In”(s’authentifier) dans la zone jaune en bas de la page dans votre navigateur, entrez votre adresse email et votre mot de passe dans les espaces prévus, et cliquez sur "Login" (authentification). “Login”(authentification). Vous êtes maintenant connecté. Bugzilla utilise les cookies pour l’authentification. Donc, à moins que votre adresse IP ne change, vous n’aurez pas besoin de vous authentifier à nouveau. 3.1.2. Anatomie d’un bogue Le noyau de Bugzilla est l’écran qui affiche un bogue particulier. C’est l’endroit idéal pour expliquer quelques concepts de Bugzilla. L’anomalie n◦ 1 de Landfill (http://landfill.bugzilla.org/bugzilla-tip/show_bug.cgi?id=1) est un bon exemple. Notez que les étiquettes de la plupart des champs sont des hyperliens ; cliquer dessus affichera une aide contextuelle sur ce champ particulier. Les zones marquées d’un * peuvent ne pas être présentes sur chaque installation de Bugzilla. 1. Product and Component(Produit et composant): Les bogues sont divisés en produits et composants, un produit étant composé d’un ou plusieurs composants. Par exemple, le produit "Bugzilla" de bugzilla.mozilla.org est composé de plusieurs composants : Administration: Administration of a Bugzilla installation. Bugzilla-General: Tout ce qui ne va pas dans les autres composants, ou relatif à plusieurs composants. 6 Chapter 3. Utilisation de Bugzilla Creating/Changing Bugs: Créer, modifier, et visualiser les bogues. Documentation: Documentation de Bugzilla, y compris le guide Bugzilla. Email: Tout ce qui est en rapport avec un email envoyé par Bugzilla. Installation: Procédé d’installation de Bugzilla. Query/Buglist: Fonctions de recherche de bogues et visualisation de la liste des bogues. Reporting/Charting: Obtenir des comptes-rendus de Bugzilla. User Accounts: Administration du compte utilisateur selon le point de vue de l’utilisateur. Requêtes sauvegardées, création de com User Interface: Problèmes d’ordre généraux en relation avec l’interface utilisateur (pas fonctionnalité) comprenant les problèmes 2. Status and Resolution: Ceci définit avec précision quel est l’état du bogue - depuis l’état où il n’est même pas être confirmé comme bogue, jusqu’à celui où il a été corrigé et où la correction est confirmée par l’Assurance Qualité. Les différents statuts possibles pour la rubrique Status and Resolution concernant votre installation devraient être documentées dans l’aide contextuelle relative à ces éléments. 3. Assigned To: Personne étant chargée de corriger le bogue. 4. *URL: Une éventuelle URL associée au bogue. 5. Summary: Problème résumé en une phrase. 6. *Status Whiteboard: (aussi appelé Whiteboard) Zone de texte libre pour ajouter de courtes notes ou des étiquettes à un bogue. 7. *Keywords: L’administrateur peut définir des mots-clés que vous pouvez employer pour étiqueter et classer les bogues par catégorie - par exemple The Mozilla Project a des mots-clés comme plantage et régression. 8. Platform and OS: Ceci indiquent l’environnement de travail dans lequel le bogue a été détecté. 9. Version: La zone "version" est habituellement utilisée pour les versions d’un produit qui sont parus et sert à indiquer quelles versions d’un composant est touchée par le problème dont le compte rendu de bogue fait état. 10. Priority:Le responsable de bogues emploie ce champ pour fixer la priorité de ses bogues. Il faut éviter de le changer sur les bogues des autres. 11. Severity: Ceci indique la gravité du problème - depuis bloquant ("application unusable" : application inutilisable) à insignifiant ("minor cosmetic issue" : problème esthétique mineur). Vous pouvez également employer cette zone pour indiquer si un bogue est une demande d’amélioration. 12. *Target:(aussi intitulé Target Milestone) Version future, dans laquelle le bogue devra être corrigé. Par exemple, les jalons du projet de Bugzilla pour de futures versions de Bugzilla sont 2.18, 2.20, 3.0, etc... Les jalons ne sont pas limitées aux nombres, par conséquent vous pouvez utiliser n’importes quelles chaînes de caractères textuelles, telles que des dates. 13. Reporter: Personne qui a classé l’anomalie. 14. CC list: Liste de personnes à prévenir par email quand le bogue change. 15. Attachments: Vous pouvez joindre des fichiers (par exemple des cas qui constituent des précédents ou des correctifs) aux bogues. S’il y a des pièces jointes, elles sont listées dans cette section. 16. *Dependencies: Si ce bogue ne peut pas être corrigé à moins que d’autres bogues soient eux-mêmes corrigés (dépend de), ou si ce bogue annule la correction d’autres bogues déjà corrigés (bloque), leurs numéros sont enregistrés ici. 17. *Votes: Si ce bogue a reçu des votes. 18. Additional Comments: Vous pouvez ajouter votre grain de sel à la discussion sur le bogue ici, si vous avez quelque chose d’intéressant à dire. 7 Chapter 3. Utilisation de Bugzilla 3.1.3. Recherche de bogues La page de recherche de Bugzilla est l’interface où vous pouvez trouver n’importe quel compte-rendu de bogue, commentaire, ou correctif actuellement dans le système Bugzilla. Vous pouvez jouer avec en allant ici: landfill.bugzilla.org/bugzilla-tip/query.cgi (http://landfill.bugzilla.org/bugzilla-tip/query.cgi). La page de recherche propose des commandes pour choisir différentes valeurs possibles pour tous les champs d’un bogue, comme décrit ci-dessus. Une fois que vous avez défini une recherche, vous pouvez ou l’exécuter, ou l’enregistrer en tant que requête mémorisée[«Remembered Query»], qui peut éventuellement apparaître dans vos pieds de page. Les requêtes hautement avancées sont exécutées en utilisant des diagrammes booléens, qui ont leur propre aide contextuelle (http://landfill.bugzilla.org/bugzilla-tip/booleanchart.html) . 3.1.4. Listes de Bogues Si vous lancez une recherche, une liste de bogues correspondants vous sera retournée. La recherche par défaut doit renvoyer toute les anomalies répertoriées sur le système - n’essayez pas d’exécuter cette recherche sur une installation de Bugzilla qui a beaucoup de bogues ! Le format de la liste est configurable. Par exemple, il peut être trié en cliquant sur les en-têtes de colonne. D’autres fonctionnalités utile sont accessibles en utilisant les liens en bas de la liste : Long Format: ceci vous donne une grande page avec un résumé qui ne peut pas être édité des champs de chaque bogue. Change Columns: Pour modifier les attributs des bogues qui apparaissent dans la liste. Change several bugs at once: Si votre compte possède l’habilitation suffisante, vous pouvez appliquer la même modification à tous les Send mail to bug owners: Envoie un email aux propriétaires de tous les bogues sur la liste. Edit this query: Si vous n’avez pas obtenu exactement les résultats que vous recherchiez, vous pouvez retourner à la page de requête v 3.1.5. Classement des bogues Des années d’expérience sur l’écriture de bogues ont été condensées pour votre plaisir dans les Bug Writing Guidelines (directives d’écriture des bogues) (http://landfill.bugzilla.org/bugzilla-tip/bugwritinghelp.html). Si certains de ces conseils sont spécifiques à Mozilla, les principes de base de signalement de bogues reproductibles spécifiques, d’identification du produit que vous utilisez, sa version, le composant dont provient l’erreur, la plateforme matérielle, et le système d’exploitation que vous utilisiez au moment du plantage, sont d’une aide précieuse pour vous assurer des corrections responsables et précises du bug qui vous a gêné. La procédure pour classer un bogue testé est la suivante : 1. Allez sur le site de Landfill (http://landfill.bugzilla.org/bugzilla-tip/) dans votre navigateur et cliquez sur Enter a new bug report (http://landfill.bugzilla.org/bugzilla-tip/enter_bug.cgi)(écrire un nouveau rapport de bogue). 2. Choisissez un produit - n’importe lequel fera l’affaire. 3. Complétez les champs. Bugzilla devrait avoir assez bien deviné en se basant sur votre navigateur, les bonnes listes déroulantes "Platform" (plateforme) et "OS" (Système d’exploitation). Si elles sont erronées, changez-les. 4. Choisissez "Commit" (Valider) et envoyez votre rapport de bogue. 8 Chapter 3. Utilisation de Bugzilla 3.2. Trucs et astuces Cette section détaille quelques-unes des astuces et pratiques d’usage de Bugzilla qui ont été développées. 3.2.1. Création automatique de liens (Autolinkification) Les commentaires de Bugzilla sont sous forme de texte ordinaire - donc, le fait d’introduire du code HTML aura pour conséquence l’affichage des balises HTML ; en effet, elles ne sont pas interprétées par un navigateur. Cependant, Bugzilla fera automatiquement la transformation de certains types de textes en liens dans les commentaires. Par exemple, le texte http://www.bugzilla.org sera transformé en http://www.bugzilla.org. Les autres chaînes de caractères qui sont transformées en liens de façon évidente sont les suivants : bogue 12345 bogue 23456, commentaire 53 pièce jointe 4321 mailto:[email protected] [email protected] ftp://ftp.mozilla.org La plupart d’autres sortes d’URL Un corollaire à ceci est que si vous tapez un numéro de bogue dans un commentaire, vous devez mettre le mot "bug" devant, de façon à ce que le lien soit fait de façon automatique pour que ce soit pratique pour tous. 3.2.2. Quicksearch Quicksearch est un outil de requête muni d’un champ de recherche unique qui emploie des métacaractères pour indiquer ce qui doit être recherché. Par exemple, si vous tapez "foo|bar" dans Quicksearch, Quicksearch cherchera le mot "foo" ou bien le mot "bar" dans le résumé et le Status WhiteBoard (tableau blanc de statut) d’un bogue ; ajouter ":BazProduct" effectuera la requête seulement dans ce produit. Vous trouverez le cadre de recherche Quicksearch sur la page d’accueil de Bugzilla, avec un lien d’aide (../../quicksearch.html) qui détaille comment l’utiliser. 3.2.3. Commentaires Si vous modifiez les champs d’un bogue, n’ajoutez un commentaire que si vous avez quelque chose de pertinent à dire, ou si Bugzilla l’exige. Autrement, votre modification pourrait entraîner l’envoi de mails inutiles à certaines personnes. Pour prendre un exemple : un utilisateur peut configurer son compte de façon à filtrer les messages par lesquels quelqu’un s’ajoute simplement à la zone de cc d’un bogue (ce qui se produit souvent). Si vous vous ajoutez dans la zone « cc », et ajoutez un commentaire disant Adding self to CC "je m’ajoute dans la rubrique CC", la personne obtiendra un E-mail sans intérêt qu’elle aurait autrement évité. N’utilisez pas les signatures dans les commentaires. Signer avec votre nom ("Bill") est acceptable, en particulier si vous avez l’habitude de le faire, mais des créations artistiques surchargées en ASCII de plusieurs lignes ne le sont pas. 9 Chapter 3. Utilisation de Bugzilla 3.2.4. Pièces jointes Utilisez les pièces jointes, plutôt que les commentaires, pour de grandes quantités de données ASCII, tels que les fichiers de traçage, ou les fichiers de log de déboggage. C’est pour éviter d’infliger des bogues surchargés à ceux qui veulent les lire, et pour qu’ils ne reçoivent pas des courriers inutiles et de taille importante. Allégez les copies d’écrans. Il n’est pas nécessaire de montrer l’écran entier pour signaler un problème qui peut être illustré avec seulement quelques pixels. Ne joignez pas des cas qui constituent des précédents (par exemple un fichier HTML, un fichier CSS et une image) comme fichier ZIP. Au lieu de cela, envoyez-les dans l’ordre inverse et éditez le fichier référent de sorte qu’ils pointe vers les fichiers joints. De cette façon, le cas qui constitue un précédent fonctionne immédiatement hors du bogue. 3.2.5. Classement des bogues Essayez de vous assurer que tout ce qui est dit dans le résumé est également dit dans le premier commentaire. Les résumés sont souvent mis à jour et ceci ganrantira que votre information initiale soit facilement accessible. Vous n’avez pas besoin de mettre "any" (n’importe lequel) ou des chaînes de caractères de ce type dans le domaine de l’URL. S’il n’y a aucune URL spécifique au bogue, laissez cette zone vide. Si vous avez l’impression qu’un bogue que vous avez classé a été marqué par erreur comme DUPLICATE (bogue dupliqué), veuillez poser la question dans votre bogue, et non pas dans l’autre bogue dans lequel il a atterri. N’hésitez pas à mettre la personne qui a dupliqué le bogue dans la liste des contacts CC si ce n’est pas déjà le cas. 3.3. Préferences Utilisateurs Une fois que vous avez ouvert une session, vous pouvez personnaliser divers aspects de Bugzilla par l’intermédiaire du lien "Edit prefs" (Editez vos préférences) en pied de page. Les préférences sont divisées en quatre onglets : 3.3.1. Account Settings (Configuration du compte) Dans cette partie, vous pouvez changer les informations de base sur votre compte, y compris votre mot de passe, adresse email et votre vrai nom. Pour des raisons de sécurité, avant de changer quoi que ce soit sur cette page, vous devez taper votre mot de passe actuel dans la zone “Password” située en haut de la page. Si vous essayez de changer votre adresse email, un email de confirmation sera envoyé aussi bien à votre ancienne qu’à votre nouvelle adresse, avec un lien à utiliser pour confirmer le changement. Ceci a pour but d’essayer d’empêcher le détournement de compte. 3.3.2. Email Settings (Configuration des Emails) Dans cette partie vous pouvez réduire ou augmenter la quantité d’emails qui vous est envoyée par Bugzilla, vous pouvez choisir en fonction de chaque bogue et des changements qui lui ont été apportés. (Notez que vous pouvez également utiliser le filtrage côté client en utilisant l’en-tête de X-Bugzilla-Reason que Bugzilla ajoute à tout mail concernant un bogue.) 10 Chapter 3. Utilisation de Bugzilla En écrivant les emails des utilisateurs, séparés par des virgules, dans la boîte de dialogue "Users to watch" (utilisateurs à observer), vous pouvez recevoir une copie de tout mail concernant un bogue d’un autre utilisateur (si les configurations de sécurité le permettent). Cette fonctionnalité puissante permet des transitions en douceur lorsque que les développeurs changent de projets ou lorsque les utilisateurs partent en vacances. Note: La capacité d’observer d’autres utilisateurs peut ne pas être disponible dans toutes les installations de Bugzilla. Si vous ne pouvez pas accéder à cette fonction, contactez votre administrateur. 3.3.3. Pied de page Sur la page de recherche, vous pouvez stocker des requêtes dans Bugzilla, donc si vous exécutez régulièrement une requête particulière vous pourrez y accéder rapidement depuis un menu déroulant. Une fois que vous avez stocké une requête, c’est ici que vous pouvez demander qu’elle soit également affichée en pied de page. 3.3.4. Permissions C’est une page purement informative qui décrit vos permissions en cours sur cette installation de Bugzilla - à quels groupes de produit vous appartenez, et si vous pouvez éditer les bogues ou assurer diverses fonctions d’administration. 11 Chapter 4. Installation 4.1. Installation étape par étape 4.1.1. Introduction Bugzilla a déjà été installé avec succès sous Solaris, Linux et Win32. Win32 n’est pas encore officiellement supporté, mais beaucoup d’utilisateurs ont réussi à le faire fonctionner correctement sous cet environnement. Veuillez lire Notes d’installation sur Win32 pour une aide plus poussée sur le fonctionnement de Bugzilla sous Microsoft Windows. 4.1.2. Liste des logiciels Note: Si vous utilisez la version la plus récente de Perl et MySQL sur votre système (les exécutables ainsi que les bibliothèques de développement), vous pouvez sauter ces étapes suivantes qui décrivent l’installation manuelle des modules Perl en utilisant Bundle::Bugzilla. Pour celà, veuillez lire Utiliser Bundle::Bugzilla au lieu d’installer manuellement les modules Perl. Les logiciels nécessaires au bon fonctionnement de Bugzilla sont les suivants (avec l’URL pour les télécharger) : 1. Le serveur de base de données MySQL (http://www.mysql.com/) (3.22.5 ou plus) 2. Perl (http://www.perl.org) (5.005 ou plus; 5.6.1 est recommandé si vous souhaitez utiliser Bundle::Bugzilla) 3. Les modules Perl (version minimale) : a. Template (http://www.template-toolkit.org) (v2.07) b. AppConfig (http://www.cpan.org/modules/by-module/AppConfig/) (v1.52) c. Text::Wrap (v2001.0131) (http://www.cpan.org/authors/id/MUIR/modules/Text-Tabs%2BWrap-2001.0131.tar.gz) d. File::Spec (http://search.cpan.org/search?dist=File-Spec) (v0.8.2) e. Data::Dumper (http://www.cpan.org/modules/by-module/Data/) (toutes les versions) f. DBD::mysql (http://www.cpan.org/modules/by-module/Mysql/) (v1.2209) g. DBI (http://www.cpan.org/modules/by-module/DBI/) (v1.13) h. Date::Parse (http://www.cpan.org/modules/by-module/Date/) (toutes les versions) i. CGI::Carp (toutes les versions) Les logiciels suivants sont facultatifs : a. GD (http://www.cpan.org/modules/by-module/GD/) (v1.19) pour les graphiques des bogues b. Chart::Base (http://www.cpan.org/modules/by-module/Chart/) (v0.99c) pour les graphiques des bogues 12 Chapter 4. Installation c. XML::Parser (toutes les versions) pour l’interface XML d. MIME::Parser (toutes les versions) pour l’interface par email 4. Le serveur Web de votre choix. Apache (http://www.apache.org/) est hautement recommandé. Warning Lors de l’installation de Bugzilla, il est conseillé de s’assurer qu’il existe un pare-feu entre vous et le reste d’Internet, parce qu’à certains moments pendant l’installation votre machine peut se trouver avec une sécurité amoindrie. En effet, une bonne partie des étapes de l’installation nécessite une connexion active à Internet, et vous devez prendre soin de vérifier qu’à aucun moment votre machine n’est vulnérable à aucune attaque Note: Linux-Mandrake 8.0 comprend toutes les librairies obligatoires et facultatives pour Bugzilla. La manière la plus simple de les installer consiste à utiliser l’utilitaire urpmi. Si vous suivez ces commandes, vous devriez avoir tout ce qu’il vous faut pour Bugzilla, et checksetup.pl ne devrait pas se plaindre de bibliothèques manquantes. Il se peut que vous ayez certaines de ces librairies déjà installées. bash# bash# bash# bash# bash# urpmi perl-mysql urpmi perl-chart urpmi perl-gd urpmi perl-MailTools (pour les fonctionalités email de Bugzilla) urpmi apache-modules 4.1.3. MySQL Visitez le site de MySQL à www.mysql.com (http://www.mysql.com) pour récupérer et installer la dernière version stable du serveur. Note: De nombreuses versions binaires de MySQL stockent leurs fichiers de données dans le répertoire /var. Sur certains systèmes UNIX, ce répertoire se trouve dans la partition principale (root). Si celle-ci est trop petite, il peut ne pas y avoir assez de place pour contenir la base de données des bogues. Vous pouvez spécifier le répertoire des données comme option à configure si vous compilez MySQL vous-même à partir des sources. Si vous ne faites pas l’installation à partir d’un paquet RPM ou Debian, vous devrez ajouter mysqld à vos scripts de démarrage pour que le démon du serveur se relance à chaque fois que votre machine redémarre. On ne traitera pas plus des séquences de démarrage d’UNIX car elles dépassent le cadre de ce guide. Modifiez vos scripts de démarrage pour que mysqld se lance avec l’option qui lui permet d’accepter les grands paquets. En effet, par défaut, mysqld n’accepte pas les paquets supérieurs à 64K. Ceci limite la taille des pièces jointes que vous pouvez ajouter aux bogues. Si vous précisez l’option -O max_allowed_packet=1M à la commande qui démarre mysqld (ou safe_mysqld), alors vous pourrez disposer de pièces jointes d’à peu près 1 mégaoctet. La configuration de Bugzilla comprend un paramètre pour la taille maximum des pièces jointes; il faut lui fixer la même valeur que celle vous avez choisi pour mysqld. 13 Chapter 4. Installation Si vous prévoyez d’exécuter Bugzilla et MySQL sur la même machine, vous pouvez utiliser l’option --skip-networking dans le script d’initialisation. Ceci améliore la sécurité en empêchant un accès au réseau à MySQL. 4.1.4. Perl Toute machine qui ne possède pas Perl est une machine bien malheureuse. Pour les rares systèmes *nix qui n’ont pas Perl, celui-ci est disponible sous forme de sources depuis perl.com (http://www.perl.com). Bien que Bugzilla fonctionne avec toutes les versions de Perl postérieures à 5.005, ils est conseillé, si vous pouvez, d’installer la toute dernière version pour Bugzilla. Au moment où ces lignes sont écrites, Perl en est à la version 5.6.1. Tip: Vous pouvez sauter les étapes suivantes d’installation des modules Perl en chargeant Bundle::Bugzilla depuis CPAN, qui installe pour vous tous les modules requis. bash# perl -MCPAN -e ’install "Bundle::Bugzilla"’ Bundle::Bugzilla ne comprend pas GD, Chart::Base et MIME::Parser, qui ne sont pas indispensables à une installation minimale de Bugzilla. Si l’installation du paquet Bundle::Bugzilla échoue, vous devrez installer alors chaque module séparément pour identifier le problème. 4.1.5. Modules Perl Tous les modules Perl sont disponibles sur le Réseau Complet des Archives Perl (http://www.cpan.org) (CPAN Comprehensive Perl Archive Network). Les serveurs de CPAN ayant tendance à être saturés, veuillez utiliser les miroirs. Le site Web du CPAN contient des documentations générales et de qualité sur l’installation de modules Perl, mais la manière la plus facile de le faire est d’utiliser l’interpréteur de commande du CPAN qui fait tout le travail pour vous. Pour utiliser l’interpréteur du CPAN pour installer un modules : bash# perl -MCPAN -e ’install "<modulename>"’ Si vous choisissez la difficulté : Décompressez l’archive du module - il devrait créer son propre répertoire. Placez-vous dans le répertoire nouvellement créé et saisissez les commandes suivantes : 1. bash# perl Makefile.PL 2. bash# make 3. bash# make test 4. bash# make install 14 Chapter 4. Installation Warning Beaucoup d’utilisateurs se plaignent que les modules Perl ne s’installent pas chez eux. La plupart du temps, les messages d’erreur se plaignent de ne pas trouver un fichier dans “@INC”. Presque à chaque fois, cette erreur se déclare soit parce que vous n’avez les permissions suffisantes pour compiler les modules Perl, soit parce que les librairies de développement de Perl nécessaires ne sont pas installées sur votre système. Demandez à votre administrateur UNIX de vous accorder les droits d’accès suffisants. Si c’est vous l’administrateur UNIX, veuillez consulter le forum ou la liste de diffusion pour une aide plus poussée, ou engager quelqu’un pour vous aider. 4.1.5.1. DBI Le module DBI est un module Perl générique utilisé par les modules liés à MySQL. Si votre installation de Perl s’est correctement effectuée, celle du module DBI devrait être facile. C’est un module hybride Perl/C, mais le système Perl’s MakeMaker simplifie grandement la compilation en langage C. 4.1.5.2. Data::Dumper Le module Data::Dumper fournit la persistance des structures de données (à la manière des sérialisation en Java). Ce module fait partie de la dernière sous-version (sub-release) de Perl 5.004, mais une réinstallation pour être sûr qu’il est disponible ne fera pas de mal. 4.1.5.3. Les modules liés à MySQL L’interface Perl/MySQL demande quelques modules Perl mutuellement dépendants. Ces modules sont regroupés dans le paquet "Msql-Mysql-modules". Le processus MakeMaker vous posera quelques questions à propos de la cible que vous souhaitez pour la compilation et votre installation MySQL. Pour la plupart des questions, la réponse par défaut sera suffisante, mais quand le processus vous demandera si la cible souhaitée est le paquet MySQL ou mSQL, vous devrez choisir celle liée à MySQL. Plus tard, le programme vous demandera si vous voulez conserver une compatibilité inverse avec les paquets MySQL plus anciens. Vous devez répondre OUI alors que la réponse par défaut est NON. Une machine hôte ’localhost’ sera suffisante. De même, un utilisateur de tests ’test’ avec un mot de passe nul devrait se trouver avec les droits d’accès suffisants pour faire des essais sur la base de données de tests ’test’ que MySQL génère à l’installation. 4.1.5.4. Modules TimeDate Une bonne partie des modules Perl en rapport avec la date/le temps/le calendrier ont été groupés dans un paquet similaire au paquet de module MySQL. Ce paquet est enregistré sur CPAN sous le nom TimeDate. Le composant qui nous intéresse le plus est le module Date::Format, mais installer tous les composants du module est probablement une bonne idée de toutes façons. 15 Chapter 4. Installation 4.1.5.5. GD (facultatif) La bibliothèque GD a été écrite par Thomas Boutell il y a longtemps pour générer par programmation des images en C. Depuis lors cette librairie est devenue le standard de facto pour la construction d’images par programmation. Les fonctions Perl associées, que l’on trouve dans la librairie GD, sont utilisées par des millions de pages Web pour générer des graphiques à la volée. C’est la raison pour laquelle Bugzilla va s’en servir, donc vous devez l’installer si vous voulez que n’importe quelle fonctionnalité graphique fonctionne. Note: La bibliothèque Perl GD nécessite d’autres bibliothèques qui peuvent ou non être installées sur votre système, telles que libpng et libgd. La liste complète des bibliothèques nécessaires se trouvent dans le fichier README de la bibliothèque Perl GD. Si la compilation de GD échoue, c’est probablement parce qu’il manque une des bibliothèques demandées. 4.1.5.6. Chart::Base (facultatif) Le module Chart permet à Bugzilla de générer des diagrammes à la volée. On peut l’installer de la manière habituelle après l’avoir récupéré sur CPAN. Notez que les versions plus anciennes que 0.99c utilisaient les GIF, mais ils ne sont plus supportés par les dernières versions de GD. 4.1.5.7. Template Toolkit Lors de l’installation de Template Toolkit, une série de questions vous seront posées à propos des fonctionnalités à activer. Les options par défaut sont bien, à part celle qui vous recommande d’utiliser le stash très rapide "XS Stash" du Template Toolkit, pour disposer de meilleures performances. Cependant, il existe des problèmes bien connus avec XS Stash et Perl version 5.005_02 et antérieures. Si vous désirez utiliser ces anciennes versions de Perl, veuillez utiliser le stash classique. 4.1.6. Serveur HTTP Vous avez dans ce domaine une grande liberté de choix : Apache, Netscape ou n’importe quel serveur sous UNIX devrait faire l’affaire. Vous pouvez exécuter le serveur Web sur une autre machine que MySQL, mais vous devrez alors régler les permissions de l’utilisateur "bugs" en conséquence. Note: Nous vous recommandons fortement d’utiliser Apache comme serveur Web. Les instructions d’installation du Guide Bugzilla considèrent en général que vous utilisez Apache. Si vous avez réussi à faire tourner Bugzilla sur un autre serveur, veuillez nous faire part de vos expériences. Il faut vérifier que votre serveur Web exécute tous les fichiers avec l’extension .cgi en tant que CGI et ne se contente pas de les afficher. Si vous utilisez Apache, cela signifie qu’il faut décommenter la ligne suivante dans le fichier httpd.conf : AddHandler cgi-script .cgi 16 Chapter 4. Installation Avec Apache, il faut aussi vérifier que dans le fichier httpd.conf se trouve les lignes suivantes : Options ExecCGI AllowOverride Limit dans la section qui traite des répertoires dans lesquels vous comptez mettre les fichiers .html et .cgi de Bugzilla. Note: AllowOverride Limit permet d’utiliser une instruction Deny (NdT : de refus) dans le fichier .htaccess généré par checksetup.pl Les utilisateurs des versions plus anciennes d’Apache peuvent trouver les lignes ci-dessus respectivement dans les fichiers srm.conf et access.conf Warning Il y a des fichiers et des répertoires importants qui ne doivent pas être affichés par le serveur HTTP - la plupart des fichiers dans les répertoires “data” et “shadow” et le fichier “localconfig”. Vous devez configurer votre serveur HTTP pour qu’il ne les affiche pas. Si vous ne le faites pas des mots de passe et d’autres données importantes seront visibles. Vous trouverez les informations sur la manière de procéder pour Apache dans la section Fichiers .htaccess et sécurité; le script checksetup.pl devrait vous sortir les fichiers .htaccess appropriés. 4.1.7. Bugzilla Décompressez les fichiers de Bugzilla dans un répertoire que vous voulez bien laisser avec les droits d’écriture pour l’utilisateur sous lequel s’exécute par défaut le serveur Web (probablement “nobody”). Vous pouvez décider de mettre ces fichiers dans l’espace principal des pages Web du serveur Web ou peut-être dans /usr/local avec un lien symbolique dans l’espace des pages Web pointant sur le répertoire de Bugzilla. Tip: Si vous faites un lien symbolique du répertoire de Bugzilla vers la hiérarchie de fichiers HTML de votre Apache, vos pourriez rencontrer l’erreur Forbidden. Pour l’éviter, ajoutez la directive “FollowSymLinks” dans httpd.conf, à la section <Directory> du répertoire racine des fichiers HTML. Une fois que tous les fichiers se trouvent dans le répertoire accessible par le Web, donnez lui les droits d’écriture pour l’utilisateur du serveur Web. Il s’agit d’une étape temporaire en attendant d’exécuter le script de post-installation checksetup.pl, qui verrouillera votre installation. Après, faites un lien symbolique vers /usr/bonsaitools/bin/perl de l’emplacement correct de votre exécutable Perl (probablement /usr/bin/perl). Sinon, vous devez bidouiller tous les fichiers .cgi pour modifier le chemin par lequel ils accèdent à Perl. On peut le faire en utilisant la commande Perl suivante en une ligne, mais je vous conseille d’utiliser la méthode avec les liens symboliques pour éviter les mauvaises surprises pendant les mises à jour. 17 Chapter 4. Installation perl -pi -e ’s@#\!/usr/bonsaitools/bin/perl@#\!/usr/bin/perl@’ *cgi *pl Bug.pm processmail syncshadowdb Remplacer /usr/bin/perl pour qu’il corresponde à l’emplacement de Perl sur votre machine. 4.1.8. Configurer la Base de Données MySQL Après que tous les logiciels requis soient installés et fonctionnent, vous pouvez alors commencer à configurer la base de données qui va maintenat être l’épine dorsale d’un seveur de suivi de bogues de haute qualité. Tout d’abord, il va falloir corriger les permissions de MySQL pour permettre l’accès depuis Bugzilla. Dans de cette section Installation, nous conviendrons que l’utilisateur de Bugzilla sera “bugs”, et aura les permissions minimums. Commencez par donner à l’utilisateur root de MySQL son mot de passe. Les mots de passe MySQL sont limités à 16 caractères. bash# mysql -u root mysql mysql> UPDATE user SET Password=PASSWORD(’<new_password>’) WHERE user=’root’; mysql> FLUSH PRIVILEGES; A partir de ce point, si vous avez besoin d’accéder à MySQL sous l’utilisateur root de MySQL, vous devrez utiliser mysql -u root -p et saisir <new_password>. N’oubliez pas que les noms d’utilisateur MySQL n’ont rien à voir avec les noms d’utilisateur UNIX (les noms de login). Ensuite, nous utilisons la commande SQL GRANT pour créer un utilisateur “bugs”, et lui accorder les permissions suffisantes pour que checksetup.pl, que nous utiliserons tout-à-l’heure, opère sa magie. Cela restreint également les opérations de l’utilisateur “bugs” à celles agissant sur la base de données “bugs”, et n’autorise le compte à se connecter que depuis “localhost”. Modifiez cela en fonction de votre configuration si vous devez vous connecter plus tard depuis une autre machine ou sous un autre utilisateur. N’oubliez pas de remplacer <bugs_password> par un mot de passe unique. mysql> GRANT SELECT,INSERT,UPDATE,DELETE,INDEX, ALTER,CREATE,DROP,REFERENCES ON bugs.* TO bugs@loca mysql> FLUSH PRIVILEGES; Note: Si vous utilisez MySQL 4, l’utilisateur bugs doit aussi se voir accorder les permissions sur les tables suivantes : LOCK TABLES et CREATE TEMPORARY TABLES. 4.1.9. checksetup.pl Ensuite, exécutez le script magique checksetup.pl (un grand merci à Holger Schurig (mailto:[email protected]) pour avoir écrit ce script!). Ce script a été conçu pour s’assurer que votre base de données MySQL, les options de configuration et les fichiers CGI de Bugzilla sont cohérents. Ce script vérifiera que les fichiers et les répertoires de Bugzilla ont des permissions raisonnables, installera le répertoire data, et créera toutes les tables MySQL. bash# ./checksetup.pl 18 Chapter 4. Installation La première fois que vous le démarrerez, il créera un fichier appelé localconfig. Ce fichier contient une grande variété de paramètres que vous pouvez avoir besoin de modifier, notamment comment Bugzilla se connecte à la base de données MySQL. Les paramètres de connexion comprennent : 1. Machine du serveur: utilisez simplement “localhost” si le serveur MySQL est local 2. Nom de la base de données: “bugs” si vous suivez nos indications 3. Nom de l’utilisateur MySQL: “bugs” si vous suivez nos indications 4. Mot de passe pour le compte MySQL “bugs”; (<bugs_password>) plus haut Dès que vous êtes satisfait de ces paramètres, connectez-vous avec la commande su sous l’utilisateur sous lequel votre serveur Web tourne et redémarrez checksetup.pl. (Note: sur certains systèmes orientés sécurité, vous pouvez avoir besoin de changer le shell d’ouverture de session du compte du serveur Web avant de le faire.) Durant ce second appel au script, il va créer la base de données et un compte administrateur pour lequel il vous sera demandé de fournir quelques informations. Note: Le script checksetup.pl est conçu pour que vous puissiez l’exécuter à n’importe quel moment sans causer de problèmes. Vous devez l’exécuter après chaque mise à jour de Bugzilla. 4.1.10. Configurer Bugzilla Vous devez parcourir les options sur la page “Edit Parameters” (le lien est en bas de page) et leur donner la valeur appropriée. Les options importantes sont documentéesécrites dans Section 5.1. 4.2. Configuration supplémentaire facultative 4.2.1. Diagrammes de dépendance Tout comme les diagrammes de dépendance en mode texte, Bugzilla supporte également les graphes de dépendance, en utilisant un logiciel appelé ’dot’. L’option ’webdotbase’ en commande le fonctionnement exact. Elle peut prendre trois valeurs. Son fonctionnement exact est contrôlé par l’option ’webdotbase’, qui peut prendre trois valeurs : 1. Le chemin d’accès complet à la commande ’dot’ (qui fait partie de GraphViz (http://www.graphviz.org/)) qui va générer les graphiques localement. 2. Un préfixe URL pointant vers une installation du logiciel webdot qui va générer les graphiques à distance. 3. Une valeur nulle qui désactive les graphiques de dépendance. 19 Chapter 4. Installation Donc, pour le faire marcher, installez GraphViz (http://www.graphviz.org/). Dans ce cas, vous devez activer les cartes d’image côté serveur (http://httpd.apache.org/docs/mod/mod_imap.html) dans Apache. Autrement, vous pouvez installer un serveur webdot, ou utiliser le serveur public webdot AT&T (le choix par défaut pour l’option webdotbase). Notez que le serveur de AT&T ne marchera pas si Bugzilla n’est accessible que par HTTPS. 4.2.2. Les graphiques de Bogues Puisque vous avez installé les modules Perl GD et Graph::Base, vous pouvez tant que vous y êtes activer les formidables graphiques de rapport de bogues de Bugzilla. Ajoutez une entrée cron telle que celle-ci pour exécuter collectstats.pl tous les jours à minuit 5 : bash# crontab -e 5 0 * * * cd <your-bugzilla-directory> ; ./collectstats.pl Deux jours après vous pourrez visualiser les graphiques de bogues depuis la page de rapport de bogue. 4.2.3. Le cron plaintif Maintenant vous avez un bugzilla complètement fonctionnel. Mais les meilleurs bogues ne sont-ils pas aussi les plus énervants ? Pour vous aider à rendre ces bogues encore plus agaçants, vous pouvez activer le système automatique de plainte de Bugzilla pour se plaindre auprès des ingénieurs qui laissent leur bogues dans un état NEW sans faire de triage. Pour ce faire, ajoutez la commande suivante en tant qu’entrée crontab quotidienne (lire la page du manuel de crontab si vous voulez de l’aide sur le sujet) : cd <your-bugzilla-directory> ; ./whineatnews.pl Tip: Selon votre système, crontab peut avoir plusieurs pages de manuel. La commande suivante devrait vous mener à la page de manuel la plus pertinente sur le sujet : man 5 crontab 4.2.4. Authentification LDAP Warning Les informations suivantes qui décrivent l’utilisation de l’option d’authentification LDAP de Bugzilla sont anciennes, et les auteurs ne connaissent personne qui les ait testées. A utiliser avec précaution. 20 Chapter 4. Installation Le système d’authentification traditionnel de Bugzilla utilise les adresses email comme ID utilisateur primaire, et un mot de passe pour identifier l’utilisateur. Tous les endroits de Bugzilla qui traitent les ID utilisateurs (exemple : assigner un bogue) utilisent l’adresse email. L’authentification LDAP se place au dessus de ce schéma au lieu de le remplacer. L’utilisateur se connecte au début avec un nom d’utilisateur et un mot de passe pour l’annuaire LDAP. L’adresse email est récupérée depuis LDAP et l’utilisateur est identifié par le système traditionnel d’une façon cohérente en utilisant son adresse email. Si un compte pour cette adresse email existe déjà dans votre système Bugzilla, il s’y connectera. Si aucun compte pour cette adresse email n’existe, un compte est créé au cours de la connexion. (Dans ce cas, Bugzilla essaie d’utiliser le "displayName" ou l’attribut "cn" pour déterminer le nom complet de l’utilisateur). Après l’authentification, toutes les tâches liées à cet utilisateur sont gérées par l’adresse email, et non par le nom d’utilisateur LDAP. Vous continuez d’assigner des bugs par adresse email, de rechercher des utilisateurs par adresse email, etc. Utiliser LDAP pour l’authentification dans Bugzilla nécessite le module Perl Mozilla::LDAP (ou PerLDAP). Le module Mozilla::LDAP nécessite à son tour le Directory SDK de Netscape pour le C. Après que vous ayez installé le SDK, installez le module PerLDAP. Mozilla::LDAP et le Directory SDK sont tous les deux disponibles en téléchargement (http://www.mozilla.org/directory/) sur mozilla.org. Fixez le paramètre ’useLDAP’ à "On" **seulement** si vous voulez utiliser un annuaire LDAP pour l’authentification. Soyez très prudent en modifiant ce paramètre; si vous activez l’authentification LDAP sans avoir un annuaire LDAP valide, vous ne pourrez plus vous reconnecter à Bugzilla quand vous vous serez déconnecté. (Si cela se produit, vous pouvez y retourner en éditant manuellement les fichiers de données et de paramètres, et en fixant ’useLDAP’ à 0). Si vous utilisez LDAP, vous devez fixer trois paramètres supplémentaires : spécifiez le nom de votre serveur LDAP (et éventuellement son port) dans l’option LDAPServer. Si vous ne choisissez pas le port, le port par défaut est 389. (Ex : "ldap.mycompany.com" ou "ldap.mycompany.com:1234"). Fixer LDAPBaseDN avec la base DN pour rechercher des utilisateurs dans le répertoire LDAP. (Ex : "ou=People,o=MyCompany"). Les identifiants UID doivent être uniques dans la DN choisie. Spécifiez dans LDAPmailattribute le nom de l’attribut dans l’annuaire LDAP qui contient l’adresse email primaire. Dans beaucoup de serveurs d’annuaire disponibles, c’est "mail", mais vous pouvez avoir besoin de le changer. 4.2.5. Empêcher les pages de Bugzilla d’exécuter du code Javascript malveillant. Il arrive que Bugzilla exécute du code Javascript malveillant. A cause de problèmes d’internationalisation, il est impossible d’intégrer les modifications de code nécessaires pour remplir les conditions minimums conseillées par le CERT et décrites à l’adresse http://www.cet.org/tech_tips/malicious_code_mitigation.html/#3 (http://www.cert.org/tech_tips/malicious_code_mitigation.html/#3). Si votre installation de Bugzilla est prévue pour des utilisateurs anglophones, l’exécution de ce bout de code à partir d’un interpréteur de commande résoudra le problème. Comme toujours, assurez-vous que votre installation de Bugzilla soit correctement sauvegardée avant d’exécuter ces changements. De plus, je vous recommande de comprendre ce que le script fait avant de l’exécuter. bash# perl -pi -e "s/Content-Type\: text\/html/Content-Type\: text\/html\; charset=ISO-8859-1/i" *.cg Tout ce que fait cette commande d’un seul ligne est de rechercher toutes les occurrences de “Content-type: text/html” et de les remplacer par “Content-Type: text/html; charset=ISO-8859-1”. Cette commande empêche une possible attaque Javascript sur le navigateur, et est conseillée pour tous les site anglophones. (NdT : cette option HTML permet 21 Chapter 4. Installation en fait de spécifier la table de caractère à utiliser pour la page). Pour les sites Bugzilla non-anglophones, je vous conseille de changer l’option “ISO-8859-1” ci-dessus par “UTF-8”. Note : il n’est pas conseillé d’utiliser les étiquettes <meta> pour spécifier les tables de caractères car, à cause d’un bogue dans Netscape 4.x, les pages ainsi configurées sont chargées deux fois avec ce navigateur. 4.2.6. Fichiers .htaccess et sécurité Pour améliorer la sécurité de votre installation de Bugzilla, le script checksetup.pl de Bugzilla va générer des fichiers .htaccess que le serveur Web Apache peut utiliser pour restreindre l’accès sur les fichiers de données de Bugzilla. Ces fichiers .htaccess ne marcheront pas avec Apache 1.2.x - mais puisqu’il possède des trous de sécurité, vous de devriez pas l’utiliser de toutes manières. Note: Si vous utilisez un fournisseur alternatif de service webdot pour les graphiques (comme cela est décrit quand vous visualisez editparams.cgi dans votre serveur Web), il vous faut changer l’adresse IP dans data/webdot/.htaccess et spécifier l’adresse IP du serveur webdot que vous utilisez. Le fichier .htaccess par défaut peut ne pas fournir les restrictions d’accès suffisantes, selon la configuration de votre serveur Web. Prenez soin d’activer les entrées <Directory> de votre répertoire de Bugzilla pour que les fichiers .htaccess soient autorisés à surcharger les options par défaut du serveur Web. Par exemple, supposons que votre Bugzilla soit installé dans le répertoire /usr/local/bugzilla. Vous devez donc avoir cette entrée <Directory> dans votre fichier httpd.conf: <Directory /usr/local/bugzilla/> Options +FollowSymLinks +Indexes +Includes +ExecCGI AllowOverride All </Directory> L’élément important ci-dessus est “AllowOverride All”. Sans lui, le fichier .htaccess généré par checksetup.pl n’aura pas les permissions suffisantes pour protéger votre installation de Bugzilla. Si vous utilisez Internet Information Server (IIS) ou un autre Serveur Web qui ne suit pas les conventions .htaccess, vous pouvez désactiver leur création en éditant localconfig et en donnant à la variable $create_htaccess la valeur 0. 4.2.7. mod_throttle et la sécurité Il est possible pour un utilisateur, par erreur ou volontairement, d’accéder plusieures fois de suite à la base de données, ce qui peut engendrer des vitesses d’accès très faibles pour les autres utilisateurs. Si votre installation de bugzilla rencontre ce problème, vous pouvez installer le module Apache mod_throttle, qui est capable de limiter le nombre de connexions par adresse IP. Vous pouvez télécharger ce module à http://www.snert.com/Software/mod_throttle/. Suivez les instructions pour l’insérer dans votre installation d’Apache. Ce module ne fonctionne qu’avec le serveur Web Apache ! Vous pouvez utiliser la commande ThrottleClientIP fournie avec le module pour réaliser cet objectif. Veuillez lire la documentation du module (http://www.snert.com/Software/mod_throttle/) pour plus d’informations. 22 Chapter 4. Installation 4.3. Notes d’installation sur Win32 Cette section traite de l’installation de Bugzilla sur Microsoft Windows. Bugzilla a été conçu pour fonctionner sur les plate-formes Win32, mais l’équipe Bugzilla insiste sur le fait que la manière la plus simple de l’installer sur les machines Intel est de le faire sur une variante de GNU/Linux, et de suivre les instructions d’installation pour UNIX dans ce guide. Si vous avez une quelconque influence dans le choix de la plate-forme sur laquelle tourne Bugzilla, alors choisissez GNU/Linux au lieu de Microsoft Windows. Warning Après cet avertissement, voici la situation pour la version 2.16 et Windows. Tout ne fonctionne pas du premier coup. Vous avez plutôt intérêt à prendre la version 2.17 du CVS (après vous être assuré auprès de l’équipe Bugzilla que vous vous trouvez dans un jour stable), parce que nous allons devoir effectuer une charge de travail non négligeable pour rendre votre expérience sous Win32 plus agréable qu’elle ne l’est à présent. Si vous voulez toujours l’essayer, pour avoir une chance de le faire marcher, vous devez appliquer la rustine mail patch () du bogue 124174 (http://bugzilla.mozilla.org/show_bug.cgi?id=124174). Ceci fait, vous devrez lire les instructions d’installation (dépassées) ci-dessous, celles plus récentes (http://bugzilla.mozilla.org/attachment.cgi?id=84430&action=view) (et probablement meilleures) gentiment fournies par Toms Baugis et Jean-Sébastien Guay, et aussi vérifier la page de mise-à-jour Win32 de Bugzilla 2.16 (Bugzilla 2.16 Win32 update page) (http://www.bugzilla.org/releases/2.16/docs/win32.html). Si nous avons le temps, nous écrirons de meilleures instructions d’installation pour le 2.16, et nous les intégrerons dans ce document. Mais je ne vous promets rien. 4.3.1. Installation sur Win32 : étape par étape Note: Familiarisez-vous avec le reste de la section Bugzilla Installation avant d’effectuer l’installation sur Win32. Faire tourner Bugzilla sur Microsoft Windows n’est pas une partie de plaisir. Le support de Win32 s’est amélioré de façon spectaculaire dans les dernières versions, mais, si vous choisissez de continuer, vous devrez posséder de sérieuses compétences d’administrateur des systèmes Windows ainsi que des fortes capacités à résoudre les problèmes, une tolérance élevée à la douleur, et des connaissances en perl suffisantes. Bugzilla sous NT demande de bidouiller des codes source et d’implémenter des utilitaires avancés. Ce qui suit est la procédure d’installation recommandée pour Win32; des suggestions supplémentaires sont proposées dans la section Appendix A. 1. Installez Le Serveur Web Apache (http://www.apache.org/) pour Windows, et copiez les fichiers de Bugzilla là où Apache pourra les afficher. Veuillez suivre toutes les instructions mentionnées dans la section Bugzilla Installation en fonction de votre configuration d’Apache, particulièrement les instructions à propos du paramètre “AddHandler” et de l’option “ExecCGI”. Note: Vous pouvez aussi utiliser les serveurs Web Internet Information Server et Personal Web Server dans ce but. Cependant, la configuration est assez différente. Si ActivePerl ne semble pas gérer vos associations de fichiers correctement (pour les fichiers .cgi et .pl), veuillez consulter la section Appendix A. Si Vous vous utilisez IIS, et si c’est sous Windows NT, vous devez vous être mis à jour au moins au niveau Service Pack 4. Windows 2000 est fourni avec une version suffisante d’IIS. 23 Chapter 4. Installation 2. Installez ActivePerl (http://www.activestate.com/) pour Windows. Cherchez sur http://aspn.activestate.com/ASPN/Downloads/ActivePerl (http://aspn.activestate.com/ASPN/Downloads/ActivePerl/) un binaire compilé de la version en cours Suivez également les liens suivants pour connaître le statut de ActivePerl sous Win32 : Perl Porting (http://language.perl.com/newdocs/pod/perlport.html) et Perl on Win32 FAQ (http://ftp.univie.ac.at/packages/perl/ports/nt/FAQ/perlwin32faq5.html) (la FAQ de Perl sous Win32) 3. Utilisez ppm depuis votre répertoire perl\bin pour installer les paquets suivants : DBI, DBD-Mysql, TimeDate, Chart, Date-Calc, Date-Manip, GD, AppConfig et Template. Vous pouvez avoir besoin de les extraire d’une archive .zip avant en utilisant Winzip ou un autre programme de décompression. On peut télécharger la plupart de ces modules ppm supplémentaires depuis ActiveState, sauf AppConfig et Template, disponible sur OpenInteract en utilisant les instructions sur le site Web du Toolkit Template (http://openinteract.sourceforge.net/). Note: Vous pouvez trouver une liste des modules à l’adresse : http://www.activestate.com/PPMPackages/zips/5xx-builds-only/ (http://www.activestate.com/PPMPackages/zips/5xx-builds-only) ou http://www.activestate.com/PPMPackages/5.6plus (http://www.activestate.com/PPMPackages/5.6plus) La syntaxe de ppm est : C:> ppm <nom du module> Example 4-1. Installer les modules ppd ActivePerl sur Microsoft Windows C:> ppm DBD-Mysql Surveillez la touche majuscule ! Le répertoire 5.6Plus de ActiveState contient aussi un ppm AppConfig, c’est pourquoi vous pourriez rencontrer l’erreur suivante en essayant d’installer la version d’OpenInteract : Error installing package ’AppConfig’: Read a PPD for ’AppConfig’, but it is not intended for this build of Perl (MSWin32-x86-multi-thread) Si c’est le cas, téléchargez à la fois l’archive tar (http://openinteract.sourceforge.net/ppmpackages/AppConfig.tar.gz) et le ppd (http://openinteract.sourceforge.net/ppmpackages/AppConfig.ppd) directement depuis OpenInteract. Exécutez ensuite le ppm depuis le même répertoire que celui dans lequel vous avez téléchargé ces fichiers et installez le paquets en référençant le fichier ppd explicitement à l’aide de la commande install. Par exemple : Example 4-2. Installer manuellement les modules ppd d’OpenInteract sur Microsoft Windows. install C:\AppConfig.ppd 4. Installez MySQL pour NT. 24 Chapter 4. Installation Note: Vous pouvez télécharger MySQL pour Windows NT à l’adresse MySQL.com (http://www.mysql.com/). Certains trouvent utile d’utiliser l’utilitaire WinMySqlAdmin, inclus dans l’archive téléchargée pour configurer la base de données. 5. Configurer MySQL a. C:> C:\mysql\bin\mysql -u root mysql b. mysql> DELETE FROM user WHERE Host=’localhost’ AND User=”; c. mysql> UPDATE user SET Password=PASSWORD (’nouveau_password’) WHERE user=’root’; “nouveau_password”, ci-dessus, est le mot de passe que vous voulez utiliser pour votre utilisateur “root”. d. mysql> GRANT SELECT, INSERT, UPDATE, DELETE, INDEX, ALTER, CREATE, DROP, REFERENCES ON bugs.* to bugs@localhost IDENTIFIED BY ’bugs_password’; “bugs_password”, ci-dessus, est le mot de passe que vous voulez utiliser pour votre utilisateur “bugs”. 6. e. mysql> FLUSH PRIVILEGES; f. mysql> create database bugs; g. mysql> exit; h. C:> C:\mysql\bin\mysqladmin -u root -p reload Editez checksetup.pl dans votre répertoire de Bugzilla. Remplacer la ligne : my $webservergid = getgrnam($my_webservergroup); par celle-ci : my $webservergid = $my_webservergroup; Vous pouvez aussi donner explicitement le nom du groupe que vous voulez voir posséder les fichiers : my $webservergid = ’Administrators’ 7. Exécutez checksetup.pl depuis le répertoire de Bugzilla. 8. Editez localconfig pour satisfaire vos exigences. Donnez la valeur de votre “bugs_password” dans la partie step 5.d à la variable $db_pass, et la valeur “8” à la variable $webservergroup. Note: Nous ne sommes pas sûrs du “8” pour $webservergroup ci-dessus. Si c’est faux, veuillez nous envoyer vos corrections. 25 Chapter 4. Installation 9. Editez defparams.pl pour satisfaire vos exigences. En particulier, fixez DefParam("maintainer") et DefParam("urlbase") pour se conformer à votre installation. Note: Il s’agit à nouveau d’une étape dont je ne suis pas sûr, car le mainteneur de cette documentation n’assure pas le suivi de Bugzilla sur NT. Si vous pouvez confirmer ou infirmer cette étape, veuillez me le faire savoir. 10. Note: Il existe plusieures alternatives à Sendmail qui fonctionnent sous Win32. Celle qui est mentionnée ici est une suggestion, pas une obligation. Parmi les quelques autres logiciels de mail qui peuvent fonctionner, on trouve BLAT (http://www.blat.net/), Windmail (http://www.geocel.com/windmail/), Mercury Sendmail (http://www.dynamicstate.com/), et le module Net::SMTP du CPAN (disponible en .ppm). Chaque solution demande un peu de bidouillage des scripts Perl pour faire marcher Bugzilla. La solution proposée ici en demande le moins. 1. Téléchargez NTsendmail, disponible sur www.ntsendmail.com (http://www.ntsendmail.com/). Vous devez avoir un "vrai" serveur mail capable de le relayer dans votre variable $ENV{"NTsendmail"} (que vous devrez probablement mettre dans globals.pl). 2. Copier ntsendmail.pm dans votre répertoire .\perl\lib. 3. Ajoutez à globals.pl : # ces paramètres configurent NTsendmail process use NTsendmail; $ENV{"NTsendmail"}="your.smtpserver.box"; $ENV{"NTsendmail_debug"}=1; $ENV{"NTsendmail_max_tries"}=5; Note: Certains prétendent qu’il faut aussi modifier $db_pass dans globals.pl pour que ce soit votre “bugs_password”. Cela peut vous éviter quelques problèmes d’authentification pour accéder à votre base de données, vu que globals.pl, normalement, n’est pas concerné par les restrictions de .htaccess. Mais votre mot de passe de la base de données est ainsi exposé à la vue de quiconque utilise votre serveur Web. 4. Recherchez et décommentez toutes les occurences de “open(SENDMAIL” dans le répertoire de Bugzilla. Remplacez-les par : # Nouvelles fonctionalités de sendmail my $mail=new NTsendmail; my $from="bugzilla\@your.machine.name.tld"; my $to=$login; my $subject=$urlbase; $mail->send($from,$to,$subject,$msg); 26 Chapter 4. Installation Note: Certains utilisateurs ont rencontré du succès avec le logiciel commercial Windmail. Une solution serait peut-être de remplacer vos appels à sendmail par : open SENDMAIL, "|\"C:/General/Web/tools/Windmail 4.0 Beta/windmail\" -t > mail.log"; ou quelque chose qui aurait le même effet. 11. Modifiez toutes les références dans tous les fichiers en remplaçant processmail par processmail.pl, et renommez processmail en processmail.pl. Note: Beaucoup pensent que c’est un changement à faire pour l’arbre principal de Bugzilla. Cela ne fera aucun mal aux gens d’UNIX, et peut rendra ceux de Win32 plus heureux. Note: Certaines personnes ont suggéré d’utiliser le module Perl Net::SMTP à la place de NTsendmail ou des autres propositions énoncées ici. Vous pouvez changer processmail.pl pour que ça marche. my $smtp = Net::SMTP->new(’<Nom de votre serveur SMTP>’); #connexion au serveur SMTP $smtp->mail(’<votre nom>@<votre serveur SMTP>’);# utilisez l’adresse de l’expéditeur ici $smtp->to($tolist); # adresse des destinataires $smtp->data(); # Commencer le mail $smtp->datasend($msg); $smtp->dataend(); # Finir en envoyant le mail $smtp->quit; # Fermer la conexion SMTP $logstr = "$logstr; mail sent to $tolist $cclist"; } Voici un programme de test de mail pour Net::SMTP : use Net::SMTP; my $smtp = Net::SMTP->new(’<Name of your SMTP server’, Timeout => 30, Debug => 1, ); # connexion au serveur SMTP $smtp->auth; $smtp->mail(’[email protected]’);# utilisez l’adresse de l’expéditeur ici $smtp->to(’[email protected]’); #adresse des destinataires $smtp->data(); # Commencez le mail $smtp->datasend(’test’); $smtp->dataend(); # Finir d’envoyer le mail $smtp->quit; # Fermer la connexion SMTP exit; 27 Chapter 4. Installation 12. Note: Cette étape est facultative si vous utilisez IIS ou un autre serveur Web qui choisit l’interpréteur seulement d’après l’extension du fichier (.pl) au lieu de regarder la ligne de déclaration de l’interpréteur, dite ligne “shebang” (#!/usr/bonsaitools/bin/perl) Modifiez le chemin d’accès à Perl sur la première ligne (#!) de tous les fichiers pour pointer vers votre Perl, et ajoutez “perl” au début de chaque appel système Perl qui utilise un script Perl en argument. Cela peut vous prendre pas mal de temps. Il y a un utilitaire “setperl.csh” pour accélérer une partie de cette procédure, disponible dans la section Useful Patches and Utilities for Bugzilla du Guide Bugzilla. Cependant, cela nécessite que l’environnement Gygwin compatible GNU pour Win32 soit configuré pour que ça marche. Des informations pour obtenir Cygwin sont disponibles à l’adresse : http://www.cygwin.com/. 13. Modifiez l’invocation des tous les appels system() dans tous les script perl dans le répertoire dans lequel vous avez installé Bugzilla. Il faut préciser le chemin d’accès complet à perl pour chaque appel system(). Par exemple, changez cette ligne dans processmail : system ("./processmail",@ARGLIST); to system ("C:\\perl\\bin\\perl", "processmail", @ARGLIST); 14. Ajoutez les appels à binmode() pour que (http://bugzilla.mozilla.org/show_bug.cgi?id=62000)). les pièces-jointes fonctionnent (bogue 62000 Parce que les systèmes basés sur Microsoft Windows gèrent les fichiers binaires d’une façon différente des systèmes basés sur UNIX, you devez ajouter les lignes suivantes à createattachment.cgi et showattachment.cgi avant la ligne require ’CGI.pl’;. binmode(STDIN); binmode(STDOUT); Note: D’après le bogue 62000 (http://bugzilla.mozilla.org/show_bug.cgi?id=62000), la documentation de perl dit qu’il faut toujours utiliser binmode() quand on a à faire à des fichiers binaires, mais jamais quand on a à faire à des fichiers texte. Cela voudrait donc dire qu’il ne faut pas mettre à priori binmode() au début des fichiers attachés. Il serait plus logique de vérifier si binmode() est nécessaire ou non. 28 Chapter 4. Installation Tip: Si vous utilisez IIS ou Personal Web Server, vous devez ajouter des relations sur les cgi dans Properties -> Home directory (onglet) -> Application Settings (section) -> Configuration (bouton), telles que celles-ci : .cgi to: <répertoire d’installation de perl>\perl.exe %s %s .pl to: <répertoire d’installation de perl>\perl.exe %s %s GET,HEAD,POST Bien-sûr, choisissez le chemin d’accès à Perl correspondant à votre installation. 4.3.2. Astuces supplémentaires pour Windows Tip: Par Andrew Pearson: Vous pouvez faire marcher Bugzilla avec Personal Web Server sous Windows 98 et suivant, ainsi qu’avec IIS 4.0. Microsoft a mis des informations sur leur site web : http://support.microsoft.com/support/kb/articles/Q231/9/98.ASP ( http://support.microsoft.com/support/kb/articles/Q231/9/98.ASP) En fait, vous devez ajouter deux clés dans la base de registre, dans l’emplacement suivant : HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\Parameters\ScriptMap Ces clé doivent être appelées ".pl" et ".cgi", et toutes les deux doivent contenir une valeur du genre : c:/perl/bin/perl.exe "%s" "%s" L’article de KB ne parle que des .pl, mais il rentre plus dans les détails et fourni un script perl de test. Tip: Si vous avez l’intention de faire tourner Bugzilla en version 2.12 ou antérieure, vous devrez supprimer les appels encrypt() des sources Perl. Cela n’est pas nécessaire pour Bugzilla 2.13 et suivant, ce qui inclut la version en cours, Bugzilla 2.16.4. Example 4-3. Suppression de encrypt() dans la version 2.12 et antérieur de Bugzilla, pour Windows NT Remplacez ceci : SendSQL("SELECT encrypt(" . SqlQuote($enteredpwd) . ", " . SQLQuote(substr($realcryptpwd, 0, 2)) . ")"); my $enteredcryptpwd = FetchOneColumn(); par : my $enteredcryptpwd = $enteredpwd dans cgi.pl. 29 Chapter 4. Installation 4.4. Notes d’installation sous Mac OS X Il existe beaucoup de bibliothèques courantes et d’utilitaires dans la nature qu’Apple n’a pas inclus dans Mac OS X, mais qui fonctionnent très bien avec. La bibliothèque GD, dont Bugzilla a besoin pour faire des graphes de bogues, est l’un d’entre eux. Le programme appelé Fink est ce qui permet d’en obtenir le plus facilement. Fink est proche de l’installeur CPAN, mais installe les utilitaires GNU courants. Fink est disponible à l’adresse <http://sourceforge.net/projects/fink/>. Suivez les instructions pour configurer Fink. Une fois qu’il est installé, vous devez exécuter la commande suivante en tant que root : fink install gd Fink va alors vous demander s’il doit résoudre un certain nombre de dépendances. Saisissez ’y’ et tapez entrée pour installer toutes les dépendances. Surveillez alors que tout ce passe bien. Pour ne pas entrer en conflit avec les logiciels installés par défaut par Apple, Fink crée sa propre arborescence dans /sw et y place la plupart des logiciels qu’il installe. Cela signifie que vos bibliothèques et vos entêtes pour libgd seront dans /sw/lib et /sw/include au lieu de /usr/lib et /usr/local/include. Puisque l’emplacement de ces bibliothèques a changé, le module Perl GD ne va pas s’installer directement à partir de CPAN. En effet, il recherche des chemins d’accès fixés au lieu de les extraire de votre environement. Mais il y a un moyen de contourner le problème. :-) Au lieu de taper “install GD” dans l’invite cpan>, tapez look GD. Cela devrait télécharger automatiquement la dernière version du module GD, et vous ouvrir un shell dans le répertoire de construction. Appliquez cette rustine (../xml/gd-makefile.patch) au fichier Makefile.PL (pour cela, enregistrez le patch dans un fichier et utilisez la commande patch < fichier_patch >.) Pour terminer l’installation du module GD, exécutez ces commandes : perl Makefile.PL make make test make install Et noubliez pas d’exécuter exit pour revenir au CPAN. 4.5. Résolution des problèmes Cette section donne des solutions aux problèmes courants d’installation de Bugzilla. 4.5.1. Bundle::Bugzilla met à niveau Perl à la version 5.6.1 Exécutez la commande perl -MCPAN -e ’install CPAN’ pour voir et continuez. Certaines versions plus anciennes des outils CPAN étaient un peu naïves quand elles mettaient à jour des modules Perl. Quand des modules entraient dans la distribution Perl 5.6.1, CPAN pensait que le meilleur moyen de les garder à jour était de récupérer la distribution Perl elle-même et de la reconstruire. Inutile de vous dire que cela a causé un mal de tête à presque tout le monde. Une mise à niveau vers la nouvelle version de CPAN, grâce à la commande ci-dessus devrait régler le problème. 30 Chapter 4. Installation 4.5.2. "DBD::Sponge::db prepare failed" (la préparation de DBD::Sponge::db a échoué) Le message suivant peut apparaître à cause d’un bogue dans DBD::mysql (sur lequel l’équipe Bugzilla n’a aucun contrôle) : DBD::Sponge::db prepare failed: Cannot determine NUM_OF_FIELDS at D:/Perl/site/lib/DBD/mysql.pm line SV = NULL(0x0) at 0x20fc444 REFCNT = 1 FLAGS = (PADBUSY,PADMY) Pour régler le problème, éditez le fichier <chemin-vers-perl>/lib/DBD/sponge.pm dans votre répertoire d’installation de Perl et remplacez my $numFields; if ($attribs->{’NUM_OF_FIELDS’}) { $numFields = $attribs->{’NUM_OF_FIELDS’}; } elsif ($attribs->{’NAME’}) { $numFields = @{$attribs->{NAME}}; par my $numFields; if ($attribs->{’NUM_OF_FIELDS’}) { $numFields = $attribs->{’NUM_OF_FIELDS’}; } elsif ($attribs->{’NAMES’}) { $numFields = @{$attribs->{NAMES}}; (notez le S ajouté à NAME). 4.5.3. "cannot chdir(/var/spool/mqueue)" (impossible de faire chdir...) Si vous installez Bugzilla sur SuSE Linux, ou sur une autre distribution avec des options de sécurité “paranoïdes”, le script checksetup.pl peut se bloquer avec l’erreur suivante : cannot chdir(/var/spool/mqueue): Permission denied Cette erreur se produit parce que votre répertoire /var/spool/mqueue a des permissions insuffisantes : “drwx------”. Exécutez la commande suivante sous root pour régler le problème : chmod 755 /var/spool/mqueue 4.5.4. "Your vendor has not defined Fcntl macro O_NOINHERIT" (votre revendeur n’a pas défini ...) Cette erreur est provoquée par un bogue dans la version de File::Temp distribuée avec Perl 5.6.0. De nombreuses variantes de cette erreur légèrement différentes ont été signalées. On peut en trouver des exemples : Figure 4-1. 31 Chapter 4. Installation Figure 4-1. D’autres message d’erreur File::Temp Your vendor has not defined Fcntl macro O_NOINHERIT, used at /usr/lib/perl5/site_perl/5.6.0/File/Temp.pm line 208. Your vendor has not defined Fcntl macro O_EXLOCK, used at /usr/lib/perl5/site_perl/5.6.0/File/Temp.pm line 210. Your vendor has not defined Fcntl macro O_TEMPORARY, used at /usr/lib/perl5/site_perl/5.6.0/File/Temp.pm line 233. Beaucoup d’utilisateurs ont signalé qu’une mise à niveau vers la version 5.6.1 et suivant a réglé leur problème. Une solution moins définitive consiste à appliquer la rustine décrite dans Figure 4-2. Cette rustine est aussi disponible sous la forme d’un fichier patch (../xml/filetemp.patch). Figure 4-2. Rustine pour for File::Temp dans Perl 5.6.0 --- File/Temp.pm.orig Thu Feb 6 16:26:00 2003 +++ File/Temp.pm Thu Feb 6 16:26:23 2003 @@ -205,6 +205,7 @@ # eg CGI::Carp local $SIG{__DIE__} = sub {}; local $SIG{__WARN__} = sub {}; + local *CORE::GLOBAL::die = sub {}; $bit = &$func(); 1; }; @@ -226,6 +227,7 @@ # eg CGI::Carp local $SIG{__DIE__} = sub {}; local $SIG{__WARN__} = sub {}; + local *CORE::GLOBAL::die = sub {}; $bit = &$func(); 1; }; 32 Chapter 5. Administrer Bugzilla 5.1. Configuration de Bugzilla Pour configurer Bugzilla, il faut changer différents paramètres accessibles à partir du lien "Edit parameters" au bas de la page. Voici quelques-uns des paramètres importants de cette page. Il faut parcourir cette liste et les remplir correctement après l’installation de Bugzilla. 1. maintainer: Le paramètre "maintainer" est l’adresse électronique de la personne chargée de maintenir cette installation Bugzilla. Il n’est pas nécessaire que l’adresse soit celle d’un compte Bugzilla valide. 2. urlbase: Ce paramètre indique à votre installation Bugzilla le nom de domaine entier et le chemin du serveur web. Par exemple, si votre page de requête Bugzilla est http://www.foo.com/bugzilla/query.cgi, fixez votre paramètre “urlbase” à http://www.foo.com/bugz/. 3. usebuggroups: C’est de ceci que dépend l’application ou non d’une sécurité de groupe pour Bugzilla. S’il a été instauré, on peut associer un groupe à un bogue de Bugzilla, ce qui définit les utilisateurs qui sont autorisés à voir et éditer un bogue. Mettez le paramètre "usebuggroups" sur "on" seulement si vous souhaitez limiter l’accès à des bogues particuliers à certains groupes d’utilisateurs. Je suggère de laisser le paramètre sur "off" pendant le test initial de Bugzilla. 4. usebuggroupsentry: Les produits Bugzilla peuvent être associés à un groupe, de telle façon que certains utilisateurs ne puissent voir que les bogues de certains produits. Quand ce paramètre est mis sur “"on"”, les nouveaux bogues d’un produit sont immédiatement placés dans le groupe associé. 5. shadowdb: Un problème intéressant se pose quand Bugzilla atteint un niveau élevé d’activité en continu. MySQL ne supporte que le verrouillage en écriture au niveau des tables. Cela signifie que, si quelqu’un doit apporter une modification à un bogue, il devra verrouiller la table tout entière jusqu’à la fin de l’opération. Le verrouillage en écriture bloque également la lecture jusqu’à ce que l’écriture soit terminée. Le paramètre “shadowdb” a été conçu pour contourner cette restriction. Alors qu’un seul utilisateur à la fois est autorisé à écrire sur une table, on peut continuer à lire sans problème sur une copie fantôme de la base de données ouverte uniquement en lecture. Bien que la taille de la base de données soit doublée, une base de données fantôme peut provoquer une amélioration importante des performances quand elle est implantée sur des bases de données de Bugzilla au trafic extrèmement élevé. A titre indicatif, mozilla.org a commencé à avoir besoin de “shadowdb” quand ils ont atteint environ 40000 utilisateurs de Bugzilla avec plusieurs centaines de modifications et de commentaires sur les bogues de Bugzilla par jour. La valeur du paramètre définit le nom de la base de données fantôme contenant les bogues. Fixez "shadowdb" à, par exemple, "bug_shadowdb" si vous comptez lancer une très grosse installation de Bugzilla. Note: Activer "shadowdb" peut avoir de sérieuses répercussions sur la stabilité de votre installation Bugzilla. Il faut vérifier régulièrement que votre base de données est synchronisée. Il est souvent prudent de forcer une synchronisation de la base de données fantôme toutes les nuits via “cron”. 33 Chapter 5. Administrer Bugzilla Si vous utilisez l’option "shadowdb", il va de soi qu’il faut activer l’option "queryagainstshadowdb" également. Sinon, vous dupliquez des données dans une base de données fantôme sans aucune raison! 6. shutdownhtml: Si vous devez éteindre Bugzilla pour des tâches d’administration, tapez ici une description en langage HTML et chaque personne qui essayera d’utiliser Bugzilla recevra cette page HTML. Evidemment, editparams.cgi sera encore accessible de sorte que vous puissiez enlever le HTML et réactiver Bugzilla. :-) 7. passwordmail: Chaque fois qu’un utilisateur crée un compte, le contenu de ce paramètre (avec des adaptations) ainsi que son mot de passe lui est envoyé. Ajouter le texte que vous souhaitez dans le champ du paramètre "passwordmail". Par exemple, beaucoup de personnes utilisent ce champ pour donner de rapides indications sur la façon d’utiliser Bugzilla sur leur site. 8. useqacontact: Ceci vous permet de définir une adresse électronique pour chaque composant, en plus de celle du propriétaire par défaut, à qui seront envoyées des copies des nouveaux bogues. 9. usestatuswhiteboard: Ceci indique si vous souhaitez un champ réinscriptible de forme libre associé à chaque bogue. L’avantage du "Status Whiteboard" est qu’il peut être supprimé ou modifié aisément, et qu’il fournit un champ interrogeable facilement pour l’indexation des bogues qui ont des traits en commun. 10. whinedays: Fixez ce paramètre au nombre de jours que vous souhaitez laisser les bogues à l’état "NEW" ou "REOPENED" avant de signaler aux personnes concernées qu’elles n’ont pas traité de nouveaux bogues. Si vous ne pensez pas utiliser cette fonctionnalité, il suffit tout simplement de ne pas installer la fonction cron de rappel (“whining cron”) comme cela est décrit dans les instructions d’installation, ou de fixer la valeur à "0" (aucun rappel). 11. commenton*: Tous ces champs vous permettent de signaler quelles modifications ne nécessitent pas de commentaires et celles qui doivent être commentées par leur auteur. Souvent, les administrateurs autorisent les utilisateurs à s’ajouter eux-mêmes à la liste des copies, à accepter des bogues, ou à changer le "Status Whiteboard" sans ajouter de commentaires sur les raisons du changement, et exigent cependant que la plupart des autres changements soient accompagnés d’une explication. Remplissez les options "commenton" conformément à la politique de votre site. Au minimum, il est bon de demander des commentaires quand les utilisateurs résolvent, réassignent ou rouvrent des bogues. Note: Il est généralement préférable de demander le commentaire du développeur quand il résout un bogue. Il n’y pas grand chose de plus agaçant pour les utilisateurs de base de données de bogues que de rencontrer un bogue marqué comme "fixed" par un développeur sans aucun commentaire sur la nature de la réparation (ou même pour indiquer qu’il a vraiment été réparé!). 12. supportwatchers: Activer cette option permet aux utilisateurs de demander à recevoir des copies de tous les messages électroniques concernant un bogue particulier d’un autre utilisateur. Ceci est, bien-sûr, soumis aux restrictions de groupe sur ce bogue ; si “l’observateur” n’est normalement pas autorisé à voir un bogue, il ne peut pas contourner le système en se permettant d’étudier des bogues qui ne correspondent pas à ses droits. Les utilisateurs ne recevront par message électronique que les mises-à-jour qui concernent les bogues qu’ils peuvent normalement voir. 34 Chapter 5. Administrer Bugzilla 5.2. Administration des utilisateurs 5.2.1. Créer l’utilisateur par défaut Quand vous lancez pour la première fois checksetup.pl après l’installation de Bugzilla, on vous demandera le nom de l’administrateur (adresse électronique) et le mot de passe de ce "super utilisateur". Si pour une raison quelconque vous supprimez ce compte , relancez checksetup.pl et on vous redemandera le nom d’utilisateur et le mot de passe de l’administrateur. Tip: Si vous souhaitez ajouter d’autres administrateurs, vous devez utiliser l’interface de MySQL. Lancez "mysql" en ligne de commande et utiliser ces commandes: mysql> use bugs; mysql> update profiles set groupset=0x7fffffffffffffff where login_name = "(user’s login name)"; Oui, ce sont bien quinze “f” . Il faut taper une longue suite de f si vous voulez créer un nouvel administrateur. 5.2.2. Gérer les autres utilisateurs 5.2.2.1. Créer de nouveaux utilisateurs Vos utilisateurs peuvent créer leurs propres comptes utilisateur en cliquant sur le lien "New account" situé en bas de chaque page (en supposant qu’ils n’aient pas déjà ouvert une autre session sous un autre nom). Toutefois, si vous souhaitez créer les comptes utilisateur à l’avance, voici comment faire. 1. Après avoir ouvert votre session, cliquez sur le lien "Users" situé en bas de page de requête, puis sur le lien "Add a new user". 2. Remplissez le formulaire. Cette page est toute simple. Une fois que cela est fait, cliquez sur "Submit". Note: En ajoutant un utilisateur de cette façon, aucun message électronique ne lui sera envoyé pour l’informer de son nom d’utilisateur et de son mot de passe. Bien que cela soit utile pour créer des comptes factices (par exemple, des observateurs qui transmettent et reçoivent des messages électroniques à un autre système, ou des adresses électroniques qui font partie d’une liste de diffusion), il est, en général, préférable de fermer sa session et d’utiliser le bouton “New account” pour créer des utilisateurs, car tous les champs obligatoires seront pré-remplis et l’utilisateur sera également informé du nom de son compte et de son mot de passe. 5.2.2.2. Modifier les utilisateurs Pour voir un utilisateur particulier, recherchez-le en tapant son nom d’utilisateur dans la case prévue sur la page "Edit Users". Pour voir tous les utilisateurs, laissez la case vide. 35 Chapter 5. Administrer Bugzilla Vous pouvez effectuer des recherches de différentes façons grâce à la liste déroulante située à droite de la zone de texte. Vous pouvez rechercher à partir d’une sous-chaîne (par défaut sans tenir compte de la casse), d’une expression régulière ou d’une expression régulière inverse, qui trouve tous les utilisateurs qui ne correspondent pas à l’expression régulière (Veuillez vous reporter au manuel issu de la commande man regexp pour des informations sur la syntaxe des expressions régulières). Une fois que vous avez trouvé votre utilisateur, vous pouvez changer les champs suivants : • Login Name: En général, c’est l’adresse électronique entière de l’utilisateur. Toutefois, si vous utilisez le paramètre "emailsuffix", ce champ peut contenir uniquement le nom d’utilisateur. On peut noter que les utilisateurs peuvent désormais changer leur nom d’utilisateur eux-mêmes (en le remplaçant par une adresse électronique valide). • Real Name: C’est le nom réel de l’utilisateur. On peut noter que Bugzilla n’exige pas cette information pour créer un compte. • Password: Vous pouvez changer le mot de passe utilisateur ici. Les utilisateurs peuvent demander un nouveau mot de passe automatiquement, vous ne devriez donc pas avoir à le faire souvent. Si vous voulez désactiver un compte, reportez-vous à la description de "Disable Text" ci-dessous. • Disable Text: Si vous entrez quelque chose dans cette case, y compris rien qu’un espace, vous empêchez l’utilisateur d’ouvrir sa session, ou d’apporter des modifications à des bogues via l’interface internet. Le code HTML que vous tapez dans cette case est affiché à l’utilisateur quand il essaye d’effectuer une de ces actions. Il est conseillé d’y expliquer pourquoi le compte a été désactivé. Warning Ne désactivez pas le compte administrateur ! Note: L’utilisateur peut toujours soumettre des bogues via le portail de messages électroniques, si vous l’activez, même si le champ Disable Text n’est pas vide. Il est conseillé de ne pas activer le portail de messages électroniques pour les installations sécurisées de Bugzilla. • <groupname>: Si vous avez créé des groupes, comme "securitysensitive", alors des cases apparaîtront ici pour vous permettre d’ajouter ou de supprimer des utilisateurs à ces groupes. • canconfirm: Ce champ n’est utilisé que si vous avez autorisé l’état "unconfirmed". Si vous activé ce champ pour un utilisateur, celui-ci pourra alors passer des bogues de l’état "Unconfirmed" à un état "Confirmed" (par exemple : l’état "New"). • creategroups: Cette option permet à un utilisateur de créer et détruire des groupes dans Bugzilla. • editbugs: Sauf si ce champ activé, les utilisateurs peuvent seulement éditer les bogues dont ils sont responsables ou qu’ils ont signalés. Même si l’option n’est pas sélectionnée, les utilisateurs peuvent tout de même ajouter des commentaires à des bogues. • editcomponents: Cette option permet à un utilisateur de créer de nouveaux produits et composants, ainsi que de modifier et supprimer ceux auxquels aucun bogue n’est associé. Si un produit ou un composant a des bogues qui lui sont associés, ces bogues doivent être affectés à un autre produit ou composant pour que Bugzilla permette sa suppression. 36 Chapter 5. Administrer Bugzilla • editkeywords: Si vous utilisez la fonctionnalité de mot-clé de Bugzilla, activer cette option permet à un utilisateur de créer et détruire des mots-clé. Comme toujours, les mots-clé pour des bogues existants contenant le mot-clé que l’utilisateur veut détruire doivent être modifiés pour que Bugzilla autorise sa suppression. • editusers: Cette option permet à un utilisateur de faire ce que vous faîtes en ce moment : éditer d’autres utilisateurs. Cela permettra à ceux qui ont le droit de le faire de supprimer les droits administrateur d’autres utilisateurs ou de se les accorder. A activer avec précaution. • tweakparams: Cette option permet à un utilisateur de changer les paramètres de Bugzilla (en utilisant editparams.cgi). • <productname>: Ceci permet à un administrateur de spécifier les produits au sein desquels un utilisateur pourra voir des bogues. L’utilisateur devra quand même avoir le droit "editbugs" pour éditer les bogues dans ces produits. 5.3. Produit, composant, jalon ["Milestone"], et administration de version 5.3.1. Les produits Les produits sont la plus large catégorie dans Bugzilla, et représentent quasiment les produits réels embarqués. Par exemple, si votre entreprise conçoit des jeux video, vous devriez avoir un produit par jeu, peut-être un produit "commun" pour les technologies utilisés dans de nombreux jeux, et peut-être quelques produits spéciaux (Site Internet, Administration,...) Beaucoup des réglages de Bugzilla sont configurables pour un produit donné. Le nombre de "votes" disponibles par utilisateur est fixé pour un produit donné, tout comme le nombre de votes nécessaire pour faire passer un bogue automatiquement de l’état UNCONFIRMED à l’état NEW. Pour créer un nouveau produit : 1. Sélectionnez "products" en bas de page 2. Sélectionnez le lien "Add" en bas à droite 3. Entrez le nom du produit et une description. Il est possible de remplir le champ Description en HTML. Ne vous inquiétez pas des options "Closed for bug entry", "Maximum Votes per person", "Maximum votes a person can put on a single bug", "Number of votes a bug in this Product needs to automatically get out of the UNCOMFIRMED state", et "Version" pour le moment. Nous allons les aborder dans quelques instants. 5.3.2. Les composants Les composants sont des sous-sections des produits. Par exemple, le jeu video que vous développez peut avoir un composant IHM ["UI"], un composant "API", un composant "Sound System" et un composant "Plugins", chacun étant surveillé par un programmeur différent. Il est souvent pratique de séparer les composants dans Bugzilla en suivant les séparations naturelles des responsabilités au sein du produit ou de votre entreprise. 37 Chapter 5. Administrer Bugzilla Chaque composant a un propriétaire et un contact QA (si vous l’activez dans les paramètres). Il est préférable que le propriétaire d’un composant soit la première personne qui répare des bogues dans ce composant. Il est conseillé que le contact QA soit la personne qui s’assurera que ces bogues sont complètement réparés. Le propriétaire, le contact QA et celui qui a signalé le bogue recevront un message électronique quand de nouveaux bogues seront créés dans ce composant et quand ces bogues seront modifiés. Les champs Default Owner et QA contact indique seulement les affectations par défaut; celles-ci peuvent être modifiées lors de la soumission d’un bogue, ou à n’importe quel moment de la vie du bogue. Pour créer un nouveau composant: 1. Sélectionnez le lien "Edit components" dans la page "Edit product". 2. Sélectionnez le lien "Add" en bas à droite. 3. Remplissez le champ "Component", une courte "Description", les champs "Initial Owner" et "Initial QA Contact" (s’ils sont activés). Il est possible de remplir les champs Component et Description en HTML; Vous devez remplir le champ "Initial Owner" avec un nom d’utilisateur déjà présent dans la base de données. 5.3.3. Les versions Les versions sont les révisions d’un produit, comme "Flinders 3.1", "Flinders 95", et "Flinders 2000". La version n’est pas un champ à plusieurs choix; en général, on choisit la plus récente version du bogue. Pour créer et éditer des versions: 1. Sélectionnez le lien "Edit Versions" à partir de la page "Edit product" 2. Vous pourrez remarquer que le produit a déjà par défaut la version "undefined". Cliquez sur le lien "Add" en bas à droite. 3. Entrez le nom de la version. Ce champ ne peut contenir que du texte. Ensuite, cliquez sur le bouton "Add". 5.3.4. Jalons Les jalons sont des "cibles" pour lesquelles vous projetez qu’un bogue sera réparé. Par exemple, si vous avez un bogue que vous projetez de réparer pour la version 3.0, vous lui affecterez le jalon 3.0. Note: Les options des jalons apparaissent seulement pour un produit si vous activez le paramètre "usetargetmilestone" dans la page "Edit Parameters". Pour créer de nouveaux jalons, définir les jalons par défaut et fixer l’URL des jalons: 1. Sélectionnez "Edit milestones" dans la page "Edit product". 2. Sélectionnez "Add" dans le coin inférieur droit. 3. Entrez le nom du jalon dans le champ "Milestone". En option, vous pouvez fixer le "sortkey", qui est un nombre positif ou négatif (-255 à 255) qui définit où ce point clé apparaîtra dans la liste. En effet, les jalons ne se 38 Chapter 5. Administrer Bugzilla présentent pas souvent dans l’ordre alphanumérique. Par exemple, on peut trouver "Future" après "Release 1.2". Sélectionnez "Add". 4. Dans la page Edit product, vous pouvez entrer l’URL d’une page qui donne des informations à propos de vos jalons et de ce qu’ils signifient. Tip: Si vous souhaitez que l’accès à votre document de jalons soit restreint de façon à ce qu’il ne puisse être vu que par des personnes d’un groupe Bugzilla particulier, la meilleure solution est de lier le document à un bogue de ce groupe et mettre comme URL l’URL de ce lien. 5.4. Le vote Le vote permet aux utilisateurs de disposer d’un certain nombre de votes qu’ils peuvent affecter à des bogues, pour indiquer qu’ils souhaitent que ces bogues soient réparés. Cela permet aux développeurs d’évaluer les besoins utilisateurs pour une amélioration ou une réparation particulière. En permettant que les bogues avec un certain nombre de votes puissent passer automatiquement de "UNCONFIRMED" à "NEW", les utilisateurs du système de bogues peuvent aider les bogues de priorité élevée à capter l’attention de façon à ce qu’ils ne restent pas trop longtemps à attendre le triage. Pour modifier les paramètres de vote: 1. Naviguez jusqu’à la page "Edit product" du produit que vous voulez modifier. 2. Maximum Votes per person: Mettre ce champ à 0 désactive le vote. 3. Maximum Votes a person can put on a single bug: A l’évidence, cela doit être un nombre inférieur au nombre inscrit dans le champ "Maximum votes per person". Ne mettez pas ce champ à 0 si "Maximum votes per person" n’est pas à 0; cela n’a pas de sens. 4. Number of votes a bug in this product needs to automatically get out of the UNCONFIRMED state: Mettre ce champ à "0" désactive le passage automatique des bogues de UNCONFIRMED à NEW. 5. Une fois que vous avez ajusté les valeurs selon vos préférences, cliquez sur "Update". 5.5. Groupes et sécurité de groupes Les groupes permettent à l’administrateur d’isoler des bogues ou des produits qui ne doivent être vus que par certaines personnes. Il y a deux types de groupes - les groupes génériques ["Generic Groups"] et les groupes basés sur les produits ["Product-Based Groups"]. Les groupes basés sur les produits sont liés à des produits et vous permettent de limiter l’accès aux bogues de ces produits. Ils sont activés en utilisant le paramètre usebuggroups. Activer le paramètre usebuggroupsentry implique que les bogues sont automatiquement ajoutés au groupe de leur produit quand ils sont classés. Les groupes génériques n’ont pas de lien particulier avec les produits; vous les créez, et leur ajoutez des bogues comme vous le souhaitez. Un exemple de l’utilisation des groupes génériques est le groupe "Security" de Mozilla, 39 Chapter 5. Administrer Bugzilla dans lequel sont placés les bogues sensibles en termes de sécurité jusqu’à ce qu’ils soient réparés. Seuls les membres de la Mozilla Security Team font partie de ce groupe. Pour créer des groupes génériques : 1. Sélectionnez le lien "groups" au bas de la page. 2. Consacrez quelques minutes à la lecture des instructions sur la page "Edit Groups", et sélectionnez ensuite le lien "Add Group". 3. Remplissez les champs "New Name", "New Description", et "New User RegExp". "New User RegExp" vous permet de placer automatiquement dans le nouveau groupe tous les utilisateurs qui correspondent à l’expression régulière ["Regular Expression"]. Quand vous avez terminé, cliquez sur "Add". Pour utiliser les groupes basés sur les produits : 1. Activez "usebuggroups" et "usebuggroupsentry" dans la page "Edit Parameters". Warning XXX est-il encore valable ? "usebuggroupsentry" permet d’empêcher l’administrateur de modifier directement des bogues à cause de conflits au niveau des permissions de groupes. Si vous prévoyez d’utiliser "usebuggroupsentry", il faut prévoir de limiter l’usage du compte administrateur uniquement aux les tâches administratives. En d’autres termes, gérez les bogues avec un compte utilisateur sans droits particuliers et gérez les utilisateurs, groupes, produits, etc. avec le compte administrateur. 2. Par la suite, quand vous créerez un produit, le groupe correspondant sera automatiquement créé. Si vous devez créer un groupe de produit pour un produit qui a été créé avant l’activation de usebuggroups, alors créez simplement un nouveau groupe, comme cela est décrit plus haut, auquel vous donnerez le même nom que le produit. Warning Bugzilla est actuellement limité à 64 groupes par installation. Si vous avez plus de 50 produits environ, il faut envisager de lancer plusieurs Bugzilla. Demandez dans le forum d’autres suggestions pour contourner cette limite. Notez que les permissions de groupe sont telles que vous devez être membre de tous les groupes dans lesquels se trouve un bogue, quelque soit la raison, pour voir ce bogue. 40 Chapter 5. Administrer Bugzilla 5.6. Sécurité Bugzilla Warning Les installations de MySQL et Bugzilla dont la configuration était médiocre ont donné aux pirates informatiques l’accès complet à des systèmes par le passé. Veuillez prendre ces instructions au sérieux, même pour les machines Bugzilla bien cachées derrière un coupe-feu. 80% des intrus proviennent de l’intérieur, et ne sont pas des pirates informatiques anonymes. Note: Ces intructions doivent forcément être plus ou moins vagues puisque Bugzilla fonctionne sur de nombreuses plateformes différentes. Si vous avez des améliorations à apporter à ces directives, veuillez soumettre un bug à Bugzilla (http://bugzilla.mozilla.org/enter_bug.cgi?product=Bugzilla&component=Documentation). Warning Ceci ne se veut pas une liste complète de tous les problèmes de sécurité possibles concernant les outils mentionnés dans cette partie. Rien ne remplace la lecture des informations écrites par les auteurs des logiciels qui fonctionnent sur votre système. 5.6.1. Ports TCP/IP TCP/IP définit quelque chose comme 65000 ports pour le trafic. Parmi ceux-là, Bugzilla n’en a besoin que d’1... 2 si vous devez utiliser des éléments qui nécessitent les messages électroniques comme le déplacement de bogues ou l’interface de messages électroniques. Vous devriez vérifier votre serveur et vous assurer qu’il n’est pas à l’écoute sur des ports dont vous n’avez pas besoin. Vous pourriez aussi utiliser quelque chose du genre logiciel coupe-feu pour être sûr que le trafic peut seulement être reçu sur les ports que vous avez choisis. 5.6.2. MySQL MySQL est livré par défaut avec de nombreux paramètres qui doivent être changés. Par défaut, il permet à n’importe qui de se connecter à partir de la machine hôte sans mot de passe et d’avoir tous les privilèges administratifs. Il ne fixe pas non plus par défaut le mot de passe administrateur (ce n’est pas le même que l’administrateur système). De plus, de nombreuses installations lancent par défaut mysqld en tant qu’administrateur système. 1. Assurez-vous que vous utilisez au moins la version 3.22.32 de MySQL parce que les versions plus anciennes présentent d’importants trous de sécurité. 2. Reportez-vous à la documentation qui est fournie avec votre système pour trouver les informations permettant de lancer mysqld en tant qu’utilisateur sans droits. 3. Il faut aussi être sûr d’avoir désactivé le compte utilisateur anonyme et d’avoir fixé un mot de passe pour l’administrateur. Ca se fait en utilisant les commandes suivantes : bash$ mysql mysql mysql> DELETE FROM user WHERE user = ”; mysql> UPDATE user SET password = password(’new_password’) WHERE user = ’root’; 41 Chapter 5. Administrer Bugzilla mysql> FLUSH PRIVILEGES; Ensuite, quand vous utiliserez le client mysql, vous devrez utiliser mysql -u root -p et entrer nouveau_mot_de_passe quand cela est demandé. 4. Si vous utilisez MySQL sur la même machine que votre serveur httpd, il faudrait penser à désactiver la communication en réseau à partir de MySQL en ajoutant ce qui suit à votre /etc/my.conf : [myslqd] # Prevent network access to MySQL. skip-networking 5. Vous aurez peut-être aussi envie de lancer MySQL, ou même tous les éléments de Bugzilla dans un environnement d’exécution restreint ["chroot jail"] ; toutefois, les instructions pour le faire n’entrent pas dans le cadre de ce document. 5.6.3. Comptes démons De nombreux démons, comme le httpd de Apache ou le mysqld de MySQL sont exécutés par défaut soit en tant que “root” soit en tant que “nobody”. L’exécution en tant que “root” crée des prolèmes de sécurité évidents, mais les problèmes créés en exécutant tout en tant que “nobody” ne semblent pas être aussi gênants. En gros, si vous exécutez tous les démons en tant que “nobody” et que l’un d’entre eux est compromis, ils sont tous compromis. Pour cette raison, il est recommandé de créer un compte utilisateur pour chaque démon. Note: Vous devrez fixer le webservergroup sur le groupe que vous avez créé pour le serveur Web pour l’exécuter comme cela est défini dans le localconfig. Cela permettra à ./checksetup.pl de mieux ajuster les permissions des fichiers de votre installation Bugzilla afin de ne pas avoir besoin de mettre les droits en écriture à tout le monde sur quoi que ce soit. 5.6.4. Contrôles d’accès au serveur Web Il y a beaucoup de fichiers qui sont placés dans la zone de répertoires de Bugzilla qui ne devraient pas être accessibles à partir d’Internet. A cause de la façon dont Bugzilla est actuellement disposé, la liste de ce qui devrait et de ce qui ne devrait pas être accessible est assez longue. Une nouvelle méthode d’installation est actuellement en cours de réalisation et devrait résoudre cela en permettant que les fichiers qui ne devraient pas être accessibles à partir d’Internet soient placés dans un répertoire à l’extérieur de la racine Internet. Reportez vous au bogue 44659 (http://bugzilla.mozilla.org/show_bug.cgi?id=44659) pour plus d’informations. • Dans le répertoire principal de Bugzilla, il faudrait : • Bloquer : *.pl, *localconfig*, runtests.sh, processmail, syncshadowdb • Mais rendre accessible : localconfig.js, localconfig.rdf 42 Chapter 5. Administrer Bugzilla • Dans data : • Bloquer tout • Mais rendre accessible : duplicates.rdf • Dans data/webdot : • Si vous utilisez un serveur webdot distant : • Bloquer tout • Mais rendre accessible *.dot seulement pour le serveur webdot distant • Dans le cas contraire, si vous utilisez un GraphViz local : • Bloquer tout • Mais rendre accessible : *.png, *.gif, *.jpg, *.map • Et si vous n’utilisez aucun fichier dot : • Bloquer tout • Dans Bugzilla : • Bloquer tout • Dans template : • Bloquer tout Tip: A l’état brut, Bugzilla a la possibilité de générer des fichiers .htaccess précisant à Apache quels fichiers doivent être accessibles ou non. Vous devriez faire des tests pour vous assurer que les fichiers cités ci-dessus ne sont pas accessibles à partir d’Internet, particulièrement le fichier localconfig qui contient votre mot de passe pour la base de données. Pour tester, faîtes simplement pointer votre navigateur Web vers le fichier ; par exemple, pour tester l’installation de mozilla.org, il faut essayer d’accéder à http://bugzilla.mozilla.org/localconfig. Vous devriez obtenir une erreur 403 Forbidden. Caution Ne pas suivre les instructions de cette partie, y compris ne pas faire le test, peut avoir pour conséquence de rendre accessibles au niveau mondial des informations sensibles. 43 Chapter 5. Administrer Bugzilla 5.7. Personnalisation des modèles ["Template Customisation"] L’une des évolutions importantes de la 2.16 a été l’utilisation de modèles pour toute l’interface côté utilisateur, en se servant de la Template Toolkit (http://www.template-toolkit.org). Les administrateurs peuvent maintenant configurer l’aspect et la convivialité de Bugzilla sans avoir à éditer des fichiers Perl ou à être confrontés au cauchemar des conflits massifs de fusion quand ils mettront à niveau avec une version plus récente à l’avenir. L’utilisation de modèles rend également possible, pour la première fois, les versions de Bugzilla adaptées selon la région. A l’avenir, une installation Bugzilla pourra avoir des modèles installés pour différentes régions, et sélectionner lesquels utiliser en se basant sur la langue choisie dans le navigateur de l’utilisateur. 5.7.1. Ce qu’il faut éditer Il y a deux façons différentes d’éditer des modèles de Bugzilla, et celle que vous utilisez dépend principalement de la manière dont vous mettez à jour Bugzilla. L’arborescence de répertoires des modèles est composée d’un répertoire de haut niveau template, qui contient un répertoire pour chaque région installée. Les modèles par défaut pour l’anglais sont par conséquent dans en. En dessous de ça, il y a un répertoire default et en option un répertoire custom. Le répertoire default contient tous les modèles fournis avec Bugzilla, alors que le répertoire custom n’existe pas a priori et doit être créé si vous souhaitez l’utiliser. La première méthode pour personnaliser les modèles est de les éditer directement dans template/en/default. C’est probablement la meilleure méthode pour de petites modifications si vous comptez utiliser la méthode de mise à niveau par CVS, parce qu’alors, si vous exécutez un cvs update, toute correction dans un modèle s’intègrera automatiquement dans les versions que vous aurez modifiées. Avec cette méthode, votre installation sera perdue si des conflits CVS surviennent. L’autre méthode consiste à copier les modèles dans une arborescence de répertoires mirroir sous template/en/custom. Les modèles dans ce répertoire annule automatiquement ceux par défaut. C’est la technique que vous devez utiliser si vous utilisez la méthode de mise à niveau par réécriture, parce qu’autrement vos modifications seront perdues. Cette méthode est également meilleure si vous utilisez la méthode de mise à niveau par CVS et que vous comptez faire des modifications majeures, car il est garanti que le contenu de ce répertoire ne sera pas touché au cours d’une mise à niveau, et vous pouvez alors décider soit de continuer en utilisant votre propre modèle, soit de faire l’effort d’intégrer à la main vos modifications dans les nouvelles versions. Avec cette méthode, votre installation peut être perdue si des modifications incompatibles sont faites à l’interface des modèles. Si de telles modifications sont faites, elles seront détaillées dans la notice de la version, à condition que vous utilisiez une version stable de Bugzilla. Si vous utilisez du code instable, vous devrez vous occuper de ça vous-même, bien que, si possible, les modifications seront citées, avant qu’elles ne se produisent, dans la partie "A éviter" de la notice de la précédente version stable. Note: N’éditez pas directement dans data/template/* les modèles compilés - vos modifications seront perdues quand Template Toolkit les recompilera. Note: Il est recommandé d’exécuter ./checksetup.pl après toute édition de modèle, en particulier si vous avez créé un nouveau fichier dans le répertoire custom. 44 Chapter 5. Administrer Bugzilla 5.7.2. Comment éditer des modèles La syntaxe du langage de la Template Toolkit dépasse le cadre de ce guide. Elle est assez facile à comprendre en regardant les modèles actuels ; ou, vous pouvez lire le manuel, disponible sur la page d’accueil de la Template Toolkit (http://www.template-toolkit.org). Toutefois, il faut surtout se rappeler (pour des raisons de sécurité) de toujours filtrer par rapport au langage HTML les données qui viennent de la base de données ou qui sont entrées par l’utilisateur, afin d’éviter les attaques par scripts à l’intérieur du site. Cependant, une chose à laquelle vous devriez apporter un soin particulier est la nécessité de filtrer correctement par rapport au langage HTML les données qui ont été transmises dans le modèle. Cela signifie que si les données sont susceptibles de contenir des caractères HTML spéciaux comme <, et que les données ne sont pas sensées être du HTML, elles doivent être converties sous la forme d’entité, c’est-à-dire < ; on utilise le filtre ’html’ de la Template Toolkit pour faire cela. Si vous ne le faîtes pas, vous pouvez exposer votre installation à des attaques par scripts à l’intérieur du site. Notez également que Bugzilla inclut de lui-même quelques filtres, qui ne sont pas dans la Template Toolkit standard. En particulier, le filtre ’url_quote’ peut convertir les caractères qui sont illégaux ou qui ont un sens particulier dans les URLs, comme &, en une forme encodée, c’est-à-dire %26. En fait, celui-ci encode la plupart des caractères (mais pas les plus fréquents comme les lettres et les nombres etc.), y compris les caractères HTML spéciaux, de cette manière, par la suite, vous n’avez jamais besoin de filtrer par rapport au langage HTML. Editer des modèles est une bonne façon de faire les "champs personnalisés du pauvre". Par exemple, si vous n’utilisez pas le Status Whiteboard, mais que vous souhaitez disposer d’une boîte d’entrée de texte de forme libre pour le "Build Identifier", alors vous pouvez contenter d’éditer les modèles pour changer le nom des champs. Ca s’appellera toujours status_whiteboard en interne, mais vos utilisateurs n’ont pas besoin de le savoir. Note: Si vous apportez des modifications aux modèles que vous souhaitez voir incluses dans le Bugzilla standard, il faut lire les parties correspondantes dans le guide des développeurs (http://www.bugzilla.org/developerguide.html). 5.7.3. Formats des modèles Certains CGIs sont capables d’utiliser plus d’un modèle. Par exemple, buglist.cgi peut générer des listes de bogues en RDF ou en 2 formes différentes de HTML (complexe et simple). (Faîtes un essai en ajoutant &format=simple à une URL de buglist.cgi sur votre installation Bugzilla.) Ce mécanisme, appelé modèle ’formats’, est extensible. Pour savoir si un CGI supporte plusieurs formats de sortie, effectuez un grep sur le CGI de "ValidateOutputFormat". S’il n’y en a pas, ajouter le support de plusieurs formats n’est pas trop dur - regardez comment c’est fait dans d’autres CGIs. Pour faire un nouveau modèle de format pour un CGI qui supporte ça, ouvrez un modèle actuel pour ce CGI et prenez note du commentaire INTERFACE (s’il est présent). Ce commentaire définit les variables qui sont passées dans ce modèle. S’il n’y en a pas, j’ai bien peur que vous deviez lire le modèle et le code pour voir ce que vous avez comme informations. Vous pouvez écrire votre modèle dans n’importe quel style de balisage ou de texte. Votre modèle sera affiché en tant que quel type de contenu? A vous de choisir. Ouvrez le fichier localconfig et trouvez la variable $contenttypes. Si votre type de contenu ne s’y trouve pas, ajoutez le. Mémorisez l’étiquette de trois ou quatre lettres affecté à votre type de contenu. Cette étiquette fera partie du nom de fichier du modèle. 45 Chapter 5. Administrer Bugzilla Enregistrez le modèle sous <stubname>-<formatname>.<contenttypetag>.tmpl. Testez le modèle en appelant le CGI par <cginame>.cgi?format=<formatname>. 5.7.4. Modèles particuliers Il y a quelques modèles qui pourraient vous intéresser tout particulièrement pour personnaliser votre installation. index.html.tmpl : C’est la page d’accueil de Bugzilla. global/header.html.tmpl : Il définit l’en-tête qui apparaît sur toutes les pages de Bugzilla. L’en-tête inclut la bannière, qui est ce qui apparaît aux utilisateurs et qui est probablement ce que vous voulez éditer plutôt que l’en-tête. Cependant, l’en-tête inclut également la section HTML HEAD, vous pourriez donc par exemple ajouter une feuille de style ou une balise META en éditant l’en-tête. global/banner.html.tmpl : Il contient la "bannière", la partie de l’en-tête qui apparaît en haut de toutes les pages de Bugzilla. La bannière par défaut est assez basique, vous voudrez donc probablement la personnaliser pour donner à votre installation son propre aspect et sa propre convivialité. Il est recommandé de conserver le numéro de version Bugzilla sous une forme qui permette de déterminer la version que vous utilisez, et que les utilisateurs sachent quelle documentation ils doivent lire. global/footer.html.tmpl : Il définit le pied de page qui apparaît sur toutes les pages de Bugzilla. En l’éditant, vous avez un autre moyen de donner rapidement son propre aspect et sa propre convivialité à votre installation Bugzilla. bug/create/user-message.html.tmpl : C’est un message qui apparaît près du haut de la page de soumission de bogues. En le modifiant, vous pouvez dire à vos utilisateurs comment soumettre des bogues. bug/create/create.html.tmpl and bug/create/comment.txt.tmpl : Vous souhaitez peut être que ceux qui soumettent des bogues donnent certains fragments d’information structurée, chacun dans un objet graphique d’entrée différent, pour lequel il n’y a pas de champs dans la base de données. Le système d’entrée de bogues a été conçu sous une forme extensible pour vous permettre de définir arbitrairement des champs et des objets graphiques, et que leurs valeurs apparaissent formatées dans la description initiale, plutôt que dans les champs de la base de données. Un exemple de cela est le formulaire guidé de soumission de bogue de mozilla.org (http://bugzilla.mozilla.org/enter_bug.cgi?format=guided) Pour que cela fonctionne, créez un modèle personnalisé pour enter_bug.cgi (le modèle par défaut, sur lequel vous pouvez vous baser, est create.html.tmpl), et soit vous l’appelez create.html.tmpl soit vous utilisez un format et l’appelez create-<formatname>.html.tmpl. Mettez-le dans le répertoire custom/bug/create. Dans celui-ci, ajoutez un objet graphique pour chaque fragment d’information que vous voulez qu’on récupère - comme un numéro de produit, ou un ensemble d’étapes à reproduire. Ensuite, créer un modèle comme custom/bug/create/comment.txt.tmpl, également suffixé par votre format si vous en utilisez un, qui référence les champs de formulaire que vous avez créés. Quand un rapport de bogue est soumis, le commentaire initial lié au rapport de bogue sera formaté conformément à la disposition de ce modèle. Par exemple, si votre modèle enter_bug possèdait un champ <input type="text" name="buildid" size="30"> et que votre comment.txt.tmpl avait BuildID: [% form.buildid %] alors BuildID: 20020303 46 Chapter 5. Administrer Bugzilla apparaîtrait dans le commentaire initial d’enregistrement. 5.8. Mettre à jour avec les nouvelles versions Mettre à niveau Bugzilla est quelque chose que nous voulons tous faire de temps en temps, pour avoir de nouvelles fonctionnalités ou pour obtenir les dernières corrections pour la sécurité. La facilité de mise à jour dépend de quelques facteurs. • Si la nouvelle version est une révision ou une nouvelle version intermédiaire • Combien de modifications locales ont été faites, s’il y en a Il y a également 3 méthodes pour mettre à niveau votre installation. 1. En utilisant CVS (Example 5-1) 2. En téléchargeant une nouvelle archive "tar" (Example 5-2) 3. En appliquant les programmes de correction appropriés (Example 5-3) Les options qui s’offrent à vous dépendent de la taille du saut que vous êtes en train de faire et/ou de votre configuration réseau. Les révisions sont normalement distribuées pour réparer des failles de sécurité et sont différenciées par le passage du troisième chiffre au chiffre supérieur. Par exemple, quand la 2.16.2 a été distribuée, c’était une révision de la 2.16.1. Les versions intermédiaires sont normalement distribuées quand l’équipe Bugzilla estime qu’un certain nombre d’avancées ont été faites depuis la dernière version intermédiaire. Celles-ci sont souvent précédées par une période de stabilisation et par des versions précommerciales, cependant l’utilisation des versions de développement ou des versions précommerciales dépasse le cadre de ce document. Les versions intermédiaires sont différenciées par le passage du deuxième chiffre, ou version mineure, au chiffre supérieur. Par exemple, la 2.16.2 est une version intermédiaire plus récente que la 2.14.5. Les exemples de cette partie sont écrits comme si vous mettiez à jour à la version 2.16.2. Les procédures sont les mêmes que vous mettiez à jour à une nouvelle version intermédiaire ou à une nouvelle révision. Toutefois, la probabilité d’avoir des problèmes augmente quand vous mettez à niveau avec une nouvelle version intermédiaire, surtout si vous avez fait des modifications locales. Ces exemples supposent également que votre installation Bugzilla est dans /var/www/html/bugzilla. Si ce n’est pas le cas, remplacez les chemins appropriés là où cela est nécessaire. Example 5-1. Mise à niveau avec CVS Chaque version de Bugzilla, que ce soit une révision ou une version intermédiaire, est étiquettée dans CVS. De plus, chaque archive "tar" que nous avons distribuée depuis la version 2.12 a été prévue pour utiliser CVS. Cependant, cela implique que vous puissiez avoir accès à cvs-mirror.mozilla.org sur le port 2401. Tip: Si vous pouvez le faire, mettre à jour avec CVS est probablement la méthode la plus simple, surtout si vous avez beaucoup de modifications locales. 47 Chapter 5. Administrer Bugzilla bash$ cd /var/www/html/bugzilla bash$ cvs login Logging in to :pserver:[email protected]:2401/cvsroot CVS password: anonymous bash$ cvs -q update -r BUGZILLA-2_16_2 -dP P checksetup.pl P collectstats.pl P globals.pl P docs/rel_notes.txt P template/en/default/list/quips.html.tmpl Caution Si une ligne dans la sortie du cvs update commence par un C, cela représente un fichier avec des modifications locales que CVS n’a pas pu intégrer correctement. Vous devez résoudre ces conflits manuellement pour que Bugzilla (au moins la partie de Bugzilla qui utilise ce fichier) soit utilisable. Note: Vous devez également lancer ./checksetup.pl pour terminer votre mise à jour de Bugzilla Example 5-2. Mise à niveau avec l’archive "tar" Si vous ne pouvez ou ne voulez pas utiliser CVS, une alternative toujours disponible est de télécharger la dernière archive "tar". C’est la solution la plus difficile à utiliser, surtout si vous avez des modifications locales. bash$ cd /var/www/html bash$ wget ftp://ftp.mozilla.org/pub/webtools/bugzilla-2.16.2.tar.gz Output omitted bash$ tar xzvf bugzilla-2.16.2.tar.gz bugzilla-2.16.2/ bugzilla-2.16.2/.cvsignore bugzilla-2.16.2/1x1.gif Output truncated bash$ cd bugzilla-2.16.2 bash$ cp ../bugzilla/localconfig* . bash$ cp -r ../bugzilla/data . bash$ cd .. bash$ mv bugzilla bugzilla.old bash$ mv bugzilla-2.16.2 bugzilla bash$ cd bugzilla bash$ ./checksetup.pl Output omitted 48 Chapter 5. Administrer Bugzilla Warning Les commandes cp se terminent toutes les deux par un point ce qui est un détail très important, cela informe l’interpréteur de commandes système que le répertoire de destination est le répertoire de travail actuel. En outre, le point au début du ./checksetup.pl est important et ne doit pas être oublié. Note: Vous devrez maintenant refaire manuellement toutes les modifications que vous aviez faites à votre installation locale. Example 5-3. Mise à niveau avec les programmes de correction Normalement, l’équipe Bugzilla fera un fichier de correction pour les révisions pour passer de la révision la plus récente à la nouvelle. Vous pouvez également lire la notice et récupérer les programmes de correction associés au bogue mentionné, mais il est plus sûr d’utiliser les fichiers de correction distribués car les programmes de correction sont parfois modifiés avant d’être enregistrés (pour les corrections orthographiques mineures et le reste du même acabit). Il est également possible théoriquement de chercher dans la liste des bogues réparés et de choisir quels programmes de correction d’une version intermédiaire appliquer, mais ce n’est pas recommandé non plus puisque votre Bugzilla deviendra un espèce de salmigondis qui ne correspond véritablement à aucune version. Cela le rendrait aussi plus difficile à mettre à jour à l’avenir. bash$ cd /var/www/html/bugzilla bash$ wget ftp://ftp.mozilla.org/pub/webtools/bugzilla-2.16.1-to-2.16.2.diff.gz Output omitted bash$ gunzip bugzilla-2.16.1-to-2.16.2.diff.gz bash$ patch -p1 < bugzilla-2.16.1-to-2.16.2.diff patching file checksetup.pl patching file collectstats.pl patching file globals.pl Caution Si vous faîtes ça, méfiez-vous car cela ne modifie pas la totalité de votre répertoire CVS, cela peut donc rendre les mises à jour par CVS plus difficiles par la suite. 49 Chapter 5. Administrer Bugzilla 5.9. Intégrer Bugzilla avec des outils Third-Party 5.9.1. Bonsai Bonsai est un outil orienté web pour contrôler CVS, le système de gestion de versions et de concurrence. En utilisant Bonsai, les administrateurs peuvent contrôler les états ouverts/fermés des arbres, interroger une base de données relationnelle rapide principale pour le changement, relier, et commenter des informations, et voir les changements effectués depuis la dernière fois que l’arbre a été fermé. Bonsai intègre également avec Tinderbox, le système de gestion automatisé de construction de Mozilla. 5.9.2. CVS L’intégration de CVS est mieux réalisée, en ce moment, en utilisant l’entrée Email de Bugzilla. Suivez les instructions de ce guide pour permettre l’intégration des E-mail dans Bugzilla. Assurez-vous que vos scripts d’inscription envoie un email à l’entrée E-mail de Bugzilla avec le sujet "[Bug XXXX]", et vous pouvez faire ajouter des commentaires d’inscriptions CVS à votre bogue Bugzilla. Si vous voulez que le bogue se ferme automatiquement, vous devrez modifier le scriptcontrib/bugzilla_email_append.pl. Il y a également un projet CVSZilla, basé sur un code de Bugzilla qui date, pour intégrer CVS et Bugzilla grâce aux capacités de CVS à envoyer des emails. Contrôlez-le à l’adresse : http://homepages.kcbbs.gen.nz/~tonyg/ (http://homepages.kcbbs.gen.nz/~tonyg/). 5.9.3. Perforce SCM Vous pouvez trouver la page de projet pour l’intégration de Bugzilla et de Teamtrack Perforce (p4dti) à l’adresse : http://www.ravenbrook.com/project/p4dti (http://www.ravenbrook.com/project/p4dti/) . “p4dti” est maintenant un produit officiellement supporté de Perforce, et vous pouvez trouver la page p4dti "Perforce Public Depot" à l’adresse http://public.perforce.com/public/perforce/p4dti/index.html (http://public.perforce.com/public/perforce/p4dti/index.html) . L’intégration de Perforce avec Bugzilla, une fois que les patches sont installés, se fait sans difficulté. Les informations de réplication de Perforce apparaîtront au-dessous des commentaires de chaque bogue. Soyez certain que vous avez un ensemble assorti de patches pour la version de Bugzilla que vous êtes en train d’installer. p4dti est conçu pour être compatible avec les traqueurs à multiples défauts, et pour mettre à jour sa propre documentation dans ce but. Veuillez consulter les pages en lien ci-dessus pour de plus amples informations. 5.9.4. Tinderbox/Tinderbox2 Nous avons besoin des informations d’intégration de Tinderbox. 50 Appendix A. La foire aux questions de Bugzilla Cette FAQ contient des questions qui ne sont pas traitées ailleurs dans ce guide. 1. Questions générales 1.1. Où trouver des informations sur Bugzilla ? Vous pouvez rester à jour grâce aux dernières informations concernant Bugzilla sur http://www.bugzilla.org/ (http://www.bugzilla.org/) 1.2. Sous quelle licence Bugzilla est-il distribué ? Bugzilla est couvert par la Mozilla Public License. Pour plus de détails, voir http://www.mozilla.org/MPL/ (http://www.mozilla.org/MPL/) 1.3. Comment obtenir une assistance commerciale pour Bugzilla ? http://bugzilla.org/consulting.html contient une liste de personnes et d’entreprises qui nous ont demandé de les faire apparaître en tant que consultant pour Bugzilla. www.collab.net (http://www.collab.net/) propose Bugzilla dans son offre destinée aux grands projets. Ils demandent une contrepartie financière qui reste assez élevée et ne sont généralement pas intéressés par des projets de faible envergure. On trouve plusieurs inconditionnels de Bugzilla expérimentés sur la liste de diffusion ou le forum et qui sont disposés à rendre service en échange d’une généreuse indemnité. Essayez en envoyant un message à la liste de diffusion pour rechercher un volontaire. 1.4. Quelles sont les entreprises ou les projets de grande envergure qui utilisent actuellement Bugzilla pour le suivi de bogues ? Il existe des dizaines d’entreprises de première importance équipées de sites publiques Bugzilla afin de suivre les bogues au sein de leurs produits. En voici quelques unes : Netscape/AOL Mozilla.org NASA Red Hat Software SuSe Corp The Horde Project AbiSource Real Time Enterprises, Inc Eggheads.org Strata Software RockLinux Creative Labs (créateurs de SoundBlaster) The Apache Foundation The Gnome Foundation Ximian Linux-Mandrake Il suffit de dire qu’il y a assez de projets de grande envergure qui utilisent Bugzilla pour affirmer qu’il est extrêmement populaire. 51 Appendix A. La foire aux questions de Bugzilla 1.5. Qui assure la maintenance de Bugzilla ? Une équipe de base ([email protected]). (http://www.bugzilla.org/who_we_are.html), dirigée par Dave Miller 1.6. Que vaut Bugzilla par rapport aux autres bases de données pour le suivi des bogues ? Nous n’avons pu trouver aucune étude comparative entre Bugzilla et d’autres logiciels de suivi de défauts. Si vous en connaissez, merci de nous contacter. Néanmoins, d’après l’expérience personnelle de l’auteur au sujet des autres systèmes de suivi de bogues, Bugzilla offre des performances supérieures sur le matériel grand public, à un meilleur prix (gratuit !), plus de fonctionnalités facilitant la tâche des développeurs (comme la sauvegarde des requêtes, l’intégration du courrier électronique et l’indépendance vis-à-vis de la plate-forme.), une adaptabilité améliorée, un code source libre, une plus grande fléxibilité et une plus grande facilité d’emploi. Si vous êtes vendeur d’un système de suivi de bogues commercial, merci de vous faire connaître et de nous remettre une liste des avantages de votre produit par rapport à Bugzilla. Nous serions heureux de l’inclure dans notre section ’concurrents’. 1.7. Pourquoi Bugzilla ne propose-t-il pas telle ou telle fonctionnnalité ou compatibilité avec cet autre logiciel de suivi de bogues ? Il se peut que le support n’ait pas encore été développé ou que vous ne l’ayez pas trouvé. Bugzilla fait de grands progrès en terme de facilité d’emploi, de personnalisation, d’adaptabilité et d’interface utilisateur. Il est largement considéré comme le plus complet et le plus populaire des logiciels libres existant pour le suivi de bogues. Ceci ne signifie pas que Bugzilla ne peut pas connaître d’améliorations ! Vous pouvez participer au projet, soit en élaborant vous même une correction qui réalise la fonctionnalité que vous désirez, soit en soumettant une RFE (Request For Enhancement) via l’interface de soumission des bogues disponible sur bugzilla.mozilla.org (http://bugzilla.mozilla.org/enter_bug.cgi?product=Bugzilla). 1.8. Pourquoi MySQL ? J’aimerais voir Bugzilla fonctionner avec Oracle/Sybase/Msql/PostgreSQL/MSSQL. Au départ, MySQL a été choisi car il était gratuit, facile à installer et compatible avec le matériel sur lequel Netscape comptait le faire fonctionner. Le travail est actuellement en cours pour faire fonctionner Bugzilla avec PostgreSQL et Sybase dans la distribution par défaut. Vous pouvez suivre l’avancement de ces initiatives repectivement dans les bogues 98304 (http://bugzilla.mozilla.org/show_bug.cgi?id=98304) et 173130 (http://bugzilla.mozilla.org/show_bug.cgi?id=173130). Une fois ces deux tâches réalisées, ajouter la prise en compte de bases de données supplémentaires devrait être une opération banale. 52 Appendix A. La foire aux questions de Bugzilla 1.9. Pourquoi les scripts référencent-ils /usr/bonsaitools/bin/perl plutôt que /usr/bin/perl ou autre ? Mozilla.org se servait de /usr/bonsaitools/bin/perl, car à l’origine Terry désirait bénéficier d’un emplacement qui soit entièrement sous son contrôle pour installer une version de Perl ainsi que d’autres outils. Note: Cet usage a été abandonné lors du cycle de développement 2.17 donc ce ne sera plus un problème lorsque la version 2.18 verra le jour. 1.10. Existe-il un moyen simple de changer le nom des cookies de Bugzilla ? Pas pour le moment. 2. Questions relatives à la gestion d’entreprises Note: Des questions susceptibles d’être posées par les cadres de direction. 2.1. Bugzilla est-il un logiciel Web ou bien nécessite-t-il des logiciels particuliers ou un système d’exploitation spécial sur la machine ? Il utilise le Web et la messagerie électronique. Vous pouvez éditer des bogues en envoyant un courrier électronique formatté d’une certaine manière à un Bugzilla correctement configuré, ou alors effectuer l’opération par l’intermédiaire du Web. 2.2. Bugzilla peut-il se combiner avec Perforce (logiciel SCM) ? Oui ! Vous trouverez de plus amples informations ailleurs dans "Le guide de Bugzilla" au sein de la partie "Intégration de logiciels tiers". 2.3. Bugzilla permet-il à l’utilisateur de suivre les bogues au sein de plusieurs projets ? Parfaitement ! Vous pouvez effectuer le suivi d’un nombre illimité de produits, pouvant chacun être composé d’un nombre illimité de composants. Note: Seuls 55 groupes sont disponibles dans la version 2.16 de Bugzilla. Si vous utilisez les groupes de produits, le nombre de produits dont vous pouvez disposer sera par conséquent limité. Cette limitation n’apparaît pas dans les versions de développement 2.17 actuelles et n’apparaîtra pas dans la version 2.18. 2.4. Si je participe à plusieurs projets et que je recherche l’ensemble des bogues dont je suis chargé, Bugzilla m’en établira-t-il une liste et me permettra-t-il de les trier par projet, par gravité, etc ? Oui. 53 Appendix A. La foire aux questions de Bugzilla 2.5. Bugzilla admet-il les pièces jointes (texte, capture d’écran, adresses Web, etc)? Si oui, y en a-t-il qui ne sont pas autorisées ? Oui - tous les types de pièces jointes sont permis, bien que les administateurs puissent configurer une taille maximale. Bugzilla donne à l’utilisateur la possibilité soit d’utiliser le type-MIME proposé par le naviguateur, soit de choisir à partir d’une liste pré-définie, soit de taper manuellement n’importe quel type-MIME arbitraire. 2.6. Bugzilla nous permet-il de définir nos propres priorités et niveaux ? Avons nous l’entière liberté de modifier les libellés des champs ainsi que leur format et le choix des valeurs admises ? Oui. Cependant, modifier certains champs, notamment ceux liés aux états de progression des bogues, nécessite aussi d’ajuster la logique du programme pour compenser le changement. Pour le moment, il n’existe pas d’interface utilisateur graphique (GUI) pour ajouter des champs dans Bugzilla. Vous pouvez suivre le développement de cette fonctionnalité sur http://bugzilla.mozilla.org/show_bug.cgi?id=91037. 2.7. Bugzilla propose-t-il des fonctions de rapports d’état, des métriques, des graphes, etc ? Vous savez, le genre de trucs que les chefs aiment bien voir. :) Oui. Jettez un coup d’oeil à http://bugzilla.mozilla.org/reports.cgi, vous y trouverez des extraits de ce que Bugzilla sait faire en terme de génération de rapports et de graphiques. Si vous n’obtenez pas les rapports désirés à partir des scripts de rapports fournis, il est possible d’inclure un paquetage professionnel pour les rapports comme par exemple Crystal Reports qui utilise ODBC. Si vous choisissez de procéder ainsi, faites attention au fait que donner un accès direct à la base de données peut avoir des effets sur la sécurité. Même si vous donnez un accès en consultation seule à la base de données, il y aura contournement des éléments de sécurité des bogues de Bugzilla. Note: Les versions de développement actuelles peuvent faire bien plus en terme de rapports. Pour voir des exemples, consultez http://bugzilla.mozilla.org/report.cgi. 2.8. Existe-t-il une notification par courrier électronique et si oui que voit-on lorsque l’on reçoit un courrier électronique ? La notification par courrier électronique est configurable par l’utilisateur. Par défaut, l’identifiant du bogue et un résumé de son rapport accompagne chaque notification par courrier électronique, ainsi qu’une liste des changements effectués. 2.9. La notification par courrier électronique peut-elle être configurée pour l’envoi à plusieurs personnes, certaines sur la liste To, la liste CC, la liste BCC, etc ? Oui. 54 Appendix A. La foire aux questions de Bugzilla 2.10. Les utilisateurs doivent-ils disposer d’un type particulier d’application pour les courriers électroniques ? Les courriers électroniques de Bugzilla sont envoyés en texte simple, le format de courrier le plus compatible sur la planète. Note: Si vous décidez d’utiliser les caractéristiques d’intégration de bugzilla_email pour permettre à Bugzilla d’enregistrer les réponses aux courriers électroniques avec les bogues associés, vous devrez peut-être prévenir vos utilisateurs de configurer leur logiciel de courrier électronique pour répondre aux messages dans le format où ils ont été reçus. Pour des raisons de sécurité, Bugzilla ignore les balises HTML en commentaire et si un utilisateur envoie un courrier électronique en HTML à Bugzilla, le commentaire résultant sera carrément illisible. 2.11. Bugzilla permet-il d’importer et d’exporter des données ? Si des personnes extérieures rédigent un rapport de bogue avec un ’template’ de bogue MS Word, ce ’template’ peut-il être importé dans les champs correspondant ? Si je veux obtenir le résultat d’une requête et exporter cette donnée vers MS Excel est-ce possible ? Bugzilla peut seulement exporter des listes de bogues en HTML dans sa version 2.16. Il existe d’autres formats disponibles (CSV et RDF) dans les versions de développement plus récentes. Bugzilla peut exporter des bogues en utilisant xml.cgi avec soit un numéro de bogue soit une liste de numéros de bogue. Actuellement le seul script livré avec Bugzilla qui peut importer des données est importxml.pl qui est destiné à l’importation de données générées par xml.cgi associées au déplacement de bogues. Toute autre utilisation est laissée à la disposition de l’utilisateur s’il souhaite s’exercer. Il y a aussi des scripts inclus dans le répertoire contrib/ pour l’utilisation des courriers électronique afin d’importer des données dans Bugzilla, mais ces scripts ne sont pas pris en charge actuellement et sont inclus dans un but pédagogique. 2.12. Quelqu’un a-t-il traduit Bugzilla dans une autre langue afin de l’utiliser dans d’autres pays ? Bugzilla possède-t-il des paramètres régionaux ? Oui. Pour plus d’informations ainsi que les traductions des ’templates’ disponibles, consultez http://www.bugzilla.org/download.html#localizations. Les interfaces d’administration ne sont pas encore incluses dans les ’templates’ traduits et sont par conséquent toujours en anglais. Il peut également y avoir des problèmes si le jeu de caractères n’est pas défini. Voir le bogue 126226 (http://bugzilla.mozilla.org/show_bug.cgi?id=126266) pour plus d’informations. 2.13. Un utilisateur peut-il créer et sauvegarder des rapports ? Peut-il le faire au format Word ? Au format Excel ? Oui. Non. Pas dans la version 2.16. 2.14. Bugzilla peut-il effectuer une recherche par mot, par groupe de mots, une recherche composée ? Vous n’avez même pas idée. L’interface de requête de Bugzilla, en particulier avec les opérateurs booléens avancés, est incroyablement polyvalente. 55 Appendix A. La foire aux questions de Bugzilla 2.15. Bugzilla utilise-t-il le verrouillage des enregistrement lorsqu’il y a des accès simultanés au même bogue ? La deuxième personne est-elle informée que le bogue est en cours d’utilisation ou comment sont-ils avertis tous les deux ? Bugzilla ne verrouille pas les enregistrements. Il permet la détection des accès concurrentiels, et offre le choix des options pour traiter le conflit à l’utilisateur fautif. 2.16. Existe-il des fonctions de sauvegarde ? MySQL,la base de donnée principale de Bugzilla, permet la reprise à chaud pour les données. Vous pouvez trouver des stratégies pour traiter des problèmes de sauvegarde sur http://www.mysql.com/doc/B/a/Backup.html (http://www.mysql.com/doc/B/a/Backup.html) 2.17. Les utilisateurs peuvent-ils utiliser le système alors qu’une sauvegarde est en cours ? Oui. Cependant, les validations de transaction dans la base de données doivent attendre que les tables soient débloquées. Les bases de données Bugzilla sont généralement très petites et les sauvegardes prennent systématiquement moins d’une minute. 2.18. Comment puis-je mettre à jour le code et la base de données avec CVS ? 1. Faites une sauvegarde de votre répertoire Bugzilla et de votre base de données. Pour le répertoire de Bugzilla, il suffit de faire un cp -rp bugzilla bugzilla.bak. Pour la base de données, il existe un certain nombre d’options - consultez la documentation MySQL et choisissez celle qui vous convient le mieux (le moyen le plus simple est de faire une copie physique de la base de données sur le disque dur, mais pour cela vous devez faire éteindre le serveur de la base de données afin d’éviter tout risque de perte de données). 2. Placez vous dans le répertoire de Bugzilla. 3. Tapez cvs -q update -AdP si vous voulez tout mettre à jour ou cvs -q update -dP -rTAGNAME si vous voulez une version spécifique (dans ce cas remplacez TAGNAME par un nom de fichier CVS similaire à BUGZILLA-2_16_5). Si vous n’avez fait aucun changement localement, ça devrait être parfait. Si vous avez effectué des changements en local, vérifiez la présence de résultats notés C en sortie de CVS. Si vous obtenez des lignes commencant par C, cela signifie qu’il existe des conflits entre vos changements locaux et ce qui se trouve sur le CVS. Vous devrez régler cela à la main avant de pouvoir continuer. 4. Après avoir résolu tout conflit généré par l’opération de mise à jour du CVS, l’exécution ./checksetup.pl se chargera de mettre à jour la base de données pour vous ainsi que tout autre changement nécessaire pour que la nouvelle version puisse fonctionner. Warning Une fois que vous avez exécuté checksetup.pl, le seul moyen de revenir en arrière est de restaurer les sauvegardes de la base de données. Vous ne pourrez pas ramener le système à sa version initiale de manière propre dans la plupart des cas. 56 Appendix A. La foire aux questions de Bugzilla 2.19. Quel type de ressources humaines faut-il dans l’équipe pour installer et assurer la maintenance de Bugzilla ? Pour être plus précis, quelles compétences sont nécessaires à la personne ? J’ai besoin de savoir, si nous devions utiliser Bugzilla, quel type de personnes devrons-nous embaucher et combien cela nous coûtera-t-il comparé à l’achat d’une solution prête à l’emploi ? Si Bugzilla est configuré correctement dès le début, les besoins pour la maintenance continue sont minimes et peuvent être réalisés facilement via l’interface Web. Les logiciels de suivi de bogues commerciaux coûtent généralement au delà de $20,000 ou plus pour entre 5 et 10 licences partagées. Des conseils pour Bugzilla sont donnés par les spécialistes, membres de la liste de diffusion.On y trouve aussitôt les réponses aux questions simples. 2.20. En terme de durée, que doit-on prévoir si nous décidons d’embaucher du personnel pour installer et assurer la maintenance de Bugzilla ? Est-ce quelque chose qui prend des heures ou des semaines pour installer et deux ou trois heures par semaine pour assurer la maintenance et l’adaptation à nos besoins ou bien est-ce un processus d’installation de plusieurs semaines, plus un travail à plein temps pour une personne ou deux, etc ? Cela dépend complètement de ce que vous voulez y mettre. Quelqu’un avec beaucoup d’expérience sur Bugzilla peut tout mettre sur pied et en état de marche en moins d’une journée, et votre installation Bugzilla peut fonctionner sans soin particulier pendant des années. Si votre stratégie Bugzilla est cruciale par rapport à votre plan de travail d’entreprise, embauchez quelqu’un avec des compétences raisonnables en UNIX et en Perl pour conduire votre gestion de processus ainsi que la maintenance et la personnalisation de votre suivi de bogues. 2.21. Y a-t-il des droits de licence ou d’autres frais pour l’utilisation de Bugzilla ? D’autres coût marginaux que les personnes nécessaires comme exposé ci-dessus ? Non. MySQL vous propose, si vous appréciez la valeur de leur produit, de souscrire à un contrat d’assistance, qui convient à vos besoins. 3. La sécurité de Bugzilla 3.1. Comment désactiver complètement la sécurité dans MySQL si elle me cause des problèmes (j’ai suivi les instructions de la partie installation de ce guide) ? Exécutez MySQL comme suit :"mysqld --skip-grant-tables". Souvenez vous que cela rend MySQL aussi sûr que de de scotcher un billet de 100 $ par terre dans les toilettes d’un stade de foot pour ne pas se le faire piquer. 3.2. Y a-t-il des problèmes de sécurité avec Bugzilla ? Le code de Bugzilla a subit un audit de sécurité relativement complet, et les scripts CGI de présentation pour les utilisateurs sont exécutés avec l’option taint de Perl. Cependant il est recommandé d’examiner attentivement les permissions de votre installation de Bugzilla et de suivre les recommandations en matière de sécurité dans le guide Bugzilla. 3.3. J’ai mis en oeuvre les modifications mentionnées dans le rapport de sécurité de Chris Yeh du 10/05/2000 conseillant de ne pas exécuter MySQL en tant que root et je rencontre des problèmes avec MySQL qui ne fonctionne plus correctement. Il s’agit d’un problème fréquent, lié au fait de ne plus avoir de descripteur de fichier. Ajoutez simplement "ulimit -n unlimited" dans le script qui démarre mysqld. 4. Les courriers électroniques de Bugzilla 57 Appendix A. La foire aux questions de Bugzilla 4.1. J’ai un utilisateur qui ne veut plus recevoir de courriers électroniques de Bugzilla. Comment les arrêter complètement pour cet utilisateur ? L’utilisateur doit pouvoir régler cela dans les préférences de courrier électronique de l’utilisateur (décocher toutes les boîtes) ou vous pouvez ajouter son adresse électronique dans le fichier data/nomail. 4.2. Je suis en train d’évaluer/tester Bugzilla et je ne veux pas qu’il envoie des mails à toute autre personne que moi. Comment faire ? Editez le paramètre "newchangedmail". Remplacez "To:" par "X-Real-To:", "Cc:" par "X-Real-CC:", et ajoutez "To: <votreadresseemail>". 4.3. Je souhaite que whineatnews.pl génère une réclamation pour un fait supplémentaire, ou autre chose que pour signaler de nouveaux bogues. Comment faire ? Essayez l’excellent correctif de Klaas Freitag pour la fonctionnalité "whineatassigned". Vous pourrez la trouver sur http://bugzilla.mozilla.org/show_bug.cgi?id=6679. Ce correctif est pour une ancienne version de Bugzilla, vous devrez donc effectuer les modifications manuellement. 4.4. Je n’aime pas/ne veux pas utiliser Procmail pour transférer les courriels à bug_email.pl. Quelles sont les solutions ? Vous pouvez appeler bug_email.pl directement à partir de votre fichier d’alias, avec une commande comme celle-ci : bugzilla-daemon: "|/usr/local/bin/bugzilla/contrib/bug_email.pl" Cependant, c’est assez délicat et sujet à problèmes; vous devez aussi configurer votre smrsh (sendmail restricted shell) pour permettre cela. A la rigueur cela peut tout de même marcher. 4.5. Comment régler l’interface de courrier électronique pour soumettre/changer des bogues par courrier électronique ? Vous trouverez un fichier README.mailif mis à jour dans le répertoire contrib/ de votre distribution Bugzilla qui vous guidera dans la configuration. 4.6. Les courriers électroniques venat de Bugzilla mettent un temps fou pour me parvenir -- C’est extrêmement lent. Qu’est-ce qui se passe ? Si vous utilisez un Mail Transfer Agent (Serveur de Courriers Electroniques) différent (un MTA autre que sendmail), assurez vous que les options fixées dans le "processmail" ainsi que dans les autres scripts pour toutes les instances de sendmail conviennent à votre MTA. Si vous utilisez sendmail, essayez en activant "sendmailnow" dans editparams.cgi. Si vous utilisez Postfix, vous devrez aussi activer “sendmailnow”. 4.7. Comment se fait-il que les courriers électroniques concernant les modifications sur Bugzilla ne me parviennent pas ? Assurez vous que vous n’avez pas désactivé les courriers électroniques dans vos préférences d’utilisateur. Vérifiez que Bugzilla est capable d’envoyer des courriers électroniques en cliquant sur le lien "Connexion" ["Log In"] de votre installation Bugzilla puis en cliquant sur le bouton "Envoyez moi un mot de passe par courrier électronique" ["E-mail me a password"] après avoir entré votre adresse électronique. 58 Appendix A. La foire aux questions de Bugzilla Si vous ne recevez pas de courrier électronique de Bugzilla, il ya des chances que vous n’ayez pas sendmail dans "/usr/lib/sendmail". Assurez-vous que sendmail se trouve à l’intérieur ou qu’il existe un lien symbolique pointant vers lui dans "/usr/lib/sendmail". 5. La base de données de Bugzilla 5.1. J’ai entendu dire que Bugzilla pouvait être utilisé avec Oracle ? L’ancienne version de Bugzilla pour Red Hat (Basé sur la version 2.8) fonctionnait sur Oracle. La nouvelle version pour Red Hat (basée sur la version 2.17.1 et sur le point d’être intégrée dans la distribution principale) fonctionne avec PostgreSQL. Pour le moment, nous n’avons pas connaissance d’un portage de Bugzilla sur Oracle mais nous prévoyons bien de le prendre en charge dans le futur (probablement pour la version 2.20). 5.2. Je pense que ma base de données doit être altérée, ou bien qu’elle contient des entrées non-valides. Que faire ? Exécutez l’utilitaire de “bilan de santé” (./sanitycheck.cgi dans le répertoire Bugzilla_home) via votre naviguateur internet pour voir ! Si il se termine sans erreur, vous n’avez à priori aucun problème. S’il ne se termine pas bien (c’est à dire avec des messages en rouge), certaines choses peuvent être réparées par Bugzilla et d’autres non. Si la réparation est impossible, j’éspère pour vous que vous avez l’habitude des commandes d’administration d’une base de données mysql ou bien que vous avez installé un autre moyen d’administrer votre base de données. Le bilan de santé, bien qu’étant un bon test de base pour vérifier l’intégrité de votre base de données, ne remplace en aucun cas une administration compétente de la base de données ni n’évite la suppression de données. Il n’est pas exhaustif et a été crée pour effectuer une vérification de base sur les problèmes les plus communs dans des bases de données Bugzilla. 5.3. Je veux éditer à la main des entrées dans ma base de données. Comment faire ? Il n’existe pas de moyen de faire cela dans Bugzilla lui-même. De plus ce n’est généralement pas une tâche que l’on peut rapidement réaliser si l’on ne sait pas exactement ce qu’on veut faire. Cependant si vous connaissez le SQL, vous pouvez utiliser mysql en ligne de commande pour insérer, supprimer et modifier les informations d’une table à la main. Des client graphiques plus intuitifs sont également disponibles. Les favoris de l’équipe Bugzilla sont phpMyAdmin (http://www.phpmyadmin.net/) et MySQL Control Center (http://www.mysql.com/downloads/gui-mycc.html). 5.4. Je pense que j’ai correctement réglé les permissions de MySQL mais Bugzilla ne parvient toujours pas à se connecter. Essayez d’exécuter MySQL à partir de son fichier binaire : "mysqld --skip-grant-tables". Cela vous permettra de complètement contourner les permissions sur les tables qui sont la cause de votre frustration. Si dans ce cas Bugzilla est capable de se connecter, vous devez vérifier que vous avez donné les bonnes permissions au couple utilisateur - mot de passe défini dans localconfig. Warning Exécuter MySQL avec cette option dans la ligne de commande n’est pas sûr du tout et doit être uniquement effectué dans le cadre d’une démarche de dépannage lorsque l’on est pas connecté au réseau extérieur. 59 Appendix A. La foire aux questions de Bugzilla 5.5. Comment est-ce que je fais pour synchroniser les informations sur les bogues entre plusieurs bases de données ? En fait, vous pouvez synchroniser ou déplacer les bogues. La synchronisation s’opèrera uniquement dans un sens -- vous avez la possibilité de créer une copie de la base en lecture seule sur un site et la faire mettre à jour à partir de la base de données principale à intervalles réguliers. MySQL intègre des fonctionnalités de synchronisation dans les dernières versions. Ce serait une bonne idée si quelqu’un se penchait sur les possibilités dans ce domaine et proposait un compte rendu sur le forum expliquant comment synchroniser efficacement deux installations de Bugzilla. Si vous avez simplement besoin de transférer des bogues d’un Bugzilla à un autre jetez un coup d’oeil au script "move.pl" dans la distribution de Bugzilla. 6. Bugzilla et Win32 6.1. Quel est le moyen le plus facile d’utiliser Bugzilla sur Win32 (Win98+/NT/2K) ? Enlevez Windows. Installez Linux. Installez Bugzilla. La chef ne verra jamais la différence. 6.2. Existe-t-il un équivalent de "Bundle::Bugzilla" pour Win32? Pas pour le moment. Bundle::Bugzilla simplifie énormément l’installation de Bugzilla sur les systèmes UNIX. Si quelqu’un se porte volontaire pour réaliser un bundle PPM (module pour le gestionnaire de packetages de Perl) qui convient à Win32, une telle initiative sera appréciée. 6.3. Des fichiers CGI plantent avec une erreur "quelquechose.cgi is not a valid Windows NT application" (quelquechose.cgi n’est pas une application Windows NT valide). Pourquoi ? En fonction du serveur Web que vous utilisez, vous devez configurer celui-ci pour traiter les fichier *.cgi comme des scripts CGI. Pour IIS, vous pouvez faire cela en ajoutant *.cgi dans la mise en correspondance des applications (App Mapppings) avec <path>\perl.exe %s %s comme exécutable. Microsoft donne quelques indications à ca sujet, comme suit : "Configurer la mise en correspondance des applications. Dans l’ISM, liez l’extension du ou des fichier(s) script à l’exécutable de l’interpréteur du script. Par exemple, vous devez faire correspondre l’extension .py à Python.exe, l’exécutable de l’interpréteur de scripts Python. Notez que pour l’interpréteur de scripts Perl ActiveState, l’extension .pl est associée à PerIIS.dll par défaut. Si vous voulez changer l’association pour .pl par perl.exe, vous devez changer la correspondance d’applications. Dans la correspondance, vous devez ajouter deux caractères pourcent (%) à la fin du chemin jusqu’à perl.exe, comme montré dans cet exemple : c:\perl\bin\perl.exe %s %s" 6.4. J’ai des problèmes avec les modules de perl pour NT qui n’arrivent pas à communiquer avec la base de données. Vos modules sont peut-être obsolètes ou inappropriés. Essayez ce qui suit : 1. Tapez http://www.activestate.com/ActivePerl 2. Téléchargez ActivePerl 60 Appendix A. La foire aux questions de Bugzilla 3. Lancez votre invite de commande. 4. Tapez ’ppm’ 5. PPM> install DBI DBD-mysql GD Je pense que TimeDate et Date::Dumper sont inclus dans activeperl. Vous pouvez aller vous renseigner sur le site d’ActiveState à propos des packages pour l’installation via PPM. http://www.activestate.com/Packages/ ( http://www.activestate.com/Packages/) 7. Utilisation de Bugzilla 7.1. Comment est-ce que je fais pour changer mon nom d’utilisateur (adresse de courrier électronique) dans Bugzilla ? Nouveau dans la version 2.16 - allez dans la section compte dans les préférences. Vous recevrez un courrier électronique aux deux adresses pour confirmation. 7.2. La page pour les requêtes est très troublante. N’y a-t-il pas un moyen plus simple d’effectuer une requête ? L’interface a été simplifiée par un designer d’interfaces dans la version 2.16. Les suggestions d’amélioration sont les bienvenues, mais nous ne sacrifierons pas la puissance à la simplicité. 7.3. Je suis troublé par le comportement du bouton "accept" dans le formulaire Show Bug. Pourquoi est-ce que le bogue ne m’est pas affecté après que j’aie accepté ? Le comportement actuel convient à bugzilla.mozilla.org ainsi qu’à la plupart des utilisateurs. Malgré tout, vous disposez d’un choix de programmes de correction pour changer son comportement. Ajoutez une case d’option "and accept bug". (http://bugzilla.mozilla.org/showattachment.cgi?attach_id=8029) Le bouton "Accept" vous affecte automatiquement le bogue. (http://bugzilla.mozilla.org/showattachment.cgi?attach_id=8153) Notez que ces corrections commencent un peu à dater. Vous devrez les appliquer à la main. 7.4. Je ne peux rien inscrire dans la base de données via le lien "Create Attachment". Qu’est ce que je fais mal ? La cause la plus probable vient de l’utilisation d’un très vieux navigateur ou d’un navigateur incompatible avec le téléchargement de fichiers vers le serveur via POST. Téléchargez le dernier navigateur Netscape, Microsoft ou Mozilla pour effectuer les téléchargements vers le serveur correctement. 7.5. Comment est-ce que je change un mot-clé dans Bugzilla, une fois que plusieurs bogues l’utilisent ? Dans l’interface administrateur de Bugzilla, éditez le mot-clé et ça remplacera pour vous l’ancien mot-clé par le nouveau. Cela causera un problème avec la mémoire cache des mots-clés. Exécutez sanitycheck.cgi pour le résoudre. 7.6. Pourquoi est-ce que je ne peux pas clore des bogues à partir de la page "Change Several Bugs at Once" (Changer plusieurs bogues d’un coup) ? Le cheminement logique actuellement adopté est RESOLVED (résolu), puis VERIFIED (vérifié) et enfin CLOSED (fermé). Vous avez la possibilité de clore plusieurs bogues à partir de la page changer plusieurs bogues à la fois. Mais tous les bogues listés sur la page doivent être dans l’état VERIFIED afin que la commande pour le faire apparaisse sur le formulaire. Vous pouvez aussi donner le statut VERIFIED d’un coup à plusieurs bogues, mais tous les bogues listés doivent alors être dans l’état RESOLVED pour que la 61 Appendix A. La foire aux questions de Bugzilla commande apparaisse dans le formulaire. La logique derrière tout cela est que si vous sélectionnez un bogue qui n’est pas dans l’état VERIFIED et que vous essayez de le passer en CLOSED, la modification du bogue échouera lamentablement (ce qui annulera tous les changement situés après dans la liste lors du changement massif) donc ça ne vous laisse pas le choix. 8. Bidouiller Bugzilla 8.1. Quels sont les bogues de Bugzilla actuellement ? Consultez ce lien (http://bugzilla.mozilla.org/buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED& pour voir les bogues actuels ou les demandes d’amélioration de Bugzilla. Vous pouvez voir des bogues marqués pour la version 2.18 ici (http://bugzilla.mozilla.org/buglist.cgi?product=Bugzilla&target_milestone=Bugzilla+2.18). Cette liste contient les bogues de la version 2.18 qui ont déjà été corrigés et consignés dans le CVS. Veuillez consulter la page du projet Bugzilla [Bugzilla Project Page] (http://www.bugzilla.org/) pour les détails sur la manière de récupérer les sources actuelles sur le CVS afin que les bogues soient déjà corrigés pour vous. 8.2. Comment changer la valeur par défaut en une valeur nulle ? Par exemple, avoir "---" comme valeur par défaut au lieu de "P2" ? Ce point est bien documenté ici : http://bugzilla.mozilla.org/show_bug.cgi?id=49862 (http://bugzilla.mozilla.org/show_bug.cgi?id=49862). En fin de compte, ce n’est pas plus compliqué que d’ajouter le champ de priorité "---" à l’endroit approprié de votre fichier localconfig, de relancer checksetup.pl et enfin de changer la priorité par défaut dans votre navigateur au moyen d’ "editparams.cgi". 8.3. Quel est la meilleure façon de soumettre des programmes de correction ? Quelles sont les directives à suivre ? 1. Ajoutez un bogue sur bugzilla.mozilla.org concernant (http://bugzilla.mozilla.org/enter_bug.cgi?product=Bugzilla). ” le logiciel “ Bugzilla 2. Téléchargez votre programme de correction vers le serveur en tant que unified diff (en utilisant "diff -u" sur les sources actuelles récupérés sur CVS), ou en tant que nouveau fichier source en cliquant sur le lien "Create a new attachment" dans la page de bogue que vous venez juste de créer, et ajoutez dans la description du bogue que vous avez soumis à l’étape 1 toute description que vous pouvez faire concernant des changements dans la base de données. Soyez sûr de valider la boîte de choix "Patch" pour indiquer que le texte que vous envoyez est un programme de correction ! 3. Faites part de l’arrivée de votre programme de correction et de l’URL associée (http://bugzilla.mozilla.org/show_bug.cgi?id=XXXXXX) afin d’en discuter dans le forum (netscape.public.mozilla.webtools). Vous aurez une réaction vraiment bonne et relativement immédiate sur les implications de votre programme de correction, ce qui nous donnera aussi une idée de la manière dont seraient reçus les changements. 4. S’il passe les contrôles avec un minimum de modifications, la personne à qui le bogue est assigné chez Bugzilla sera chargée d’assurer que le programme de correction soit consigné sur CVS. 5. Repaissez-vous de la gloire d’avoir participé à la réalisation du logiciel de suivi de bogues le plus réputé de la planète :) 62 Appendix B. La base de données de Bugzilla Note: Ce document a vraiment besoin d’être mis à jour avec des informations étoffées sur les clés primaires, les liens entre relations et peut être quelques tables pratiques pour documenter les dépendances. Des volontaires ? 63 Appendix B. La base de données de Bugzilla B.1. Schema de la base de données 64 Appendix B. La base de données de Bugzilla Schema des relations de la base de données de Bugzilla B.2. Introduction à la base de données MySQL de Bugzilla Ces informations sont tirées de mon expérience personnelle. J’ai dû apprendre comment Bugzilla organise la base de données à cause des pinaillages d’utilisateurs demandant de minuscules changements dans le choix des termes plutôt que d’attendre que les gens se rééduquent par eux-même ou comprennent comment utiliser nos procédures. Ca craint mais vous y passerez peut être aussi, donc apprenez comment fonctionne le schéma pour pouvoir vous débrouiller quand ça arrivera. Donc, vous en êtes arrivé là avec votre installation toute neuve de Bugzilla. Vous avez installé MySQL, Apache tourne bien, Perl DBI et DBD communiquent parfaitement avec la base. Peut-être avez-vous même rentré quelques bogues de test et quelques modifications pour vérifier que le courrier électronique fonctionne bien; les gens semblent être avertis des nouveaux bogues ou modifications, et vous pouvez créer ou éditer des bogues comme bon vous semble. Vous avez peut-être rencontré des problèmes lors de la configuration d’une passerelle de connexion afin que les gens puissent soumettre des bogues à votre base de données par courrier électronique, vous avez demandé à des personnes de tester votre installation et reçu des retours enthousiastes de la part de vos bêta-testeurs. Quelle est la suite au programme ? Esquisser un stratégie de formation de votre équipe de développement et leur demander de se ruer sur le nouvel outil sur lequel vous avez travaillé pendant des heures. Votre première session de formation débute très bien ! Votre audience captivée semble émerveillée par l’efficacité intrinsèque de cette chose appelée "Bugzilla". Vous êtes complètement absorbé dans la description des caractéristiques pratiques, comment les gens peuvent sauvegarder leurs requêtes favorites dans la base de données, les mettre en tête ou en pied de leur page, personnaliser leur mise en page, générer des rapports, suivre le statut avec une efficacité plus grande que jamais, atteindre la cime de grands immeubles d’un seul bond, sauver Jane des griffes de la Mort en Personne ! Mais la Mort en Personne prend la parole -- une petite voie, venue d’un coin sombre de la salle de conférence. "J’ai une remarque," la voie sort de l’ombre,"à propos de l’utilisation du mot ’verified’.". La salle, alors remplie d’un heureux babil, plonge dans un silence religieux tandis que la Mort en Personne (plus connue sous le nom de Vice Président du département génie logiciel) continue. "Vous voyez, pendant deux ans nous avons utilisé le mot ’verified’ pour indiquer le fait qu’un développeur ou un ingénieur qualité avait confirmé qu’un bogue était valide. Je ne veux pas perdre deux ans de formation à un nouveau logiciel. Vous devez remplacer le statut ’verified’ d’un bogue par ’approved’ dès que possible. Pour éviter toute confusion, bien sûr." Oh non ! La peur vous frappe de plein fouet alors que vous balbultiez "oui, oui, je pense que ça ne sera pas un problème," vous examinez les changements à apporter dus à la Mort en Personne et continuez à baragouiner, "non, ça ne représente pas une grosse modification. Je veux dire, nous avons le code source, n’est-ce pas ? Vous savez bien, ’Utiliser le code source tu dois, Luke’ et tout ça... aucun problème," pendant tout ce temps vous frémissez à l’intérieur comme une méduse échouée, bouillonnant, murmurant des sons inarticulés, cuisant sur le sable brûlant d’une dune jamaïquaine... Ainsi commence votre aventure au coeur de Bugzilla. Vous avez été condamné à faire connaissance avec les champs enum() fixes, les colonnes de varchar et les définitions des tinyint. L’aventure vous attend ! 65 Appendix B. La base de données de Bugzilla B.2.1. Les rudiments de la base de données de Bugzilla Si vous êtes comme moi, vous êtes totallement ignorant des mécanismes internes de MySQL à ce stade, et si vous n’étiez pas sous les ordres du Vice-Président vou vous moqueriez de la différence qui existe entre un champ “bigint” et un “tinyint” dans MySQL. Je vous recommande de consulter la documentation MySQL en ligne sur MySQL.com (http://www.mysql.com/doc.html). Vous trouverez ci-dessous les rudiments nécessaires pour comprendre la base de données de Bugzilla. Consultez le schéma ci-dessus pour plus de détails. 1. Pour vous connecter à votre base de données : bash# mysql -u root Si cela fonctionnne sans demander de mot de passe, honte sur vous ! Vous auriez dû mettre en place un verrouillage de sécurité comme cela était expliqué dans les instructions d’installation. Vous pouvez trouver plus de détails concernant le verrouillage de votre base de données dans la FAQ de Bugzilla dans ce répertoire (dans la partie "Securité"), ou des généralités plus solides sur la sécurité dans la documentation consultable de MySQL (http://www.mysql.com/php/manual.php3?section=Privilege_system). 2. Vous devez maintenant voir une invite de commande qui ressemble à celle-ci: mysql> A l’invite, si “bugs” est le nom que vous avez choisi dans le fichier localconfig pour votre base de données Bugzilla, tapez : mysql use bugs; B.2.1.1. Les tables de la base de données de Bugzilla Imaginez votre base de données MySQL comme une série de feuilles de calcul d’un tableur, et vous ne serez pas loin de la vérité. Si vous tapez cette commande : mysql> show tables from bugs; vous pourrez voir le nom de toutes les “feuilles de calcul” (tables) dans votre base de données. A partir de la commande tapée ci-dessus, vous devriez obtenir une réponse qui ressemble à celle-ci : +-------------------+ | Tables in bugs | +-------------------+ | attachments | | bugs | | bugs_activity | | cc | | components | | dependencies | | fielddefs | | groups | | keyworddefs | 66 Appendix B. La base de données de Bugzilla | keywords | | logincookies | | longdescs | | milestones | | namedqueries | | products | | profiles | | profiles_activity | | shadowlog | | tokens | | versions | | votes | | watch | +-------------------+ Voici un aperçu de ce que fait chaque table. La plupart des colonnes de chaque table possède un nom descriptif qui permet de comprendre relativement rapidement leur rôle. attachments: Cette table contient tous les fichiers joints aux bogues. Cette table tend à être la plus grande mais généralement aussi celle qui comporte le moins d’entrées car les fichiers joints sont (relativement) gros. bugs: C’est le coeur de votre système. La table bugs contient la plupart des informations concernant les bogues à l’exception des informations stockées dans les autres tables. bugs_activity: Celle ci conserve les informations concernant les changements apportés aux bogues -- un fichier d’historique. cc: Cette petite table conserve simplement toutes les informations de copie carbone (CC) des bogues dont le champ CC est renseigné. Notez que, comme la plupart des autres tables dans Bugzilla, il n’est pas fait référence aux utilisateurs par le biais de leur nom d’uti tifiant d’utilisateur [userid], stocké dans la table profiles comme clé primaire. components: Cette tabe stocke les programmes [programs] et les composants (ou les produits [products] et les composants [components] dans le nouveau langage de Bugzilla) de Bugzilla. Curieusement, le champ "program" (product) est le nom complet du produit et non un autre identifiant unique, comme bug_id et user_id le sont ailleurs dans la base de données. dependencies: Contient les données sur ces supers arbres de dépendance. fielddefs: Une table pratique qui définit les autres tables. Par exemple lorsque vous validez un formulaire qui change la valeur de "AssignedTo", cette table permet le transfert de l’information vers le champ actuel dont le nom est "assigned_to" pour une entrée de MySQL. 67 Appendix B. La base de données de Bugzilla groups: Définit les masques binaires pour les groupes. Un masque binaire est un nombre qui peut identifier de manière unique les appartenances à un groupe. Par exemple, disons que le groupe qui a le droit d’apporter quelques petites modifications aux paramètres est affecté d’une valeur "1", le groupe qui a la droit d’éditer les utilisateurs est affecté d’une valeur "2" et le groupe qui peut créer de nouveaux groupes est affecté d’un masque binaire de "4". Simplement en combinant les masques binaires des groupes (tout comme la commande chmod d’UNIX,) vous pouvez identifier un utilisateur qui a le droit de modifier légèrement les paramètres et de créer des groupes mais pas d’éditer les utilisateurs, en lui affectant un masque binaire de "5", ou un utilisateur ayant le droit d’éditer des utilisateurs et de créer des groupes, mais pas de modifier les paramètres en lui donnant un masque binaire de "6", non ? Si vous n’avez pas compris, essayer de tazper ceci à l’invite de commande de mysql : mysql> select * from groups; Vous verrez la liste, c’est plus compréhensible de cette manière. keyworddefs: Définition des mots-clés utilisés. keywords: A l’inverse de ce que vous pensez, cette table dit quels mots-clés sont associés avec quels identifiants de bogues. logincookies: Cette table stocke tous les cookies de connexion qui vous sont assignés pour chaque machine à partir de laquelle vous vous êtes connecté à Bugzilla. Curieusement, elle ne gère pas le nettoyage -- je vois des cookies que je n’ai pas utilisé depuis des mois. Cependant, comme Bugzilla ne donne pas de date d’expiration aux cookies, cela se comprend. longdescs: La substance de Bugzilla -- voici où sont stockés tous les commentaires des utilisateurs ! Vous disposez uniquement de 2^24 octets par commentaire (il s’agit d’un champ de type mediumtext), donc soyez concis -- l’ancien testament de la Bible prendrait seulement cet espace (16 megaoctets, non compréssé). Tout commentaire reçoit comme clé le bug_id du bogue auquel il est lié de tel manière que l’ordre soit nécessairement chronologique, pour les commentaires qui sont retourné dans l’ordre où ils ont été reçus. milestones: C’est intéressant que les jalons soient associés à un produit particulier dans cette table, mais Bugzilla ne permet pas encore de différer les jalons en fonction des projets via l’interface de configuration standard. namedqueries: C’est ici que chacun stocke ses "requêtes personnelles". Caractéristique très sympa; ça éradique le fait d’avoir à mettre un signet sur chaqu quête sympa que vous construisez. products: Indique les produits dont vous disposez dans la base, si les nouveaux ajouts de bogues sont permis pour ce produit, sur quel jalon vous travaillez avec ce produit, les votes, etc. Ce sera une bonne chose lorsque la table components contiendra les mêmes attributs, de telle façon que l’on puisse bloquer l’ajout de nouveaux bogues pour un composant particulier sans bloquer un produit entier... profiles: Ahh, alors vous vous demandiez où vos précieuses informations d’utilisateur étaient gardées ? C’est ici ! Avec les mots de passe en clair pour tout le monde ! (mais chuut... n’en parlez pas à vos utilisateurs !) 68 Appendix B. La base de données de Bugzilla profiles_activity: Vous avez besoin de savoir qui a fait quoi à quel profil utilisateur ? C’est ici que vous le saurez, il s’agit d’un historique assez complet. shadowlog: Je peux me tromper ici mais je crois que cette table vous indique quand votre image de la base de données [shadow database] pour les accès en lecture a été mise à jour et quelles commandes ont été utilisées pour le faire. Nous n’utilisons pas encore une base de données de ce type sur notre site, c’est pourquoi cette table est relativement vide pour nous. versions: Informations sur la version de chaque produit votes: Qui a voté pour quoi et quand watch: Qui (relativement au userid) consulte les bogues de qui (relativement à leur userid). === LES DETAILS === Ahh, alors vous vous demandez que faire des informations ci-dessus ? A l’invite de commande vous pouvez visualiser les informations sur n’importe quelle colonne d’une table grâce à cette commande (où table est le nom de la tables que vous souhaitez voir) : mysql> show columns from table; Vous pouvez aussi voir toutes les données contenues dans une table avec cette commande : mysql> select * from table; -- note : ce n’est pas une bonne idée de faire cela si, par exemple, la table "bugs" contient 50 000 bogues. Vous pourriez rester assis là un moment jusqu’à ce que vous faisiez un ctrl-c ou que les 50 000 bogues se soient affichés à l’écran. Vous pouvez limiter un peu l’affichage de la commande ci-dessus avec cette commande ou "colonne" est le nom de la colonne à laquelle vous voulez restreindre l’affichage d’information : mysql> select * from table where (colonne = "some info"); -- ou l’inverse de cela mysql> select * from table where (colonne != "some info"); Reprenons l’exemple de l’introduction et supposons que vous ayez besoin de changer le mot "verified" par "approved" dans le champ de résolution. Nous savons depuis la partie précédente que la résolution doit se trouver dans la table "bugs". 69 Appendix B. La base de données de Bugzilla Notez que nous devrons changer un peu le code perl en supplément de la modification de la base de donnée, mais je ne vais pas rentrer là dedans dans ce document. Vérifions que l’information est bien stockée dans la table "bugs" : mysql> show columns from bugs (le long résultat est tronqué ici) | bug_status| enum(’UNCONFIRMED’,’NEW’,’ASSIGNED’,’REOPENED’,’RESOLVED’,’VERIFIED’, ’CLOSED’)||MUL | UNCONFIRMED|| Désolé de cette longue ligne. Nous voyons à partir du résultat que la colonne "bug status" est de type "enum field", ce qui est une particularité de MySQL où un champ de type chaîne de caractères ne peut prendre que certaines valeur en entrée. Bien que je trouve cela vraiment sympa, il ne s’agit pas de SQL standard. Néanmoins, nous avons besoin d’ajouter ’APPROVED’ dans les valeurs possibles du champ enuméré en modifiant la table "bugs". mysql> ALTER table bugs CHANGE bug_status bug_status -> enum("UNCONFIRMED", "NEW", "ASSIGNED", "REOPENED", "RESOLVED", -> "VERIFIED", "APPROVED", "CLOSED") not null; (notez que vous pouvez entrer trois lignes ou plus -- quelque soit ce que vous placez avant le point virgule, c’est compris comme une seul Maintenant si vous faites cela : mysql> show columns from bugs; vous verrez que le champ bug_status dispose d’un ’APPROVED’ supplémentaire dans l’énumération ! Une autre chose sympa serait que ce changement soir propagé jusqu’à votre page de requête aussi -- vous pouvez effectuer une requête au moyen du nouveau statut. Mai comment cela se propage-t-il dans la réalité des choses ? Il semble que vous deviez retourner chercher les instances du mot "verified" dans le code perl de Bugzilla -- partout où vous trouvez "verified", remplacez le par "approved" et vous serez rendu (assurez-vous que la recherche n’est pas sensible à la casse). Bien que vous puissiez effectuer des requêtes grâce au champ énuméré, vous ne pouvez donner le statut "APPROVED" à quelque chose avant d’avoir réalisé les changements dans le code perl. Notez que ce changement que j’ai mentionné peut aussi être réalisé en éditant checksetup.pl, ce qui automatise un bon nombre de choses. Mais vous avez besoin de connaître ce truc aussi, n’est-ce pas ? 70 Appendix C. Programmes de correction et utilitaires utiles pour Bugzilla Vous cherchez un moyen de faire passer votre Bugzilla à la vitesse supérieure ? Récupérez certains des trucs les plus pratiques présentés ici dans cette section. C.1. L’excellent mod_rewrite d’Apache Le module mod_rewrite d’Apache vous permet de faire des choses véritablement étonnantes en reformulation d’URL. Voici quelques exemples de ce que vous pouvez faire. 1. Agir de telle manière que si quelqu’un tape http://www.foo.com/12345 , Bugzilla retourne http://www.foo.com/show_bug.cgi?id=12345. Essayez de modifier votre section VirtualHost pour Bugzilla avec une règle comme celle-ci : <VirtualHost 12.34.56.78> RewriteEngine On RewriteRule ^/([0-9]+)$ http://foo.bar.com/show_bug.cgi?id=$1 [L,R] </VirtualHost> 2. On peut faire encore bien plus avec mod_rewrite. Veuillez vous reporter à la documentation de mod_rewrite à l’adresse http://www.apache.org. C.2. Requêtes Bugzilla en ligne de commande Il existe une suite d’utilitaires Unix permettant d’adresser une requête à Bugzilla à partir de la ligne de commandes. Ils se trouvent dans le répertoire contrib/cmdline. Cependant ils n’ont pas encore été mis à jour pour pouvoir fonctionnner avec la version 2.16 (post-templatisation.). Il y a trois fichiers - query.conf, buglist et bugs. query.conf contient la correspondance entre les options de ligne de commande et les noms de champs ainsi que les types de comparaison. Les noms d’option entre guillemets sont rassemblés de telle manière qu’il soit facile d’éditer ce fichier. Les commentaires (#) n’ont aucun effet; assurez vous que ces lignes ne contiennent pas d’option entre guillements. buglist est un script shell dont le rôle est d’adresser une requête à Bugzilla et d’écrire le résultat sous forme d’une page HTML sur la sortie standard. Il prend en compte à la fois les options abbrégées (comme "-Afoo" ou "-Rbar") et les options en format long (comme "--assignedto=foo" ou "--reporter=bar"). Si le premier caractère d’une option n’est pas "-", elle est considérée comme si elle était préfixée de "--default=". La variable columnlist est extraite du contenu de la variable d’environnement COLUMNLIST. C’est équivalent à l’option "Change columns" lorque vous listez les bogues dans buglist.cgi. Si vous avez déjà utilisé Bugzilla, faites un "grep" de COLUMNLIST dans vos fichiers de cookies pour voir le contenu actuel de COLUMNLIST. bugs est un simple script qui appelle buglist et extrait les numéros de bogues à partir du résultat en sortie. Le fait d’ajouter le préfixe "http://bugzilla.mozilla.org/buglist.cgi?bug_id=" transforme la liste de bogues en liens qui 71 Appendix C. Programmes de correction et utilitaires utiles pour Bugzilla fonctionnent si des bogues sont trouvés. Compter les bogues est une chose aisée. Faites un "pipe" du résultat vers sed -e ’s/,/ /g’ | wc | awk ’{printf $2 "\n"}’ Akkana Peck affirme avoir de bons résultats en effectuant un "pipe" du résultat de buglist vers w3m -T text/html -dump 72 Appendix D. Variantes et Concurrents de Bugzilla J’ai créé cette section afin de pouvoir répondre aux questions concernant les concurrents et les variantes de Bugzilla puis j’ai trouvé un très bon site qui traite d’une bonne partie de ce dont je voulais discuter. Plutôt que de le recopier entièrement ici, je vous redirige simplement ici : http://linas.org/linux/pm.html (http://linas.org/linux/pm.html) D.1. Le Bugzilla de Red Hat L’ancienne branche red hat de Bugzilla qui était basée sur la version 2.8 est maintenant obsolète. La nouvelle version en service est basée sur la version 2.17.1 et est sur le point d’être intégrée au tronc principal source de Bugzilla. Le système dorsal est modifié pour fonctionner avec PostgreSQL au lieu de MySQL et ils ont des templates spécifiques pour avoir l’aspect et la convivialité désiré, mais à part cela c’est Bugzilla 2.17.1. Dave Lawrence de Red Hat a mis en avant le grand effort réalisé afin d’assurer que les modifications opérées puissent être intégrée dans le tronc principal. Le bogue 98304 (http://bugzilla.mozilla.org/show_bug.cgi?id=98304) a été créé pour suivre cette intégration. URL: http://bugzilla.redhat.com/bugzilla/ (http://bugzilla.redhat.com/bugzilla/) Dernière modification datée du 24 Décembre 2002 D.2. Loki Bugzilla (Fenris) Fenris était une branche de Bugzilla réalisée par Loki Games; lorsque Loki a fait faillite, le projet est tombé à l’eau. Tandis que le code de Loki continue de vivre, ses dépositaires recommendent Bugzilla pour le déploiement de futurs systèmes de suivi de bogues. Dernière modification datée du 27 Juillet 2002 D.3. Issuezilla Issuezilla était une autre branche de Bugzilla, réalisée par collab.net et hébergée chez tigris.org. Il a aussi été abandonné; tigris.org concentre principalement son activité de suivi de bogues sur son système de suivi de bogues basé sur Java, Section D.4. Dernière modification datée du 27 Juillet 2002 D.4. Scarab Scarab est le nouveau système libre de suivi de bogues construit sur la technologie Servlet Java. Il en est actuellement à la version 1.0 beta 13. URL: http://scarab.tigris.org (http://scarab.tigris.org/) Dernière modification datée du 18 Janvier 2003 73 Appendix D. Variantes et Concurrents de Bugzilla D.5. Perforce SCM Bien que Perforce ne soit pas un système de suivi de bogues à proprement parler, il peut être utilisé en tant que tel grâce à la fonctionnalité “jobs”. URL: http://www.perforce.com/perforce/technotes/note052.html (http://www.perforce.com/perforce/technotes/note052.html) Dernière modification datée du 27 Juillet 2002 D.6. SourceForge SourceForge est un moyen de coordonner de manière géographique des logiciels librement distribués ainsi que des projets libres au travers d’Internet. Il dispose d’un système de suivi de bogues inclus à l’intérieur, mais il n’est pas très bien pensé. URL: http://www.sourceforge.net (http://www.sourceforge.net) Dernière modification datée du 27 Juillet 2002 74 Appendix E. GNU Free Documentation License Version 1.1, March 2000 Copyright (C) 2000 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. 0. PREAMBLE The purpose of this License is to make a manual, textbook, or other written document "free" in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others. This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software. We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference. 1. APPLICABILITY AND DEFINITIONS This License applies to any manual or other work that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. The "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you". A "Modified Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language. A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document’s overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (For example, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them. The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. The "Cover Texts" are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, whose contents can be viewed and edited directly and straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available draw- 75 Appendix E. GNU Free Documentation License ing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup has been designed to thwart or discourage subsequent modification by readers is not Transparent. A copy that is not "Transparent" is called "Opaque". Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML designed for human modification. Opaque formats include PostScript, PDF, proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML produced by some word processors for output purposes only. The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work’s title, preceding the beginning of the body of the text. 2. VERBATIM COPYING You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3. You may also lend copies, under the same conditions stated above, and you may publicly display copies. 3. COPYING IN QUANTITY If you publish printed copies of the Document numbering more than 100, and the Document’s license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects. If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages. If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a publiclyaccessible computer-network location containing a complete Transparent copy of the Document, free of added material, which the general network-using public has access to download anonymously at no charge using public-standard network protocols. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public. 76 Appendix E. GNU Free Documentation License It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document. 4. MODIFICATIONS You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version: A. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission. B. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has less than five). C. State on the Title page the name of the publisher of the Modified Version, as the publisher. D. Preserve all the copyright notices of the Document. E. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices. F. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below. G. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document’s license notice. H. Include an unaltered copy of this License. I. Preserve the section entitled "History", and its title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence. J. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission. K. In any section entitled "Acknowledgements" or "Dedications", preserve the section’s title, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein. L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles. M. Delete any section entitled "Endorsements". Such a section may not be included in the Modified Version. N. Do not retitle any existing section as "Endorsements" or to conflict in title with any Invariant Section. If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as 77 Appendix E. GNU Free Documentation License invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version’s license notice. These titles must be distinct from any other section titles. You may add a section entitled "Endorsements", provided it contains nothing but endorsements of your Modified Version by various parties--for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard. You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one. The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version. 5. COMBINING DOCUMENTS You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice. The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work. In the combination, you must combine any sections entitled "History" in the various original documents, forming one section entitled "History"; likewise combine any sections entitled "Acknowledgements", and any sections entitled "Dedications". You must delete all sections entitled "Endorsements." 6. COLLECTIONS OF DOCUMENTS You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects. You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document. 7. AGGREGATION WITH INDEPENDENT WORKS A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, does not as a whole count as a Modified Version of the Document, 78 Appendix E. GNU Free Documentation License provided no compilation copyright is claimed for the compilation. Such a compilation is called an "aggregate", and this License does not apply to the other self-contained works thus compiled with the Document, on account of their being thus compiled, if they are not themselves derivative works of the Document. If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one quarter of the entire aggregate, the Document’s Cover Texts may be placed on covers that surround only the Document within the aggregate. Otherwise they must appear on covers around the whole aggregate. 8. TRANSLATION Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License provided that you also include the original English version of this License. In case of a disagreement between the translation and the original English version of this License, the original English version will prevail. 9. TERMINATION You may not copy, modify, sublicense, or distribute the Document except as expressly provided for under this License. Any other attempt to copy, modify, sublicense or distribute the Document is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 10. FUTURE REVISIONS OF THIS LICENSE The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See http://www.gnu.org/copyleft/ (http://www.gnu.org/copyleft/) . Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License "or any later version" applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation. How to use this License for your documents To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page: Copyright (c) YEAR YOUR NAME. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with 79 Appendix E. GNU Free Documentation License the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. A copy of the license is included in the section entitled "GNU Free Documentation License". If you have no Invariant Sections, write "with no Invariant Sections" instead of saying which ones are invariant. If you have no Front-Cover Texts, write "no Front-Cover Texts" instead of "Front-Cover Texts being LIST"; likewise for Back-Cover Texts. If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software. 80 Glossary 0-9, caractères spéciaux .htaccess Le serveur Web Apache ainsi que d’autres serveurs web compatibles avec le NCSA adoptent la convention visant à utiliser des fichiers appelés .htaccess à l’intérieur des répertoires pour restreindre l’accès à certains fichiers. Dans Bugzilla, ils sont utilisés pour cacher des fichiers secrets qui pourraient, s’ils étaient découverts, mettre en péril votre installation - par exemple le fichier localconfig contient le mot de passe pour votre base de données. Curieux. A Apache Dans ce contexte, Apache représente le serveur web le plus couramment utilisé pour mettre en ligne les pages de Bugzilla. Contrairement à une vieille croyance populaire, le serveur web apache n’a rien à voir avec l’ancienne et noble tribu d’indiens d’Amérique mais tient son nom du fait qu’il s’agissait d’une version “patchée["a patchy version"]” du serveur web original du NCSA. N.d.T : en anglais, Apache se prononce [A patchy]. Instructions utiles pour configurer Bugzilla AddHandler (http://httpd.apache.org/docs-2.0/mod/core.html#addhandler) Indique à Apache qu’il a le droit d’exécuter les scripts CGI. AllowOverride (http://httpd.apache.org/docs-2.0/mod/core.html#allowoverride) Options (http://httpd.apache.org/docs-2.0/mod/core.html#options) Ces instructions sont utilisées pour indiquer à Apache un certain nombre de choses relatives au répertoire auquel elles s’appliquent. Pour Bugzilla par exemple, nous en avons besoin pour autoriser l’exécution de scripts et l’utilisation de fichiers .htaccess pour les droits. DirectoryIndex (http://httpd.apache.org/docs-2.0/mod/mod_dir.html#directoryindex) Utilisé pour indiquer à Apache quels fichiers sont utilisés en tant qu’index. Si vous ne pouvez pas ajouter index.cgi à la liste des fichiers valides, vous devez fixer la valeur de $index_html à 1 dans localconfig de telle manière que ./checksetup.pl crée un index.html qui redirige vers index.cgi. 81 ScriptInterpreterSource (http://httpd.apache.org/docs-2.0/mod/core.html#scriptinterpretersource) Utilisé lorque l’on fait fonctionner Apache sous windows afin de ne pas avoir à changer la ligne et tout le toutim dans chaque script de Bugzilla. B Bug Dans Bugzilla, un “bogue” correspond à un problème ajouté dans la base de données, associé à un numéro, des affectations, des commentaires, etc. Certains se rapportent à un“tickets” ou à un “issues”; dans Bugzilla, ils sont synonymes. Numéro de bogue Chaque bogue de Bugzilla est affecté à un numéro qui identifie ce dernier de manière unique. On peut récupérer le bogue associé à un numéro de bogue via une requête, ou simplement à partir de la toute première page en tapant le numéro dans le champ "Trouver" [Find]. Bugzilla Bugzilla est le leader mondial du logiciel libre de suivi de bogues. C Common Gateway Interface CGI est l’acronyme de Common Gateway Interface. Il s’agit d’un standard pour interfacer une application externe grâce à un serveur web. Bugzilla est un exemple d’application CGI. Composant Un composant est une sous-partie d’un Produit. Il faut que ce soit une catégorie limitée, à la mesure de votre organisation. Tout Produit doit obligatoirement contenir au moins un Composant (et d’ailleurs, créer un Produit sans Composant génèrera une erreur dans Bugzilla). 82 CPAN CPAN signifie “Comprehensive Perl Archive Network”. Le CPAN conserve un grand nombre de modules Perl extrêmement utiles - de gros morceaux de code encapsulés pour réaliser une tâche particulière. D daemon Un démon [daemon] est un programme informatique qui s’exécute en tâche de fond. En général, la plupart des démons sont exécutés au démarrage du système via des scripts d’initialisation System V ou à l’aide de scripts RC sur les systèmes BSD. mysqld, le serveur MySQL et apache, un serveur web, sont généralement des démons. G Groupes Le mot “Groups” possède un sens très spécial dans Bugzilla. Le principal système de sécurité de Bugzilla intervient en placant les utilisateurs dans des groupes et en donnant à ces groupes certaines permissions pour voir les bogues de Produits [Products] particuliers dans la base de données de Bugzilla. M Message Transport Agent Un serveur de courriers électroniques [Message Transport Agent] est utilisé pour gérer le flot de courriers électroniques d’un système. Plusieurs systèmes UNIX utilisent sendmail (http://www.sendmail.org) qui est ce que Bugzilla s’attend à trouver par défaut dans /usr/sbin/sendmail. Plusieurs autres MTA fonctionneront, mais ils nécessitent tous que le paramètre sendmailnow soit fixé à on. MySQL MySQL est actuellement le SGBD [RDBMS] utilisé par Bugzilla. MySQL peut être téléchargé à partir de http://www.mysql.com. Bien qu’il soit nécessaire de prendre connaissance de l’ensemble de la documentation, les principaux points sont : 83 • Le système de droits de MySQL [MySQL Privilege System] (http://www.mysql.com/doc/P/r/Privilege_system.html) De nombreuses informations bien plus détaillées concernant les suggestions dans le Section 5.6.2. P Product Un Produit [Product] rassemble une large catégorie de types de bogues, représentant normalement un seul logiciel ou une seule entité. En général, il existe plusieurs Composants [Components] dans un Produit. Un Produit peut définir un groupe (à des fins de sécurité) pour tous les bogues de ses Composants. Perl Ecrit à l’origine par Larry Wall, Perl est un langage de programmation remarquable. Il possède les avantages d’un langage de scripts interprété (comme les scripts shell), associés à la rapidité et à la puissance de langages compilés comme le C. Bugzilla est programmé en Perl. Q QA “QA”, “Q/A”, et “Q.A.” sont des abréviations d’ “Assurance Qualité [Quality Assurance]”. Dans la plupart des grands organismes de développement logiciel, il y a une équipe chargée d’assurer que le produit respecte un minimum de standards avant sa livraison. Souvent cette équipe voudra aussi suivre la progression des bogues tout au long de leur cycle de vie, d’où la présence d’un champ “Responsable Qualité [QA Contact]” dans un bogue. R Relational DataBase Managment System Un système de gestion de base de données (SGBDR) relationnelle est un système de base de données qui stocke les informations dans des tables liées entre elles. 84 S SGML SGML signifie “Standard Generalized Markup Language”. Créé dans les années 80 pour fournir un moyen évolutif de conserver les documents, basé sur le contenu et non sur la présentation, SGML a résisté à l’épreuve du temps et s’est affirmé comme un langage puissant et robuste. XML est le “petit frère” de SGML; tout document XML valide est, par définition un document SGML valide. Le document que vous êtes en train de lire est écrit et maintenu en SGML, mais c’est égalment du XML valide si vous modifiez la DTD [Document Type Definition]. T Target Milestone Les jalons cibles [Target Milestones] sont les objectifs du produit. Ils sont configurables produit par produit. La plupart des boîtes de développement logiciel utilisent le concept de “jalons” lorsque ceux qui financent un projet attendent certaines fonctionnalités pour certaines dates. Bugzilla facilite l’utilisation de ce concept de jalons en vous donnant la possibilité de déclarer à quel jalon un bogue sera réparé ou une amélioration sera apportée. Tool Command Language TCL est un langage de scripts libre et disponible sur les plateformes Windows, Macintosh et Unix. Bugzilla 1.0 a été écrit en TCL mais n’a jamais vu le jour. La première version de Bugzilla fut la 2.0 lorsqu’il a été porté en perl. Z Zarro Boogs Found C’est juste une façon rigolote de dire qu’aucun bogue correspondant à votre requête n’a été trouvé. Lorsqu’on lui a demandé d’expliquer ce message, Terry a dit la chose suivante : On m’a demandé d’expliquer ce truc... il y a bien longtemps, lorsque Netscape a fait paraître la version 4.0 de son navigateur, nous avons fait une fête pour la sortie. Naturellement, ça avait été la grosse panique pour essayer de réparer tous les bogues identifiés avant la sortie. Naturellement, nous n’y sommes pas parvenus. (Ce n’est pas quelque chose de spécifique à Netscape ou à la version 4.0; la même chose s’est produite dans chaque projet logiciel auquel j’ai participé.) Enfin bref, revenons à nos moutons, à la fête de sortie, des T-shirts où il était marqué quelque chose comme "Netscape 4.0: Zarro Boogs" furent distribués. Tout comme le logiciel, le T-shirt n’avait aucun bogue identifié. Hé hé. 85 Donc lorsque vous effectuez une requête pour obtenir une liste de bogues et que vous n’obtenez aucun résultat en retour, vous penserez à cela avec un petit sourire. Bien sûr qu’il y a des bogues correspondant à votre requête, c’est simplement qu’ils ne sont pas encore listés dans le système de bogues... —Terry Weissman 86