<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML
><HEAD
><TITLE
>The Bugzilla Guide - 2.20.1 
    Release</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><META
NAME="KEYWORD"
CONTENT="Bugzilla"><META
NAME="KEYWORD"
CONTENT="Guide"><META
NAME="KEYWORD"
CONTENT="installation"><META
NAME="KEYWORD"
CONTENT="FAQ"><META
NAME="KEYWORD"
CONTENT="administration"><META
NAME="KEYWORD"
CONTENT="integration"><META
NAME="KEYWORD"
CONTENT="MySQL"><META
NAME="KEYWORD"
CONTENT="Mozilla"><META
NAME="KEYWORD"
CONTENT="webtools"></HEAD
><BODY
CLASS="book"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="BOOK"
><A
NAME="index"
></A
><DIV
CLASS="TITLEPAGE"
><H1
CLASS="title"
><A
NAME="AEN2"
>The Bugzilla Guide - 2.20.1 
    Release</A
></H1
><H3
CLASS="corpauthor"
>The Bugzilla Team</H3
><P
CLASS="pubdate"
>2006-02-20<BR></P
><DIV
><DIV
CLASS="abstract"
><P
></P
><A
NAME="AEN7"
></A
><P
>&#13;	      This is the documentation for Bugzilla, a 
	      bug-tracking system from mozilla.org.
	      Bugzilla is an enterprise-class piece of software
	      that tracks millions of bugs and issues for hundreds of
	      organizations around the world.
      </P
><P
>&#13;        The most current version of this document can always be found on the
        <A
HREF="http://www.bugzilla.org/documentation.html"
TARGET="_top"
>Bugzilla 
        Documentation Page</A
>.
      </P
><P
></P
></DIV
></DIV
><HR></DIV
><DIV
CLASS="TOC"
><DL
><DT
><B
>Table of Contents</B
></DT
><DT
>1. <A
HREF="#about"
>About This Guide</A
></DT
><DD
><DL
><DT
>1.1. <A
HREF="#copyright"
>Copyright Information</A
></DT
><DT
>1.2. <A
HREF="#disclaimer"
>Disclaimer</A
></DT
><DT
>1.3. <A
HREF="#newversions"
>New Versions</A
></DT
><DT
>1.4. <A
HREF="#credits"
>Credits</A
></DT
><DT
>1.5. <A
HREF="#conventions"
>Document Conventions</A
></DT
></DL
></DD
><DT
>2. <A
HREF="#installing-bugzilla"
>Installing Bugzilla</A
></DT
><DD
><DL
><DT
>2.1. <A
HREF="#installation"
>Installation</A
></DT
><DT
>2.2. <A
HREF="#configuration"
>Configuration</A
></DT
><DT
>2.3. <A
HREF="#extraconfig"
>Optional Additional Configuration</A
></DT
><DT
>2.4. <A
HREF="#os-specific"
>OS-Specific Installation Notes</A
></DT
><DT
>2.5. <A
HREF="#nonroot"
>UNIX (non-root) Installation Notes</A
></DT
></DL
></DD
><DT
>3. <A
HREF="#administration"
>Administering Bugzilla</A
></DT
><DD
><DL
><DT
>3.1. <A
HREF="#parameters"
>Bugzilla Configuration</A
></DT
><DT
>3.2. <A
HREF="#useradmin"
>User Administration</A
></DT
><DT
>3.3. <A
HREF="#products"
>Products</A
></DT
><DT
>3.4. <A
HREF="#components"
>Components</A
></DT
><DT
>3.5. <A
HREF="#versions"
>Versions</A
></DT
><DT
>3.6. <A
HREF="#milestones"
>Milestones</A
></DT
><DT
>3.7. <A
HREF="#flags-overview"
>Flags</A
></DT
><DT
>3.8. <A
HREF="#voting"
>Voting</A
></DT
><DT
>3.9. <A
HREF="#quips"
>Quips</A
></DT
><DT
>3.10. <A
HREF="#groups"
>Groups and Group Security</A
></DT
><DT
>3.11. <A
HREF="#upgrading"
>Upgrading to New Releases</A
></DT
></DL
></DD
><DT
>4. <A
HREF="#security"
>Bugzilla Security</A
></DT
><DD
><DL
><DT
>4.1. <A
HREF="#security-os"
>Operating System</A
></DT
><DT
>4.2. <A
HREF="#security-mysql"
>MySQL</A
></DT
><DT
>4.3. <A
HREF="#security-webserver"
>Webserver</A
></DT
><DT
>4.4. <A
HREF="#security-bugzilla"
>Bugzilla</A
></DT
></DL
></DD
><DT
>5. <A
HREF="#customization"
>Customising Bugzilla</A
></DT
><DD
><DL
><DT
>5.1. <A
HREF="#cust-templates"
>Template Customization</A
></DT
><DT
>5.2. <A
HREF="#cust-hooks"
>Template Hooks</A
></DT
><DT
>5.3. <A
HREF="#cust-change-permissions"
>Customizing Who Can Change What</A
></DT
><DT
>5.4. <A
HREF="#dbmodify"
>Modifying Your Running System</A
></DT
><DT
>5.5. <A
HREF="#dbdoc"
>MySQL Bugzilla Database Introduction</A
></DT
><DT
>5.6. <A
HREF="#integration"
>Integrating Bugzilla with Third-Party Tools</A
></DT
></DL
></DD
><DT
>6. <A
HREF="#using"
>Using Bugzilla</A
></DT
><DD
><DL
><DT
>6.1. <A
HREF="#using-intro"
>Introduction</A
></DT
><DT
>6.2. <A
HREF="#myaccount"
>Create a Bugzilla Account</A
></DT
><DT
>6.3. <A
HREF="#bug_page"
>Anatomy of a Bug</A
></DT
><DT
>6.4. <A
HREF="#lifecycle"
>Life Cycle of a Bug</A
></DT
><DT
>6.5. <A
HREF="#query"
>Searching for Bugs</A
></DT
><DT
>6.6. <A
HREF="#list"
>Bug Lists</A
></DT
><DT
>6.7. <A
HREF="#bugreports"
>Filing Bugs</A
></DT
><DT
>6.8. <A
HREF="#patchviewer"
>Patch Viewer</A
></DT
><DT
>6.9. <A
HREF="#hintsandtips"
>Hints and Tips</A
></DT
><DT
>6.10. <A
HREF="#userpreferences"
>User Preferences</A
></DT
><DT
>6.11. <A
HREF="#reporting"
>Reports and Charts</A
></DT
><DT
>6.12. <A
HREF="#flags"
>Flags</A
></DT
><DT
>6.13. <A
HREF="#whining"
>Whining</A
></DT
></DL
></DD
><DT
>A. <A
HREF="#faq"
>The Bugzilla FAQ</A
></DT
><DT
>B. <A
HREF="#troubleshooting"
>Troubleshooting</A
></DT
><DD
><DL
><DT
>B.1. <A
HREF="#general-advice"
>General Advice</A
></DT
><DT
>B.2. <A
HREF="#trbl-testserver"
>The Apache webserver is not serving Bugzilla pages</A
></DT
><DT
>B.3. <A
HREF="#trbl-perlmodule"
>I installed a Perl module, but 
      <TT
CLASS="filename"
>checksetup.pl</TT
> claims it's not installed!</A
></DT
><DT
>B.4. <A
HREF="#trbl-bundleBugzilla"
>Bundle::Bugzilla makes me upgrade to Perl 5.6.1</A
></DT
><DT
>B.5. <A
HREF="#trbl-dbdSponge"
>DBD::Sponge::db prepare failed</A
></DT
><DT
>B.6. <A
HREF="#paranoid-security"
>cannot chdir(/var/spool/mqueue)</A
></DT
><DT
>B.7. <A
HREF="#trouble-filetemp"
>Your vendor has not defined Fcntl macro O_NOINHERIT</A
></DT
><DT
>B.8. <A
HREF="#trbl-relogin-everyone"
>Everybody is constantly being forced to relogin</A
></DT
><DT
>B.9. <A
HREF="#AEN3190"
>Some users are constantly being forced to relogin</A
></DT
><DT
>B.10. <A
HREF="#trbl-index"
><TT
CLASS="filename"
>index.cgi</TT
> doesn't show up unless specified in the URL</A
></DT
><DT
>B.11. <A
HREF="#trbl-passwd-encryption"
>checksetup.pl reports "Client does not support authentication protocol
      requested by server..."</A
></DT
></DL
></DD
><DT
>C. <A
HREF="#patches"
>Contrib</A
></DT
><DD
><DL
><DT
>C.1. <A
HREF="#cmdline"
>Command-line Search Interface</A
></DT
><DT
>C.2. <A
HREF="#cmdline-bugmail"
>Command-line 'Send Unsent Bug-mail' tool</A
></DT
></DL
></DD
><DT
>D. <A
HREF="#install-perlmodules-manual"
>Manual Installation of Perl Modules</A
></DT
><DD
><DL
><DT
>D.1. <A
HREF="#modules-manual-instructions"
>Instructions</A
></DT
><DT
>D.2. <A
HREF="#modules-manual-download"
>Download Locations</A
></DT
><DT
>D.3. <A
HREF="#modules-manual-optional"
>Optional Modules</A
></DT
></DL
></DD
><DT
>E. <A
HREF="#gfdl"
>GNU Free Documentation License</A
></DT
><DD
><DL
><DT
>0. <A
HREF="#gfdl-0"
>Preamble</A
></DT
><DT
>1. <A
HREF="#gfdl-1"
>Applicability and Definition</A
></DT
><DT
>2. <A
HREF="#gfdl-2"
>Verbatim Copying</A
></DT
><DT
>3. <A
HREF="#gfdl-3"
>Copying in Quantity</A
></DT
><DT
>4. <A
HREF="#gfdl-4"
>Modifications</A
></DT
><DT
>5. <A
HREF="#gfdl-5"
>Combining Documents</A
></DT
><DT
>6. <A
HREF="#gfdl-6"
>Collections of Documents</A
></DT
><DT
>7. <A
HREF="#gfdl-7"
>Aggregation with Independent Works</A
></DT
><DT
>8. <A
HREF="#gfdl-8"
>Translation</A
></DT
><DT
>9. <A
HREF="#gfdl-9"
>Termination</A
></DT
><DT
>10. <A
HREF="#gfdl-10"
>Future Revisions of this License</A
></DT
><DT
><A
HREF="#gfdl-howto"
>How to use this License for your documents</A
></DT
></DL
></DD
><DT
><A
HREF="#glossary"
>Glossary</A
></DT
></DL
></DIV
><DIV
CLASS="LOT"
><DL
CLASS="LOT"
><DT
><B
>List of Figures</B
></DT
><DT
>6-1. <A
HREF="#lifecycle-image"
>Lifecycle of a Bugzilla Bug</A
></DT
></DL
></DIV
><DIV
CLASS="LOT"
><DL
CLASS="LOT"
><DT
><B
>List of Examples</B
></DT
><DT
>4-1. <A
HREF="#security-mysql-account-root"
>Assigning the MySQL <SPAN
CLASS="QUOTE"
>"root"</SPAN
> User a Password</A
></DT
><DT
>4-2. <A
HREF="#security-mysql-account-anonymous"
>Disabling the MySQL <SPAN
CLASS="QUOTE"
>"anonymous"</SPAN
> User</A
></DT
><DT
>4-3. <A
HREF="#security-mysql-network-ex"
>Disabling Networking in MySQL</A
></DT
><DT
>4-4. <A
HREF="#security-bugzilla-charset-ex"
>Forcing Bugzilla to output a charset</A
></DT
><DT
>B-1. <A
HREF="#trbl-relogin-everyone-share"
>Examples of urlbase/cookiepath pairs for sharing login cookies</A
></DT
><DT
>B-2. <A
HREF="#trbl-relogin-everyone-restrict"
>Examples of urlbase/cookiepath pairs to restrict the login cookie</A
></DT
></DL
></DIV
><DIV
CLASS="chapter"
><HR><H1
><A
NAME="about"
></A
>Chapter 1. About This Guide</H1
><DIV
CLASS="section"
><H2
CLASS="section"
><A
NAME="copyright"
>1.1. Copyright Information</A
></H2
><P
>This document is copyright (c) 2000-2006 by the various
    Bugzilla contributors who wrote it.</P
><A
NAME="AEN26"
></A
><BLOCKQUOTE
CLASS="BLOCKQUOTE"
><P
>&#13;	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 no Invariant Sections, no
	Front-Cover Texts, and with no Back-Cover Texts. A copy of
	the license is included in <A
HREF="#gfdl"
>Appendix E</A
>.
      </P
></BLOCKQUOTE
><P
>&#13;      If you have any questions regarding this document, its
      copyright, or publishing this document in non-electronic form,
      please contact the Bugzilla Team. 
    </P
></DIV
><DIV
CLASS="section"
><HR><H2
CLASS="section"
><A
NAME="disclaimer"
>1.2. Disclaimer</A
></H2
><P
>&#13;      No liability for the contents of this document can be accepted.
      Follow the instructions herein at your own risk.
      This document may contain errors
      and inaccuracies that may damage your system, cause your partner 
      to leave you, your boss to fire you, your cats to
      pee on your furniture and clothing, and global thermonuclear
      war. Proceed with caution.
    </P
><P
>&#13;      Naming of particular products or brands should not be seen as
      endorsements, with the exception of the term "GNU/Linux". We
      wholeheartedly endorse the use of GNU/Linux; it is an extremely 
      versatile, stable,
      and robust operating system that offers an ideal operating
      environment for Bugzilla.
    </P
><P
>&#13;      Although the Bugzilla development team has taken great care to
      ensure that all exploitable bugs have been fixed, security holes surely 
      exist in any piece of code. Great care should be taken both in 
      the installation and usage of this software. The Bugzilla development
      team members assume no liability for your use of Bugzilla. You have 
      the source code, and are responsible for auditing it yourself to ensure
      your security needs are met.
    </P
></DIV
><DIV
CLASS="section"
><HR><H2
CLASS="section"
><A
NAME="newversions"
>1.3. New Versions</A
></H2
><P
>&#13;      This is the 2.20.1 version of The Bugzilla Guide. It is so named 
      to match the current version of Bugzilla. 
    </P
><P
>&#13;      The latest version of this guide can always be found at <A
HREF="http://www.bugzilla.org"
TARGET="_top"
>http://www.bugzilla.org</A
>, or checked out via CVS by
      following the <A
HREF="http://www.mozilla.org/cvs.html"
TARGET="_top"
>Mozilla 
      CVS</A
> instructions and check out the 
      <TT
CLASS="filename"
>mozilla/webtools/bugzilla/docs/</TT
>
      subtree. However, you should read the version
      which came with the Bugzilla release you are using.
    </P
><P
>&#13;      The Bugzilla Guide, or a section of it, is also available in
      the following languages:
      <A
HREF="http://bugzilla-de.sourceforge.net/docs/html/"
TARGET="_top"
>German</A
>.
    </P
><P
>  
      In addition, there are Bugzilla template localisation projects in
      the following languages. They may have translated documentation 
      available: 
      <A
HREF="http://sourceforge.net/projects/bugzilla-be/"
TARGET="_top"
>Belarusian</A
>,
      <A
HREF="http://sourceforge.net/projects/bugzilla-br/"
TARGET="_top"
>Brazilian Portuguese</A
>,
      <A
HREF="http://sourceforge.net/projects/bugzilla-cn/"
TARGET="_top"
>Chinese</A
>,
      <A
HREF="http://sourceforge.net/projects/bugzilla-fr/"
TARGET="_top"
>French</A
>,
      <A
HREF="http://sourceforge.net/projects/bugzilla-de/"
TARGET="_top"
>German</A
>,
      <A
HREF="http://sourceforge.net/projects/bugzilla-kr/"
TARGET="_top"
>Korean</A
>,
      <A
HREF="http://sourceforge.net/projects/bugzilla-ru/"
TARGET="_top"
>Russian</A
> and
      <A
HREF="http://sourceforge.net/projects/bugzilla-es/"
TARGET="_top"
>Spanish</A
>.
    </P
><P
>  
      If you would like to volunteer to translate the Guide into additional
      languages, please contact
      <A
HREF="mailto:justdave@syndicomm.com"
TARGET="_top"
>Dave Miller</A
>.
    </P
></DIV
><DIV
CLASS="section"
><HR><H2
CLASS="section"
><A
NAME="credits"
>1.4. Credits</A
></H2
><P
>&#13;      The people listed below have made enormous contributions to the
      creation of this Guide, through their writing, dedicated hacking efforts,
      numerous e-mail and IRC support sessions, and overall excellent
      contribution to the Bugzilla community:
    </P
><P
></P
><DIV
CLASS="variablelist"
><DL
><DT
>Matthew P. Barnson <CODE
CLASS="email"
>&#60;<A
HREF="mailto:mbarnson@sisna.com"
>mbarnson@sisna.com</A
>&#62;</CODE
></DT
><DD
><P
>for the Herculaean task of pulling together the Bugzilla Guide
          and shepherding it to 2.14.
          </P
></DD
><DT
>Terry Weissman <CODE
CLASS="email"
>&#60;<A
HREF="mailto:terry@mozilla.org"
>terry@mozilla.org</A
>&#62;</CODE
></DT
><DD
><P
>for initially writing Bugzilla and creating the README upon
          which the UNIX installation documentation is largely based.
          </P
></DD
><DT
>Tara Hernandez <CODE
CLASS="email"
>&#60;<A
HREF="mailto:tara@tequilarists.org"
>tara@tequilarists.org</A
>&#62;</CODE
></DT
><DD
><P
>for keeping Bugzilla development going strong after Terry left
          mozilla.org and for running landfill.
          </P
></DD
><DT
>Dave Lawrence <CODE
CLASS="email"
>&#60;<A
HREF="mailto:dkl@redhat.com"
>dkl@redhat.com</A
>&#62;</CODE
></DT
><DD
><P
>for providing insight into the key differences between Red
          Hat's customized Bugzilla.
          </P
></DD
><DT
>Dawn Endico <CODE
CLASS="email"
>&#60;<A
HREF="mailto:endico@mozilla.org"
>endico@mozilla.org</A
>&#62;</CODE
></DT
><DD
><P
>for being a hacker extraordinaire and putting up with Matthew's
          incessant questions and arguments on irc.mozilla.org in #mozwebtools
          </P
></DD
><DT
>Jacob Steenhagen <CODE
CLASS="email"
>&#60;<A
HREF="mailto:jake@bugzilla.org"
>jake@bugzilla.org</A
>&#62;</CODE
></DT
><DD
><P
>for taking over documentation during the 2.17 development
          period.
          </P
></DD
><DT
>Dave Miller <CODE
CLASS="email"
>&#60;<A
HREF="mailto:justdave@bugzilla.org"
>justdave@bugzilla.org</A
>&#62;</CODE
></DT
><DD
><P
>for taking over as project lead when Tara stepped down and
	  continually pushing for the documentation to be the best it can be.
          </P
></DD
></DL
></DIV
><P
>&#13;      Thanks also go to the following people for significant contributions 
      to this documentation:
      Kevin Brannen, Vlad Dascalu, Ben FrantzDale, Eric Hanson, Zach Lipton, Gervase Markham, Andrew Pearson, Joe Robins, Spencer Smith, Ron Teitelbaum, Shane Travis, Martin Wulffeld.
    </P
><P
>&#13;      Also, thanks are due to the members of the 
      <A
HREF="news://news.mozilla.org/netscape.public.mozilla.webtools"
TARGET="_top"
>&#13;      netscape.public.mozilla.webtools</A
>
      newsgroup. Without your discussions, insight, suggestions, and patches,
      this could never have happened.
    </P
></DIV
><DIV
CLASS="section"
><HR><H2
CLASS="section"
><A
NAME="conventions"
>1.5. Document Conventions</A
></H2
><P
>This document uses the following conventions:</P
><DIV
CLASS="informaltable"
><P
></P
><A
NAME="AEN115"
></A
><TABLE
BORDER="0"
FRAME="void"
CLASS="CALSTABLE"
><COL><COL><THEAD
><TR
><TH
>Descriptions</TH
><TH
>Appearance</TH
></TR
></THEAD
><TBODY
><TR
><TD
>Warning</TD
><TD
>&#13;            <DIV
CLASS="caution"
><P
></P
><TABLE
CLASS="caution"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/caution.gif"
HSPACE="5"
ALT="Caution"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>Don't run with scissors!</P
></TD
></TR
></TABLE
></DIV
>
          </TD
></TR
><TR
><TD
>Hint</TD
><TD
>&#13;            <DIV
CLASS="tip"
><P
></P
><TABLE
CLASS="tip"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/tip.gif"
HSPACE="5"
ALT="Tip"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>Would you like a breath mint?</P
></TD
></TR
></TABLE
></DIV
>
          </TD
></TR
><TR
><TD
>Note</TD
><TD
>&#13;            <DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>Dear John...</P
></TD
></TR
></TABLE
></DIV
>
          </TD
></TR
><TR
><TD
>Information requiring special attention</TD
><TD
>&#13;            <DIV
CLASS="warning"
><P
></P
><TABLE
CLASS="warning"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/warning.gif"
HSPACE="5"
ALT="Warning"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>Read this or the cat gets it.</P
></TD
></TR
></TABLE
></DIV
>
          </TD
></TR
><TR
><TD
>File or directory name</TD
><TD
>&#13;            <TT
CLASS="filename"
>filename</TT
>
          </TD
></TR
><TR
><TD
>Command to be typed</TD
><TD
>&#13;            <B
CLASS="command"
>command</B
>
          </TD
></TR
><TR
><TD
>Application name</TD
><TD
>&#13;            <SPAN
CLASS="application"
>application</SPAN
>
          </TD
></TR
><TR
><TD
>&#13;          Normal user's prompt under bash shell</TD
><TD
>bash$</TD
></TR
><TR
><TD
>&#13;          Root user's prompt under bash shell</TD
><TD
>bash#</TD
></TR
><TR
><TD
>&#13;          Normal user's prompt under tcsh shell</TD
><TD
>tcsh$</TD
></TR
><TR
><TD
>Environment variables</TD
><TD
>&#13;            <VAR
CLASS="envar"
>VARIABLE</VAR
>
          </TD
></TR
><TR
><TD
>Term found in the glossary</TD
><TD
>&#13;            <A
HREF="#gloss-bugzilla"
><I
CLASS="glossterm"
>Bugzilla</I
></A
>
          </TD
></TR
><TR
><TD
>Code example</TD
><TD
>&#13;            <TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
><CODE
CLASS="sgmltag"
>&#60;para&#62;</CODE
>
Beginning and end of paragraph
<CODE
CLASS="sgmltag"
>&#60;/para&#62;</CODE
></PRE
></FONT
></TD
></TR
></TABLE
>
          </TD
></TR
></TBODY
></TABLE
><P
></P
></DIV
><P
>  
	  This documentation is maintained in DocBook 4.1.2 XML format.
    Changes are best submitted as plain text or XML diffs, attached
    to a bug filed in the <A
HREF="http://bugzilla.mozilla.org/enter_bug.cgi?product=Bugzilla&#38;component=Documentation"
TARGET="_top"
>Bugzilla Documentation</A
> component.
  </P
></DIV
></DIV
><DIV
CLASS="chapter"
><HR><H1
><A
NAME="installing-bugzilla"
></A
>Chapter 2. Installing Bugzilla</H1
><DIV
CLASS="section"
><H2
CLASS="section"
><A
NAME="installation"
>2.1. Installation</A
></H2
><DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>If you just want to <EM
>use</EM
> Bugzilla, 
      you do not need to install it. None of this chapter is relevant to
      you. Ask your Bugzilla administrator
      for the URL to access it over the web.
      </P
></TD
></TR
></TABLE
></DIV
><P
>The Bugzilla server software is usually installed on Linux or 
    Solaris. 
    If you are installing on another OS, check <A
HREF="#os-specific"
>Section 2.4</A
>
    before you start your installation to see if there are any special
    instructions.
    </P
><P
>&#13;      As an alternative to following these instructions, you may wish to
      try Arne Schirmacher's unofficial and unsupported 
      <A
HREF="http://www.softwaretesting.de/article/view/33/1/8/"
TARGET="_top"
>Bugzilla
      Installer</A
>, which installs Bugzilla and all its prerequisites
      on Linux or Solaris systems.
    </P
><P
>This guide assumes that you have administrative access to the
    Bugzilla machine. It not possible to
    install and run Bugzilla itself without administrative access except
    in the very unlikely event that every single prerequisite is
    already installed.
    </P
><DIV
CLASS="warning"
><P
></P
><TABLE
CLASS="warning"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/warning.gif"
HSPACE="5"
ALT="Warning"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>The installation process may make your machine insecure for
      short periods of time. Make sure there is a firewall between you
      and the Internet.
      </P
></TD
></TR
></TABLE
></DIV
><P
>&#13;    You are strongly recommended to make a backup of your system
    before installing Bugzilla (and at regular intervals thereafter :-).
    </P
><P
>In outline, the installation proceeds as follows:
    </P
><DIV
CLASS="procedure"
><OL
TYPE="1"
><LI
><P
><A
HREF="#install-perl"
>Install Perl</A
>
        (5.6.1 or above for non-Windows platforms; 5.8.1
        for Windows)
        </P
></LI
><LI
><P
><A
HREF="#install-database"
>Install a Database Engine</A
>
        </P
></LI
><LI
><P
><A
HREF="#install-webserver"
>Install a Webserver</A
>
        </P
></LI
><LI
><P
><A
HREF="#install-bzfiles"
>Install Bugzilla</A
>
        </P
></LI
><LI
><P
><A
HREF="#install-perlmodules"
>Install Perl modules</A
>
        </P
></LI
><LI
><P
>&#13;          <A
HREF="#install-MTA"
>Install a Mail Transfer Agent</A
>
          (Sendmail 8.7 or above, or an MTA that is Sendmail-compatible with at least this version)
        </P
></LI
><LI
><P
>Configure all of the above.
        </P
></LI
></OL
></DIV
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="install-perl"
>2.1.1. Perl</A
></H3
><P
>Installed Version Test: <TT
CLASS="filename"
>perl -v</TT
></P
><P
>Any machine that doesn't have Perl on it is a sad machine indeed.
      If you don't have it and your OS doesn't provide official packages, 
      visit <A
HREF="http://www.perl.com"
TARGET="_top"
>http://www.perl.com</A
>.
      Although Bugzilla runs with Perl 5.6.1,
      it's a good idea to be using the latest stable version.
      </P
></DIV
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="install-database"
>2.1.2. Database Engine</A
></H3
><P
>From Bugzilla 2.20, support is included for using both the MySQL and
      PostgreSQL database servers. You only require one of these systems to make
      use of Bugzilla.</P
><DIV
CLASS="section"
><HR><H4
CLASS="section"
><A
NAME="install-mysql"
>2.1.2.1. MySQL</A
></H4
><P
>Installed Version Test: <TT
CLASS="filename"
>mysql -V</TT
></P
><P
>&#13;          If you don't have it and your OS doesn't provide official packages, 
          visit <A
HREF="http://www.mysql.com"
TARGET="_top"
>http://www.mysql.com</A
>. You need MySQL version
          3.23.41 or higher.
          </P
><DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> Many of the binary
            versions of MySQL store their data files in 
            <TT
CLASS="filename"
>/var</TT
>.
            On some Unix systems, this is part of a smaller root partition,
            and may not have room for your bug database. To change the data
            directory, you have to build MySQL from source yourself, and
            set it as an option to <TT
CLASS="filename"
>configure</TT
>.</P
></TD
></TR
></TABLE
></DIV
><P
>If you install from something other than a packaging/installation
          system, such as .rpm (Redhat Package), .deb (Debian Package), .exe
          (Windows Executable), or .msi (Microsoft Installer), make sure the MySQL
          server is started when the machine boots.
          </P
></DIV
><DIV
CLASS="section"
><HR><H4
CLASS="section"
><A
NAME="install-pg"
>2.1.2.2. PostgreSQL</A
></H4
><P
>Installed Version Test: <TT
CLASS="filename"
>psql -V</TT
></P
><P
>&#13;          If you don't have it and your OS doesn't provide official packages, 
          visit <A
HREF="http://www.postgresql.org/"
TARGET="_top"
>http://www.postgresql.org/</A
>. You need PostgreSQL
          version 7.3.x or higher.
          </P
><P
>If you install from something other than a packaging/installation
          system, such as .rpm (Redhat Package), .deb (Debian Package), .exe
          (Windows Executable), or .msi (Microsoft Installer), make sure the
          PostgreSQL server is started when the machine boots.
          </P
></DIV
></DIV
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="install-webserver"
>2.1.3. Web Server</A
></H3
><P
>Installed Version Test: view the default welcome page at
      http://&#60;your-machine&#62;/</P
><P
>You have freedom of choice here, pretty much any web server that
      is capable of running <A
HREF="#gloss-cgi"
><I
CLASS="glossterm"
>CGI</I
></A
>
      scripts will work.
       However, we strongly recommend using the Apache web server
       (either 1.3.x or 2.x), and 
       the installation instructions usually assume you are
        using it. If you have got Bugzilla working using another webserver,
        please share your experiences with us by filing a bug in <A
HREF="http://bugzilla.mozilla.org/enter_bug.cgi?product=Bugzilla&#38;component=Documentation"
TARGET="_top"
>Bugzilla Documentation</A
>.
      </P
><P
>&#13;      If you don't have Apache and your OS doesn't provide official packages, 
      visit <A
HREF="http://httpd.apache.org/"
TARGET="_top"
>http://httpd.apache.org/</A
>.
      </P
></DIV
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="install-bzfiles"
>2.1.4. Bugzilla</A
></H3
><P
>&#13;        Download a Bugzilla tarball (or check it out from CVS) and place
        it in a suitable directory, accessible by the default web server user 
        (probably <SPAN
CLASS="QUOTE"
>"apache"</SPAN
> or <SPAN
CLASS="QUOTE"
>"www"</SPAN
>). 
        Good locations are either directly in the main web space for your
        web server or perhaps in 
        <TT
CLASS="filename"
>/usr/local</TT
>
        with a symbolic link from the web space.
      </P
><DIV
CLASS="caution"
><P
></P
><TABLE
CLASS="caution"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/caution.gif"
HSPACE="5"
ALT="Caution"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>The default Bugzilla distribution is NOT designed to be placed
        in a <TT
CLASS="filename"
>cgi-bin</TT
> directory. This
        includes any directory which is configured using the
        <VAR
CLASS="option"
>ScriptAlias</VAR
> directive of Apache.
        </P
></TD
></TR
></TABLE
></DIV
><P
>Once all the files are in a web accessible directory, make that
      directory writable by your webserver's user. This is a temporary step
      until you run the 
      <TT
CLASS="filename"
>checksetup.pl</TT
>
      script, which locks down your installation.</P
></DIV
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="install-perlmodules"
>2.1.5. Perl Modules</A
></H3
><P
>Bugzilla's installation process is based
      on a script called <TT
CLASS="filename"
>checksetup.pl</TT
>. 
      The first thing it checks is whether you have appropriate 
      versions of all the required
      Perl modules. The aim of this section is to pass this check. 
      When it passes, proceed to <A
HREF="#configuration"
>Section 2.2</A
>.
      </P
><P
>&#13;      At this point, you need to <TT
CLASS="filename"
>su</TT
> to root. You should
      remain as root until the end of the install. To check you have the
      required modules, run:
      </P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="screen"
><SAMP
CLASS="prompt"
>bash#</SAMP
> ./checksetup.pl --check-modules</PRE
></FONT
></TD
></TR
></TABLE
><P
>&#13;        <TT
CLASS="filename"
>checksetup.pl</TT
> will print out a list of the
        required and optional Perl modules, together with the versions
        (if any) installed on your machine.
        The list of required modules is reasonably long; however, you 
        may already have several of them installed.
      </P
><P
>&#13;        There is a meta-module called Bundle::Bugzilla, 
        which installs all the other 
        modules with a single command. You should use this if you are running
        Perl 5.6.1 or above.
      </P
><P
>&#13;        The preferred way of installing Perl modules is via CPAN on Unix, 
        or PPM on Windows (see <A
HREF="#win32-perl-modules"
>Section 2.4.1.2</A
>). These
        instructions assume you are using CPAN; if for some reason you need 
        to install the Perl modules manually, see 
        <A
HREF="#install-perlmodules-manual"
>Appendix D</A
>.
      </P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="screen"
><SAMP
CLASS="prompt"
>bash#</SAMP
> perl -MCPAN -e 'install "&#60;modulename&#62;"'</PRE
></FONT
></TD
></TR
></TABLE
><P
>&#13;        If you using Bundle::Bugzilla, invoke the magic CPAN command on it.
        Otherwise, you need to work down the 
        list of modules that <TT
CLASS="filename"
>checksetup.pl</TT
> says are
        required, in the order given, invoking the command on each.
      </P
><DIV
CLASS="tip"
><P
></P
><TABLE
CLASS="tip"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/tip.gif"
HSPACE="5"
ALT="Tip"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>Many people complain that Perl modules will not install for
        them. Most times, the error messages complain that they are missing a
        file in 
        <SPAN
CLASS="QUOTE"
>"@INC"</SPAN
>. 
        Virtually every time, this error is due to permissions being set too
        restrictively for you to compile Perl modules or not having the
        necessary Perl development libraries installed on your system.
        Consult your local UNIX systems administrator for help solving these
        permissions issues; if you 
        <EM
>are</EM
>
        the local UNIX sysadmin, please consult the newsgroup/mailing list
        for further assistance or hire someone to help you out.</P
></TD
></TR
></TABLE
></DIV
><DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>If you are using a package-based system, and attempting to install the
        Perl modules from CPAN, you may need to install the "development" packages for
        MySQL and GD before attempting to install the related Perl modules. The names of
        these packages will vary depending on the specific distribution you are using,
        but are often called <TT
CLASS="filename"
>&#60;packagename&#62;-devel</TT
>.</P
></TD
></TR
></TABLE
></DIV
><P
>&#13;        Here is a complete list of modules and their minimum versions.
        Some modules have special installation notes, which follow.
      </P
><P
>Required Perl modules:
      <P
></P
><OL
TYPE="1"
><LI
><P
>&#13;            AppConfig (1.52)
          </P
></LI
><LI
><P
>&#13;            CGI (2.93)
          </P
></LI
><LI
><P
>&#13;            Data::Dumper (any)
          </P
></LI
><LI
><P
>&#13;            Date::Format (2.21)
          </P
></LI
><LI
><P
>&#13;            DBI (1.38)
          </P
></LI
><LI
><P
>&#13;            <A
HREF="#install-modules-dbd-mysql"
>DBD::mysql</A
>
            (2.9003) if using MySQL
          </P
></LI
><LI
><P
>&#13;            DBD::Pg (1.31) if using PostgreSQL
          </P
></LI
><LI
><P
>&#13;            File::Spec (0.84)
          </P
></LI
><LI
><P
>&#13;            File::Temp (any)
          </P
></LI
><LI
><P
>&#13;            <A
HREF="#install-modules-template"
>Template</A
>
            (2.08)
          </P
></LI
><LI
><P
>&#13;            Text::Wrap (2001.0131)
          </P
></LI
><LI
><P
>&#13;            Mail::Mailer (1.65)
          </P
></LI
><LI
><P
>&#13;            Storable (any)
          </P
></LI
></OL
>

      Optional Perl modules:
      <P
></P
><OL
TYPE="1"
><LI
><P
>&#13;            <A
HREF="#install-modules-gd"
>GD</A
>
            (1.20) for bug charting
          </P
></LI
><LI
><P
>&#13;            <A
HREF="#install-modules-chart-base"
>Chart::Base</A
>
            (1.0) for bug charting
          </P
></LI
><LI
><P
>&#13;            <A
HREF="#install-modules-gd-graph"
>GD::Graph</A
>
            (any) for bug charting
          </P
></LI
><LI
><P
>&#13;            <A
HREF="#install-modules-gd-text-align"
>GD::Text::Align</A
>
            (any) for bug charting
          </P
></LI
><LI
><P
>&#13;            <A
HREF="#install-modules-xml-parser"
>XML::Parser</A
>
            (any) for the XML interface
          </P
></LI
><LI
><P
>&#13;            <A
HREF="#install-modules-patchreader"
>PatchReader</A
>
            (0.9.4) for pretty HTML view of patches
          </P
></LI
><LI
><P
>&#13;            <A
HREF="#install-modules-mime-parser"
>MIME::Parser</A
>
            (any) for the optional email interface
          </P
></LI
></OL
>          
      </P
><DIV
CLASS="section"
><HR><H4
CLASS="section"
><A
NAME="install-modules-dbd-mysql"
>2.1.5.1. DBD::mysql</A
></H4
><P
>The installation process will ask you a few questions about the
        desired compilation target and your MySQL installation. For most of the
        questions the provided default will be adequate, but when asked if your
        desired target is the MySQL or mSQL packages, you should
        select the MySQL-related ones. Later you will be asked if you wish to
        provide backwards compatibility with the older MySQL packages; you
        should answer YES to this question. The default is NO.</P
><P
>A host of 'localhost' should be fine. A testing user of 'test',
        with a null password, should have sufficient access to run
        tests on the 'test' database which MySQL creates upon installation.
        </P
></DIV
><DIV
CLASS="section"
><HR><H4
CLASS="section"
><A
NAME="install-modules-template"
>2.1.5.2. Template Toolkit (2.08)</A
></H4
><P
>When you install Template Toolkit, you'll get asked various
        questions about features to enable. The defaults are fine, except
        that it is recommended you use the high speed XS Stash of the Template
        Toolkit, in order to achieve best performance.
        </P
></DIV
><DIV
CLASS="section"
><HR><H4
CLASS="section"
><A
NAME="install-modules-gd"
>2.1.5.3. GD (1.20)</A
></H4
><P
>The GD module is only required if you want graphical reports.
        </P
><DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>The Perl GD module requires some other libraries that may or
          may not be installed on your system, including 
          <CODE
CLASS="classname"
>libpng</CODE
>
          and 
          <CODE
CLASS="classname"
>libgd</CODE
>. 
          The full requirements are listed in the Perl GD module README.
          If compiling GD fails, it's probably because you're
          missing a required library.</P
></TD
></TR
></TABLE
></DIV
><DIV
CLASS="tip"
><P
></P
><TABLE
CLASS="tip"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/tip.gif"
HSPACE="5"
ALT="Tip"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>The version of the GD module you need is very closely tied
          to the <CODE
CLASS="classname"
>libgd</CODE
> version installed on your system.
          If you have a version 1.x of <CODE
CLASS="classname"
>libgd</CODE
> the 2.x
          versions of the GD module won't work for you.
         </P
></TD
></TR
></TABLE
></DIV
></DIV
><DIV
CLASS="section"
><HR><H4
CLASS="section"
><A
NAME="install-modules-chart-base"
>2.1.5.4. Chart::Base (1.0)</A
></H4
><P
>The Chart::Base module is only required if you want graphical 
        reports. 
        Note that earlier versions that 0.99c used GIFs, which are no longer
        supported by the latest versions of GD.</P
></DIV
><DIV
CLASS="section"
><HR><H4
CLASS="section"
><A
NAME="install-modules-gd-graph"
>2.1.5.5. GD::Graph (any)</A
></H4
><P
>The GD::Graph module is only required if you want graphical 
        reports.
        </P
></DIV
><DIV
CLASS="section"
><HR><H4
CLASS="section"
><A
NAME="install-modules-gd-text-align"
>2.1.5.6. GD::Text::Align (any)</A
></H4
><P
>The GD::Text::Align module is only required if you want graphical 
        reports.
        </P
></DIV
><DIV
CLASS="section"
><HR><H4
CLASS="section"
><A
NAME="install-modules-xml-parser"
>2.1.5.7. XML::Parser (any)</A
></H4
><P
>The XML::Parser module is only required if you want to import
        XML bugs using the <TT
CLASS="filename"
>importxml.pl</TT
>
        script. This is required to use Bugzilla's "move bugs" feature;
        you may also want to use it for migrating from another bug database.
        XML::Parser requires that the
        <CODE
CLASS="classname"
>expat</CODE
> library is already installed on your machine.
        </P
></DIV
><DIV
CLASS="section"
><HR><H4
CLASS="section"
><A
NAME="install-modules-mime-parser"
>2.1.5.8. MIME::Parser (any)</A
></H4
><P
>The MIME::Parser module is only required if you want to use the 
        email interface
        located in the <TT
CLASS="filename"
>contrib</TT
> directory.
        </P
></DIV
><DIV
CLASS="section"
><HR><H4
CLASS="section"
><A
NAME="install-modules-patchreader"
>2.1.5.9. PatchReader (0.9.4)</A
></H4
><P
>The PatchReader module is only required if you want to use 
        Patch Viewer, a
        Bugzilla feature to show code patches in your web browser in a more
        readable form. 
        </P
></DIV
></DIV
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="install-MTA"
>2.1.6. Mail Transfer Agent (MTA)</A
></H3
><P
>&#13;        Bugzilla is dependent on the availability of an e-mail system for its 
        user authentication and for other tasks.
      </P
><DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;          This is not entirely true.  It is possible to completely disable 
          email sending, or to have Bugzilla store email messages in a 
          file instead of sending them.  However, this is mainly intended 
          for testing, as disabling or diverting email on a production 
          machine would mean that users could miss important events (such 
          as bug changes or the creation of new accouts).
        </P
><P
>&#13;          For more information, see the "maildeliverymethod" parameter in 
          <A
HREF="#parameters"
>Section 3.1</A
>.
        </P
></TD
></TR
></TABLE
></DIV
><P
>&#13;        On Linux, any Sendmail-compatible MTA (Mail Transfer Agent) will 
        suffice.  Sendmail, Postfix, qmail and Exim are examples of common 
        MTAs. Sendmail is the original Unix MTA, but the others are easier to 
        configure, and therefore many people replace Sendmail with Postfix or 
        Exim. They are drop-in replacements, so Bugzilla will not 
        distinguish between them.
      </P
><P
>&#13;        If you are using Sendmail, version 8.7 or higher is required.
        If you are using a Sendmail-compatible MTA, it must be congruent with 
        at least version 8.7 of Sendmail.
      </P
><P
>&#13;        Consult the manual for the specific MTA you choose for detailed 
        installation instructions. Each of these programs will have their own 
        configuration files where you must configure certain parameters to 
        ensure that the mail is delivered properly. They are implemented 
        as services, and you should ensure that the MTA is in the auto-start 
        list of services for the machine.
      </P
><P
>&#13;        If a simple mail sent with the command-line 'mail' program 
        succeeds, then Bugzilla should also be fine.
      </P
></DIV
></DIV
><DIV
CLASS="section"
><HR><H2
CLASS="section"
><A
NAME="configuration"
>2.2. Configuration</A
></H2
><DIV
CLASS="warning"
><P
></P
><TABLE
CLASS="warning"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/warning.gif"
HSPACE="5"
ALT="Warning"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;        Poorly-configured MySQL and Bugzilla installations have
        given attackers full access to systems in the past. Please take the
        security parts of these guidelines seriously, even for Bugzilla 
        machines hidden away behind your firewall. Be certain to read
        <A
HREF="#security"
>Chapter 4</A
> for some important security tips.
      </P
></TD
></TR
></TABLE
></DIV
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="localconfig"
>2.2.1. localconfig</A
></H3
><P
>&#13;        You should now run <TT
CLASS="filename"
>checksetup.pl</TT
> again, this time
        without the <VAR
CLASS="literal"
>--check-modules</VAR
> switch.
      </P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="screen"
><SAMP
CLASS="prompt"
>bash#</SAMP
> ./checksetup.pl</PRE
></FONT
></TD
></TR
></TABLE
><P
>&#13;        This time, <TT
CLASS="filename"
>checksetup.pl</TT
> should tell you that all
        the correct modules are installed and will display a message about, and
        write out a  file called, <TT
CLASS="filename"
>localconfig</TT
>. This file
        contains the default settings for a number of Bugzilla parameters.
      </P
><P
>&#13;        Load this file in your editor. The only value you 
        <EM
>need</EM
> to change is $db_pass, the password for
        the user you will create for your database. Pick a strong
        password (for simplicity, it should not contain single quote
        characters) and put it here.
      </P
><P
>&#13;        You may need to change the value of 
        <EM
>webservergroup</EM
> if your web server does not 
        run in the "apache" group.  On Debian, for example, Apache runs in 
        the "www-data" group.  If you are going to run Bugzilla on a 
        machine where you do not have root access (such as on a shared web 
        hosting account), you will need to leave
        <EM
>webservergroup</EM
> empty, ignoring the warnings 
        that <TT
CLASS="filename"
>checksetup.pl</TT
> will subsequently display 
        every time it in run.
      </P
><P
>&#13;        The other options in the <TT
CLASS="filename"
>localconfig</TT
> file
        are documented by their accompanying comments. If you have a slightly
        non-standard MySQL setup, you may wish to change one or more of
        the other "$db_*" parameters. 
      </P
><P
>&#13;        You may also wish to change the names of 
        the priorities, severities, operating systems and platforms for your
        installation. However, you can always change these after installation
        has finished; if you then re-run <TT
CLASS="filename"
>checksetup.pl</TT
>,
        the changes will get picked up.
      </P
></DIV
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="database-engine"
>2.2.2. Database Server</A
></H3
><P
>This section deals with configuring your database server for use
      with Bugzilla. Currently <A
HREF="#mysql"
>Section 2.2.2.1</A
> and
      <A
HREF="#postgresql"
>Section 2.2.2.2</A
> are available.</P
><DIV
CLASS="section"
><HR><H4
CLASS="section"
><A
NAME="mysql"
>2.2.2.1. MySQL</A
></H4
><DIV
CLASS="caution"
><P
></P
><TABLE
CLASS="caution"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/caution.gif"
HSPACE="5"
ALT="Caution"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;            MySQL's default configuration is very insecure.
            <A
HREF="#security-mysql"
>Section 4.2</A
> has some good information for
            improving your installation's security.
          </P
></TD
></TR
></TABLE
></DIV
><DIV
CLASS="section"
><HR><H5
CLASS="section"
><A
NAME="install-setupdatabase"
>2.2.2.1.1. Allow large attachments</A
></H5
><P
>&#13;            By default, MySQL will only accept packets up to 64Kb in size.
            If you want to have attachments larger than this, you will need
            to modify your <TT
CLASS="filename"
>/etc/my.cnf</TT
> as below.
          </P
><P
>&#13;            If you are using MySQL 4.0 or newer, enter:
          </P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="screen"
>  [mysqld]
  # Allow packets up to 1M
  max_allowed_packet=1M</PRE
></FONT
></TD
></TR
></TABLE
><P
>&#13;            If you are using an older version of MySQL, enter:
          </P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="screen"
>  [mysqld]
  # Allow packets up to 1M
  set-variable = max_allowed_packet=1M</PRE
></FONT
></TD
></TR
></TABLE
><P
>&#13;            There is also a parameter in Bugzilla called 'maxattachmentsize'
            (default = 1000 Kb) that controls the maximum allowable attachment
            size. Attachments larger than <EM
>either</EM
> the 
            'max_allowed_packet' or 'maxattachmentsize' value will not be
            accepted by Bugzilla.
          </P
><DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;              This does not affect Big Files, attachments that are stored directly
              on disk instead of in the database.  Their maximum size is
              controlled using the 'maxlocalattachment' parameter.
            </P
></TD
></TR
></TABLE
></DIV
></DIV
><DIV
CLASS="section"
><HR><H5
CLASS="section"
><A
NAME="AEN439"
>2.2.2.1.2. Allow small words in full-text indexes</A
></H5
><P
>By default, words must be at least four characters in length
          in order to be indexed by MySQL's full-text indexes. This causes
          a lot of Bugzilla specific words to be missed, including "cc",
          "ftp" and "uri".</P
><P
>MySQL can be configured to index those words by setting the
          ft_min_word_len param to the minimum size of the words to index.
          This can be done by modifying the <TT
CLASS="filename"
>/etc/my.cnf</TT
>
          according to the example below:</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="screen"
>  [mysqld]
  # Allow small words in full-text indexes
  ft_min_word_len=2</PRE
></FONT
></TD
></TR
></TABLE
><P
>Rebuilding the indexes can be done based on documentation found at
          <A
HREF="http://www.mysql.com/doc/en/Fulltext_Fine-tuning.html"
TARGET="_top"
>http://www.mysql.com/doc/en/Fulltext_Fine-tuning.html</A
>.
          </P
><DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;              The ft_min_word_len parameter is only suported in MySQL v4 or higher.
            </P
></TD
></TR
></TABLE
></DIV
></DIV
><DIV
CLASS="section"
><HR><H5
CLASS="section"
><A
NAME="AEN449"
>2.2.2.1.3. Permit attachments table to grow beyond 4GB</A
></H5
><P
>&#13;            By default, MySQL will limit the size of a table to 4GB.
            This limit is present even if the underlying filesystem
            has no such limit.  To set a higher limit, follow these
            instructions.
          </P
><P
>&#13;            Run the <TT
CLASS="filename"
>MySQL</TT
> command-line client and
            enter:
          </P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="screen"
>  <SAMP
CLASS="prompt"
>mysql&#62;</SAMP
> ALTER TABLE attachments 
            AVG_ROW_LENGTH=1000000, MAX_ROWS=20000;
          </PRE
></FONT
></TD
></TR
></TABLE
><P
>&#13;            The above command will change the limit to 20GB. Mysql will have 
            to make a temporary copy of your entire table to do this. Ideally, 
            you should do this when your attachments table is still small.
          </P
><DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;              This does not affect Big Files, attachments that are stored directly
              on disk instead of in the database.
            </P
></TD
></TR
></TABLE
></DIV
></DIV
><DIV
CLASS="section"
><HR><H5
CLASS="section"
><A
NAME="install-setupdatabase-adduser"
>2.2.2.1.4. Add a user to MySQL</A
></H5
><P
>&#13;            You need to add a new MySQL user for Bugzilla to use.
            (It's not safe to have Bugzilla use the MySQL root account.)
            The following instructions assume the defaults in
            <TT
CLASS="filename"
>localconfig</TT
>; if you changed those,
            you need to modify the SQL command appropriately. You will
            need the <VAR
CLASS="replaceable"
>$db_pass</VAR
> password you
            set in <TT
CLASS="filename"
>localconfig</TT
> in 
            <A
HREF="#localconfig"
>Section 2.2.1</A
>.
          </P
><P
>&#13;            We use an SQL <B
CLASS="command"
>GRANT</B
> command to create
            a <SPAN
CLASS="QUOTE"
>"bugs"</SPAN
> user. This also restricts the 
            <SPAN
CLASS="QUOTE"
>"bugs"</SPAN
>user to operations within a database
            called <SPAN
CLASS="QUOTE"
>"bugs"</SPAN
>, and only allows the account
            to connect from <SPAN
CLASS="QUOTE"
>"localhost"</SPAN
>. Modify it to
            reflect your setup if you will be connecting from another
            machine or as a different user.
          </P
><P
>&#13;            Run the <TT
CLASS="filename"
>mysql</TT
> command-line client.
          </P
><P
>&#13;            If you are using MySQL 4.0 or newer, enter:
          </P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="screen"
>  <SAMP
CLASS="prompt"
>mysql&#62;</SAMP
> GRANT SELECT, INSERT,
           UPDATE, DELETE, INDEX, ALTER, CREATE, LOCK TABLES,
           CREATE TEMPORARY TABLES, DROP, REFERENCES ON bugs.*
           TO bugs@localhost IDENTIFIED BY '<VAR
CLASS="replaceable"
>$db_pass</VAR
>';
           <SAMP
CLASS="prompt"
>mysql&#62;</SAMP
> FLUSH PRIVILEGES;</PRE
></FONT
></TD
></TR
></TABLE
><P
>&#13;            If you are using an older version of MySQL,the
            <SAMP
CLASS="computeroutput"
>LOCK TABLES</SAMP
> and 
            <SAMP
CLASS="computeroutput"
>CREATE TEMPORARY TABLES</SAMP
>
            permissions will be unavailable and should be removed from
            the permissions list. In this case, the following command
            line can be used:
          </P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="screen"
>  <SAMP
CLASS="prompt"
>mysql&#62;</SAMP
> GRANT SELECT, INSERT,
           UPDATE, DELETE, INDEX, ALTER, CREATE, DROP,
           REFERENCES ON bugs.* TO bugs@localhost IDENTIFIED BY
           '<VAR
CLASS="replaceable"
>$db_pass</VAR
>';
           <SAMP
CLASS="prompt"
>mysql&#62;</SAMP
> FLUSH PRIVILEGES;</PRE
></FONT
></TD
></TR
></TABLE
></DIV
></DIV
><DIV
CLASS="section"
><HR><H4
CLASS="section"
><A
NAME="postgresql"
>2.2.2.2. PostgreSQL</A
></H4
><DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>Note if you are using PostgreSQL 8.0.1 or higher, then you
          will require to use a version of DBD::Pg which is equal to or
          greater than version 1.41
          </P
></TD
></TR
></TABLE
></DIV
><DIV
CLASS="section"
><HR><H5
CLASS="section"
><A
NAME="AEN490"
>2.2.2.2.1. Add a User to PostgreSQL</A
></H5
><P
>You need to add a new user to PostgreSQL for the Bugzilla
          application to use when accessing the database. The following instructions
          assume the defaults in <TT
CLASS="filename"
>localconfig</TT
>; if you
          changed those, you need to modify the commands appropriately. You will
          need the <VAR
CLASS="replaceable"
>$db_pass</VAR
> password you
          set in <TT
CLASS="filename"
>localconfig</TT
> in 
          <A
HREF="#localconfig"
>Section 2.2.1</A
>.</P
><P
>On most systems, to create the user in PostgreSQL, you will need to
          login as the root user, and then</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="screen"
> <SAMP
CLASS="prompt"
>bash#</SAMP
> su - postgres</PRE
></FONT
></TD
></TR
></TABLE
><P
>As the postgres user, you then need to create a new user: </P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="screen"
> <SAMP
CLASS="prompt"
>bash$</SAMP
> createuser -U postgres -dAP bugs</PRE
></FONT
></TD
></TR
></TABLE
><P
>When asked for a password, provide the password which will be set as
          <VAR
CLASS="replaceable"
>$db_pass</VAR
> in <TT
CLASS="filename"
>localconfig</TT
>.
          The created user will have the ability to create databases and will not be
          able to create new users.</P
></DIV
><DIV
CLASS="section"
><HR><H5
CLASS="section"
><A
NAME="AEN506"
>2.2.2.2.2. Configure PostgreSQL</A
></H5
><P
>Now, you will need to edit <TT
CLASS="filename"
>pg_hba.conf</TT
> which is
          usually located in <TT
CLASS="filename"
>/var/lib/pgsql/data/</TT
>. In this file,
          you will need to add a new line to it as follows:</P
><P
>&#13;            <SAMP
CLASS="computeroutput"
>host   all    bugs   127.0.0.1    255.255.255.255  md5</SAMP
>
          </P
><P
>This means that for TCP/IP (host) connections, allow connections from
          '127.0.0.1' to 'all' databases on this server from the 'bugs' user, and use
          password authentication (md5) for that user.</P
><P
>If you are using <EM
>versions of PostgreSQL
          before version 8</EM
>, you may also need to edit <TT
CLASS="filename"
>postgresql.conf</TT
>
          , also usually found in the <TT
CLASS="filename"
>/var/lib/pgsql/data/</TT
> folder.
          You will need to make a single line change, changing</P
><P
>&#13;	    <SAMP
CLASS="computeroutput"
># tcpip_socket = false</SAMP
>
          </P
><P
>to</P
><P
>&#13;	    <SAMP
CLASS="computeroutput"
>tcpip_socket = true</SAMP
>
          </P
><P
>Now, you will need to restart PostgreSQL, but you will need to fully
          stop and start the server rather than just restarting due to the possibility
          of a change to <TT
CLASS="filename"
>postgresql.conf</TT
>. After the server has
          restarted, you will need to edit <TT
CLASS="filename"
>localconfig</TT
>, finding
          the <VAR
CLASS="literal"
>$db_driver</VAR
> variable and setting it to
          <VAR
CLASS="literal"
>Pg</VAR
> and changing the password in <VAR
CLASS="literal"
>$db_pass</VAR
>
          to the one you picked previously, while setting up the account.</P
></DIV
></DIV
></DIV
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="AEN529"
>2.2.3. checksetup.pl</A
></H3
><P
>&#13;        Next, rerun <TT
CLASS="filename"
>checksetup.pl</TT
>. It reconfirms
        that all the modules are present, and notices the altered 
        localconfig file, which it assumes you have edited to your
        satisfaction. It compiles the UI templates,
        connects to the database using the 'bugs'
        user you created and the password you defined, and creates the 
        'bugs' database and the tables therein. 
      </P
><P
>&#13;        After that, it asks for details of an administrator account. Bugzilla
        can have multiple administrators - you can create more later - but
        it needs one to start off with.
        Enter the email address of an administrator, his or her full name, 
        and a suitable Bugzilla password.
      </P
><P
>&#13;        <TT
CLASS="filename"
>checksetup.pl</TT
> will then finish. You may rerun
        <TT
CLASS="filename"
>checksetup.pl</TT
> at any time if you wish.
      </P
></DIV
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="http"
>2.2.4. Web server</A
></H3
><P
>&#13;        Configure your web server according to the instructions in the
        appropriate section. (If it makes a difference in your choice,
        the Bugzilla Team recommends Apache.) Regardless of which webserver
        you are using, however, ensure that sensitive information is
        not remotely available by properly applying the access controls in
        <A
HREF="#security-webserver-access"
>Section 4.3.1</A
>.
      </P
><DIV
CLASS="section"
><HR><H4
CLASS="section"
><A
NAME="http-apache"
>2.2.4.1. Apache <SPAN
CLASS="productname"
>httpd</SPAN
></A
></H4
><P
>&#13;          To configure your Apache web server to work with Bugzilla,
          do the following:
        </P
><DIV
CLASS="procedure"
><OL
TYPE="1"
><LI
><P
>&#13;              Load <TT
CLASS="filename"
>httpd.conf</TT
> in your editor.
              In Fedora and Red Hat Linux, this file is found in
              <TT
CLASS="filename"
>/etc/httpd/conf</TT
>.
            </P
></LI
><LI
><P
>&#13;              Apache uses <SAMP
CLASS="computeroutput"
>&#60;Directory&#62;</SAMP
>
              directives to permit fine-grained permission setting. Add the
              following lines to a directive that applies to the location
              of your Bugzilla installation. (If such a section does not
              exist, you'll want to add one.) In this example, Bugzilla has
              been installed at 
              <TT
CLASS="filename"
>/var/www/html/bugzilla</TT
>.
            </P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;&#60;Directory /var/www/html/bugzilla&#62;
  AddHandler cgi-script .cgi
  Options +Indexes +ExecCGI
  DirectoryIndex index.cgi
  AllowOverride Limit
&#60;/Directory&#62;
            </PRE
></FONT
></TD
></TR
></TABLE
><P
>&#13;              These instructions: allow apache to run .cgi files found
              within the bugzilla directory; instructs the server to look
              for a file called <TT
CLASS="filename"
>index.cgi</TT
> if someone
              only types the directory name into the browser; and allows
              Bugzilla's <TT
CLASS="filename"
>.htaccess</TT
> files to override
              global permissions.
            </P
><DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;                It is possible to make these changes globally, or to the
                directive controlling Bugzilla's parent directory (e.g.
                <SAMP
CLASS="computeroutput"
>&#60;Directory /var/www/html/&#62;</SAMP
>).
                Such changes would also apply to the Bugzilla directory...
                but they would also apply to many other places where they
                may or may not be appropriate. In most cases, including
                this one, it is better to be as restrictive as possible
                when granting extra access.
              </P
></TD
></TR
></TABLE
></DIV
></LI
><LI
><P
>&#13;              <TT
CLASS="filename"
>checksetup.pl</TT
> can set tighter permissions
              on Bugzilla's files and directories if it knows what group the
              webserver runs as. Find the <SAMP
CLASS="computeroutput"
>Group</SAMP
>
              line in <TT
CLASS="filename"
>httpd.conf</TT
>, place the value found
              there in the <VAR
CLASS="replaceable"
>$webservergroup</VAR
> variable
              in <TT
CLASS="filename"
>localconfig</TT
>, then rerun
              <TT
CLASS="filename"
>checksetup.pl</TT
>.
            </P
></LI
><LI
><P
>&#13;              Optional: If Bugzilla does not actually reside in the webspace
              directory, but instead has been symbolically linked there, you
              will need to add the following to the
              <SAMP
CLASS="computeroutput"
>Options</SAMP
> line of the Bugzilla 
              <SAMP
CLASS="computeroutput"
>&#60;Directory&#62;</SAMP
> directive
              (the same one as in the step above):
            </P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13; +FollowSymLinks
            </PRE
></FONT
></TD
></TR
></TABLE
><P
>&#13;              Without this directive, Apache will not follow symbolic links
              to places outside its own directory structure, and you will be
              unable to run Bugzilla.
            </P
></LI
></OL
></DIV
></DIV
><DIV
CLASS="section"
><HR><H4
CLASS="section"
><A
NAME="http-iis"
>2.2.4.2. Microsoft <SPAN
CLASS="productname"
>Internet Information Services</SPAN
></A
></H4
><P
>&#13;          If you are running Bugzilla on Windows and choose to use
          Microsoft's <SPAN
CLASS="productname"
>Internet Information Services</SPAN
>
          or <SPAN
CLASS="productname"
>Personal Web Server</SPAN
> you will need
          to perform a number of other configuration steps as explained below.
          You may also want to refer to the following Microsoft Knowledge
          Base articles: 
          <A
HREF="http://support.microsoft.com/default.aspx?scid=kb;en-us;245225"
TARGET="_top"
>245225</A
> 
          <SPAN
CLASS="QUOTE"
>"HOW TO: Configure and Test a PERL Script with IIS 4.0,
          5.0, and 5.1"</SPAN
> (for <SPAN
CLASS="productname"
>Internet Information
          Services</SPAN
>) and 
          <A
HREF="http://support.microsoft.com/default.aspx?scid=kb;en-us;231998"
TARGET="_top"
>231998</A
>          
          <SPAN
CLASS="QUOTE"
>"HOW TO: FP2000: How to Use Perl with Microsoft Personal Web
          Server on Windows 95/98"</SPAN
> (for <SPAN
CLASS="productname"
>Personal Web
          Server</SPAN
>).
        </P
><P
>&#13;          You will need to create a virtual directory for the Bugzilla
          install.  Put the Bugzilla files in a directory that is named
          something <EM
>other</EM
> than what you want your
          end-users accessing.  That is, if you want your users to access
          your Bugzilla installation through 
          <SPAN
CLASS="QUOTE"
>"http://&#60;yourdomainname&#62;/Bugzilla"</SPAN
>, then do
          <EM
>not</EM
> put your Bugzilla files in a directory
          named <SPAN
CLASS="QUOTE"
>"Bugzilla"</SPAN
>.  Instead, place them in a different
          location, and then use the IIS Administration tool to create a
          Virtual Directory named "Bugzilla" that acts as an alias for the
          actual location of the files.  When creating that virtual directory,
          make sure you add the <SPAN
CLASS="QUOTE"
>"Execute (such as ISAPI applications or
          CGI)"</SPAN
> access permission.
        </P
><P
>&#13;          You will also need to tell IIS how to handle Bugzilla's
          .cgi files. Using the IIS Administration tool again, open up
          the properties for the new virtual directory and select the
          Configuration option to access the Script Mappings. Create an
          entry mapping .cgi to:
        </P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;&#60;full path to perl.exe &#62;\perl.exe -x&#60;full path to Bugzilla&#62; -wT "%s" %s
        </PRE
></FONT
></TD
></TR
></TABLE
><P
>&#13;          For example:
        </P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;c:\perl\bin\perl.exe -xc:\bugzilla -wT "%s" %s
        </PRE
></FONT
></TD
></TR
></TABLE
><DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;            The ActiveState install may have already created an entry for
            .pl files that is limited to <SPAN
CLASS="QUOTE"
>"GET,HEAD,POST"</SPAN
>. If
            so, this mapping should be <EM
>removed</EM
> as
            Bugzilla's .pl files are not designed to be run via a webserver.
          </P
></TD
></TR
></TABLE
></DIV
><P
>&#13;          IIS will also need to know that the index.cgi should be treated
          as a default document.  On the Documents tab page of the virtual
          directory properties, you need to add index.cgi as a default
          document type.  If you  wish, you may remove the other default
          document types for this particular virtual directory, since Bugzilla 
          doesn't use any of them.
        </P
><P
>&#13;          Also, and this can't be stressed enough, make sure that files
          such as <TT
CLASS="filename"
>localconfig</TT
> and your
          <TT
CLASS="filename"
>data</TT
> directory are
          secured as described in <A
HREF="#security-webserver-access"
>Section 4.3.1</A
>.
        </P
></DIV
></DIV
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="install-config-bugzilla"
>2.2.5. Bugzilla</A
></H3
><P
>&#13;        Your Bugzilla should now be working. Access 
        <TT
CLASS="filename"
>http://&#60;your-bugzilla-server&#62;/</TT
> - 
        you should see the Bugzilla
        front page. If not, consult the Troubleshooting section,
        <A
HREF="#troubleshooting"
>Appendix B</A
>.
      </P
><DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;          The URL above may be incorrect if you installed Bugzilla into a 
          subdirectory or used a symbolic link from your web site root to 
          the Bugzilla directory.
        </P
></TD
></TR
></TABLE
></DIV
><P
>&#13;        Log in with the administrator account you defined in the last 
        <TT
CLASS="filename"
>checksetup.pl</TT
> run. You should go through 
        the parameters on the Edit Parameters page
        (see link in the footer) and see if there are any you wish to
        change. 
        They key parameters are documented in <A
HREF="#parameters"
>Section 3.1</A
>;
        you should certainly alter 
        <B
CLASS="command"
>maintainer</B
> and <B
CLASS="command"
>urlbase</B
>; 
        you may also want to alter 
        <B
CLASS="command"
>cookiepath</B
> or <B
CLASS="command"
>requirelogin</B
>.
      </P
><P
>&#13;        This would also be a good time to revisit the
        <TT
CLASS="filename"
>localconfig</TT
> file and make sure that the 
        names of the priorities, severities, platforms and operating systems
        are those you wish to use when you start creating bugs. Remember
        to rerun <TT
CLASS="filename"
>checksetup.pl</TT
> if you change it.
      </P
><P
>&#13;        Bugzilla has several optional features which require extra 
        configuration. You can read about those in
        <A
HREF="#extraconfig"
>Section 2.3</A
>.
      </P
></DIV
></DIV
><DIV
CLASS="section"
><HR><H2
CLASS="section"
><A
NAME="extraconfig"
>2.3. Optional Additional Configuration</A
></H2
><P
>&#13;      Bugzilla has a number of optional features. This section describes how
      to configure or enable them.
    </P
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="AEN628"
>2.3.1. Bug Graphs</A
></H3
><P
>If you have installed the necessary Perl modules you
      can start collecting statistics for the nifty Bugzilla 
      graphs.</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="screen"
><SAMP
CLASS="prompt"
>bash#</SAMP
> <B
CLASS="command"
>crontab -e</B
></PRE
></FONT
></TD
></TR
></TABLE
><P
>&#13;        This should bring up the crontab file in your editor. 
        Add a cron entry like this to run 
        <TT
CLASS="filename"
>collectstats.pl</TT
> 
        daily at 5 after midnight:
      </P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>5 0 * * * cd &#60;your-bugzilla-directory&#62; ; ./collectstats.pl</PRE
></FONT
></TD
></TR
></TABLE
><P
>&#13;        After two days have passed you'll be able to view bug graphs from
        the Reports page.
      </P
><P
>&#13;        When upgrading Bugzilla, this format may change.
        To create new status data, (re)move old data and run the following
        commands:
      </P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="screen"
>&#13;        <SAMP
CLASS="prompt"
>bash$</SAMP
>
        <B
CLASS="command"
>cd &#60;your-bugzilla-directory&#62;</B
>
        <SAMP
CLASS="prompt"
>bash$</SAMP
>
        <B
CLASS="command"
>./collectstats.pl --regenerate</B
>
      </PRE
></FONT
></TD
></TR
></TABLE
><DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;          Windows does not have 'cron', but it does have the Task
          Scheduler, which performs the same duties. There are also
          third-party tools that can be used to implement cron, such as
          <A
HREF="http://www.nncron.ru/"
TARGET="_top"
>nncron</A
>.
        </P
></TD
></TR
></TABLE
></DIV
></DIV
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="AEN647"
>2.3.2. Dependency Charts</A
></H3
><P
>As well as the text-based dependency trees, Bugzilla also
      supports a graphical view of dependency relationships, using a 
      package called 'dot'.
      Exactly how this works is controlled by the 'webdotbase' parameter,
      which can have one of three values:
      </P
><P
>&#13;        <P
></P
><OL
TYPE="1"
><LI
><P
>&#13;            A complete file path to the command 'dot' (part of 
            <A
HREF="http://www.graphviz.org/"
TARGET="_top"
>GraphViz</A
>) 
            will generate the graphs locally
            </P
></LI
><LI
><P
>&#13;            A URL prefix pointing to an installation of the webdot package will
            generate the graphs remotely
            </P
></LI
><LI
><P
>&#13;            A blank value will disable dependency graphing.
            </P
></LI
></OL
>
      </P
><P
>The easiest way to get this working is to install
      <A
HREF="http://www.graphviz.org/"
TARGET="_top"
>GraphViz</A
>. If you
      do that, you need to
      <A
HREF="http://httpd.apache.org/docs/mod/mod_imap.html"
TARGET="_top"
>enable
      server-side image maps</A
> in Apache.
      Alternatively, you could set up a webdot server, or use the AT&#38;T 
      public webdot server. This is the default for the webdotbase param, 
      but it's often overloaded and slow. Note that AT&#38;T's server 
      won't work
      if Bugzilla is only accessible using HARTS. 
      <EM
>Editor's note: What the heck is HARTS? Google doesn't know...
      </EM
>
      </P
></DIV
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="installation-whining-cron"
>2.3.3. The Whining Cron</A
></H3
><P
>What good are
      bugs if they're not annoying? To help make them more so you
      can set up Bugzilla's automatic whining system to complain at engineers
      which leave their bugs in the NEW or REOPENED state without triaging them.
      </P
><P
>&#13;        This can be done by adding the following command as a daily
        crontab entry, in the same manner as explained above for bug
        graphs. This example runs it at 12.55am. 
      </P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>55 0 * * * cd &#60;your-bugzilla-directory&#62; ; ./whineatnews.pl</PRE
></FONT
></TD
></TR
></TABLE
><DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;          Windows does not have 'cron', but it does have the Task
          Scheduler, which performs the same duties. There are also
          third-party tools that can be used to implement cron, such as
          <A
HREF="http://www.nncron.ru/"
TARGET="_top"
>nncron</A
>.
        </P
></TD
></TR
></TABLE
></DIV
></DIV
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="installation-whining"
>2.3.4. Whining</A
></H3
><P
>&#13;        As of Bugzilla 2.20, users can configure Bugzilla to regularly annoy 
        them at regular intervals, by having Bugzilla execute saved searches
        at certain times and emailing the results to the user.  This is known
        as "Whining".  The process of configuring Whining is described 
        in <A
HREF="#whining"
>Section 6.13</A
>, but for it to work a Perl script must be
        executed at regular intervals.
      </P
><P
>&#13;        This can be done by adding the following command as a daily
        crontab entry, in the same manner as explained above for bug
        graphs. This example runs it every 15 minutes. 
      </P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>*/15 * * * * cd &#60;your-bugzilla-directory&#62; ; ./whine.pl</PRE
></FONT
></TD
></TR
></TABLE
><DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;          Whines can be executed as often as every 15 minutes, so if you specify
          longer intervals between executions of whine.pl, some users may not 
          be whined at as often as they would expect.  Depending on the person,
          this can either be a very Good Thing or a very Bad Thing.
        </P
></TD
></TR
></TABLE
></DIV
><DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;          Windows does not have 'cron', but it does have the Task
          Scheduler, which performs the same duties. There are also
          third-party tools that can be used to implement cron, such as
          <A
HREF="http://www.nncron.ru/"
TARGET="_top"
>nncron</A
>.
        </P
></TD
></TR
></TABLE
></DIV
></DIV
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="patch-viewer"
>2.3.5. Patch Viewer</A
></H3
><P
>&#13;        Patch Viewer is the engine behind Bugzilla's graphical display of
        code patches. You can integrate this with copies of the
        <TT
CLASS="filename"
>cvs</TT
>, <TT
CLASS="filename"
>lxr</TT
> and
        <TT
CLASS="filename"
>bonsai</TT
> tools if you have them, by giving
        the locations of your installation of these tools in
        <TT
CLASS="filename"
>editparams.cgi</TT
>.
      </P
><P
>&#13;        Patch Viewer also optionally will use the 
        <TT
CLASS="filename"
>cvs</TT
>, <TT
CLASS="filename"
>diff</TT
> and 
        <TT
CLASS="filename"
>interdiff</TT
>
        command-line utilities if they exist on the system.
        Interdiff can be obtained from 
        <A
HREF="http://cyberelk.net/tim/patchutils/"
TARGET="_top"
>http://cyberelk.net/tim/patchutils/</A
>.
        If these programs are not in the system path, you can configure
        their locations in <TT
CLASS="filename"
>localconfig</TT
>.
      </P
></DIV
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="bzldap"
>2.3.6. LDAP Authentication</A
></H3
><P
>LDAP authentication is a module for Bugzilla's plugin 
      authentication architecture.
      </P
><P
>&#13;      The existing authentication
      scheme for Bugzilla uses email addresses as the primary user ID, and a
      password to authenticate that user. All places within Bugzilla where
      you need to deal with user ID (e.g assigning a bug) use the email
      address. The LDAP authentication builds on top of this scheme, rather
      than replacing it. The initial log in is done with a username and
      password for the LDAP directory. This then fetches the email address
      from LDAP and authenticates seamlessly in the standard Bugzilla
      authentication scheme using this email address. If an account for this
      address already exists in your Bugzilla system, it will log in to that
      account. If no account for that email address exists, one is created at
      the time of login. (In this case, Bugzilla will attempt to use the
      "displayName" or "cn" attribute to determine the user's full name.)
      After authentication, all other user-related tasks are still handled by
      email address, not LDAP username. You still assign bugs by email
      address, query on users by email address, etc.
      </P
><DIV
CLASS="caution"
><P
></P
><TABLE
CLASS="caution"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/caution.gif"
HSPACE="5"
ALT="Caution"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>Because the Bugzilla account is not created until the first time
        a user logs in, a user who has not yet logged is unknown to Bugzilla.
        This means they cannot be used as an assignee or QA contact (default or
        otherwise), added to any cc list, or any other such operation. One
        possible workaround is the <TT
CLASS="filename"
>bugzilla_ldapsync.rb</TT
>
        script in the
        <A
HREF="#gloss-contrib"
><I
CLASS="glossterm"
><TT
CLASS="filename"
>contrib</TT
></I
></A
> directory. Another possible solution is fixing
        <A
HREF="http://bugzilla.mozilla.org/show_bug.cgi?id=201069"
TARGET="_top"
>bug
        201069</A
>.
        </P
></TD
></TR
></TABLE
></DIV
><P
>Parameters required to use LDAP Authentication:</P
><P
></P
><DIV
CLASS="variablelist"
><DL
><DT
><A
NAME="param-loginmethod"
></A
>loginmethod</DT
><DD
><P
>This parameter should be set to <SPAN
CLASS="QUOTE"
>"LDAP"</SPAN
>
            <EM
>only</EM
> if you will be using an LDAP directory
            for authentication. If you set this param to <SPAN
CLASS="QUOTE"
>"LDAP"</SPAN
> but
            fail to set up the other parameters listed below you will not be
            able to log back in to Bugzilla one you log out. If this happens
            to you, you will need to manually edit
            <TT
CLASS="filename"
>data/params</TT
> and set loginmethod to
            <SPAN
CLASS="QUOTE"
>"DB"</SPAN
>.
            </P
></DD
><DT
><A
NAME="param-LDAPserver"
></A
>LDAPserver</DT
><DD
><P
>This parameter should be set to the name (and optionally the
            port) of your LDAP server. If no port is specified, it assumes
            the default LDAP port of 389.
            </P
><P
>Ex. <SPAN
CLASS="QUOTE"
>"ldap.company.com"</SPAN
>
             or <SPAN
CLASS="QUOTE"
>"ldap.company.com:3268"</SPAN
>
            </P
></DD
><DT
><A
NAME="param-LDAPbinddn"
></A
>LDAPbinddn [Optional]</DT
><DD
><P
>Some LDAP servers will not allow an anonymous bind to search
             the directory. If this is the case with your configuration you
             should set the LDAPbinddn parameter to the user account Bugzilla
             should use instead of the anonymous bind.
             </P
><P
>Ex. <SPAN
CLASS="QUOTE"
>"cn=default,cn=user:password"</SPAN
></P
></DD
><DT
><A
NAME="param-LDAPBaseDN"
></A
>LDAPBaseDN</DT
><DD
><P
>The LDAPBaseDN parameter should be set to the location in
             your LDAP tree that you would like to search for email addresses.
             Your uids should be unique under the DN specified here.
             </P
><P
>Ex. <SPAN
CLASS="QUOTE"
>"ou=People,o=Company"</SPAN
></P
></DD
><DT
><A
NAME="param-LDAPuidattribute"
></A
>LDAPuidattribute</DT
><DD
><P
>The LDAPuidattribute parameter should be set to the attribute
             which contains the unique UID of your users. The value retrieved
             from this attribute will be used when attempting to bind as the
             user to confirm their password.
             </P
><P
>Ex. <SPAN
CLASS="QUOTE"
>"uid"</SPAN
></P
></DD
><DT
><A
NAME="param-LDAPmailattribute"
></A
>LDAPmailattribute</DT
><DD
><P
>The LDAPmailattribute parameter should be the name of the
             attribute which contains the email address your users will enter
             into the Bugzilla login boxes.
             </P
><P
>Ex. <SPAN
CLASS="QUOTE"
>"mail"</SPAN
></P
></DD
></DL
></DIV
></DIV
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="apache-addtype"
>2.3.7. Serving Alternate Formats with the right MIME type</A
></H3
><P
>&#13;        Some Bugzilla pages have alternate formats, other than just plain
        <ACRONYM
CLASS="acronym"
>HTML</ACRONYM
>. In particular, a few Bugzilla pages can 
        output their contents as either <ACRONYM
CLASS="acronym"
>XUL</ACRONYM
> (a special 
        Mozilla format, that looks like a program <ACRONYM
CLASS="acronym"
>GUI</ACRONYM
>) 
        or <ACRONYM
CLASS="acronym"
>RDF</ACRONYM
> (a type of structured <ACRONYM
CLASS="acronym"
>XML</ACRONYM
> 
        that can be read by various programs).
      </P
><P
>&#13;        In order for your users to see these pages correctly, Apache must 
        send them with the right <ACRONYM
CLASS="acronym"
>MIME</ACRONYM
> type. To do this, 
        add the following lines to your Apache configuration, either in the 
        <SAMP
CLASS="computeroutput"
>&#60;VirtualHost&#62;</SAMP
> section for your
        Bugzilla, or in the <SAMP
CLASS="computeroutput"
>&#60;Directory&#62;</SAMP
>
        section for your Bugzilla:
      </P
><P
>&#13;        <TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="screen"
>AddType application/vnd.mozilla.xul+xml .xul
AddType application/rdf+xml .rdf</PRE
></FONT
></TD
></TR
></TABLE
>
      </P
></DIV
></DIV
><DIV
CLASS="section"
><HR><H2
CLASS="section"
><A
NAME="os-specific"
>2.4. OS-Specific Installation Notes</A
></H2
><P
>Many aspects of the Bugzilla installation can be affected by the
    the operating system you choose to install it on. Sometimes it can be made
    easier and others more difficult. This section will attempt to help you
    understand both the difficulties of running on specific operating systems
    and the utilities available to make it easier.
    </P
><P
>If you have anything to add or notes for an operating system not
    covered, please file a bug in <A
HREF="http://bugzilla.mozilla.org/enter_bug.cgi?product=Bugzilla&#38;component=Documentation"
TARGET="_top"
>Bugzilla Documentation</A
>. 
    </P
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="os-win32"
>2.4.1. Microsoft Windows</A
></H3
><P
>&#13;        Making Bugzilla work on Windows is more difficult than making it
        work on Unix.  For that reason, we still recommend doing so on a Unix 
        based system such as GNU/Linux.  That said, if you do want to get
        Bugzilla running on Windows, you will need to make the following
        adjustments.
      </P
><DIV
CLASS="section"
><HR><H4
CLASS="section"
><A
NAME="win32-perl"
>2.4.1.1. Win32 Perl</A
></H4
><P
>&#13;          Perl for Windows can be obtained from 
          <A
HREF="http://www.activestate.com/"
TARGET="_top"
>ActiveState</A
>.
           You should be able to find a compiled binary at <A
HREF="http://aspn.activestate.com/ASPN/Downloads/ActivePerl/"
TARGET="_top"
>http://aspn.activestate.com/ASPN/Downloads/ActivePerl/</A
>.
           The following instructions assume that you are using version
           5.8.1 of ActiveState.
          </P
></DIV
><DIV
CLASS="section"
><HR><H4
CLASS="section"
><A
NAME="win32-perl-modules"
>2.4.1.2. Perl Modules on Win32</A
></H4
><P
>&#13;          Bugzilla on Windows requires the same perl modules found in
          <A
HREF="#install-perlmodules"
>Section 2.1.5</A
>. The main difference is that
          windows uses <A
HREF="#gloss-ppm"
><I
CLASS="glossterm"
>PPM</I
></A
> instead
          of CPAN.
        </P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;C:\perl&#62; <B
CLASS="command"
>ppm install &#60;module name&#62;</B
>
        </PRE
></FONT
></TD
></TR
></TABLE
><P
>&#13;          The best source for the Windows PPM modules needed for Bugzilla
          is probably the the Bugzilla Test Server (aka 'Landfill'), so 
          you should add the Landfill package repository as follows:
        </P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;<B
CLASS="command"
>ppm repository add landfill http://www.landfill.bugzilla.org/ppm/</B
>
        </PRE
></FONT
></TD
></TR
></TABLE
><DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;            The PPM repository stores modules in 'packages' that may have
            a slightly different name than the module.  If retrieving these
            modules from there, you will need to pay attention to the information
            provided when you run <B
CLASS="command"
>checksetup.pl</B
> as it will
            tell you what package you'll need to install.
          </P
></TD
></TR
></TABLE
></DIV
><DIV
CLASS="tip"
><P
></P
><TABLE
CLASS="tip"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/tip.gif"
HSPACE="5"
ALT="Tip"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;            If you are behind a corporate firewall, you will need to let the
            ActiveState PPM utility know how to get through it to acccess
            the repositories by setting the HTTP_proxy system environmental
            variable. For more information on setting that variable, see
            the ActiveState documentation.
          </P
></TD
></TR
></TABLE
></DIV
></DIV
><DIV
CLASS="section"
><HR><H4
CLASS="section"
><A
NAME="win32-code-changes"
>2.4.1.3. Code changes required to run on Win32</A
></H4
><P
>&#13;          Bugzilla on Win32 is supported out of the box from version 2.20; this
          means that no code changes are required to get Bugzilla running.
        </P
></DIV
><DIV
CLASS="section"
><HR><H4
CLASS="section"
><A
NAME="win32-http"
>2.4.1.4. Serving the web pages</A
></H4
><P
>&#13;          As is the case on Unix based systems, any web server should
          be able to handle Bugzilla; however, the Bugzilla Team still
          recommends Apache whenever asked. No matter what web server
          you choose, be sure to pay attention to the security notes
          in <A
HREF="#security-webserver-access"
>Section 4.3.1</A
>. More
          information on configuring specific web servers can be found
          in <A
HREF="#http"
>Section 2.2.4</A
>.
        </P
><DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;            If using Apache on windows, you can set the <A
HREF="http://httpd.apache.org/docs-2.0/mod/core.html#scriptinterpretersource"
TARGET="_top"
>ScriptInterpreterSource</A
>
            directive in your Apache config to avoid having to modify
            the first line of every script to contain your path to perl 
            perl instead of <TT
CLASS="filename"
>/usr/bin/perl</TT
>.
          </P
></TD
></TR
></TABLE
></DIV
></DIV
><DIV
CLASS="section"
><HR><H4
CLASS="section"
><A
NAME="win32-email"
>2.4.1.5. Sending Email</A
></H4
><P
>&#13;          To enable Bugzilla to send email on Windows, the server running the
          Bugzilla code must be able to connect to, or act as, an SMTP server.
        </P
></DIV
></DIV
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="os-macosx"
>2.4.2. <SPAN
CLASS="productname"
>Mac OS X</SPAN
></A
></H3
><P
>Apple did not include the GD library with Mac OS X. Bugzilla
      needs this for bug graphs.</P
><P
>You can install it using a program called
      Fink, which is similar in nature to the CPAN installer, but installs
      common GNU utilities. Fink is available from
      <A
HREF="http://sourceforge.net/projects/fink/"
TARGET="_top"
>http://sourceforge.net/projects/fink/</A
>.</P
><P
>Follow the instructions for setting up Fink. Once it's installed,
      you'll want to use it to install the <TT
CLASS="filename"
>gd2</TT
> package.
      </P
><P
>It will prompt you for a number of dependencies, type 'y' and hit
      enter to install all of the dependencies and then watch it work. You will
      then be able to use <A
HREF="#gloss-cpan"
><I
CLASS="glossterm"
>CPAN</I
></A
> to
      install the GD Perl module.
      </P
><DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>To prevent creating conflicts with the software that Apple
        installs by default, Fink creates its own directory tree at 
        <TT
CLASS="filename"
>/sw</TT
> where it installs most of
        the software that it installs. This means your libraries and headers
        will be at <TT
CLASS="filename"
>/sw/lib</TT
> and
        <TT
CLASS="filename"
>/sw/include</TT
> instead of
        <TT
CLASS="filename"
>/usr/lib</TT
> and
        <TT
CLASS="filename"
>/usr/include</TT
>. When the
        Perl module config script asks where your <TT
CLASS="filename"
>libgd</TT
>
        is, be sure to tell it
        <TT
CLASS="filename"
>/sw/lib</TT
>.
        </P
></TD
></TR
></TABLE
></DIV
><P
>Also available via Fink is <TT
CLASS="filename"
>expat</TT
>. After using
      fink to install the expat package you will be able to install
      XML::Parser using CPAN. There is one caveat. Unlike recent versions of
      the GD module, XML::Parser doesn't prompt for the location of the
      required libraries. When using CPAN, you will need to use the following
      command sequence:
      </P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="screen"
>&#13;# perl -MCPAN -e'look XML::Parser'        <A
NAME="macosx-look"
><IMG
SRC="../images/callouts/1.gif"
HSPACE="0"
VSPACE="0"
BORDER="0"
ALT="(1)"></A
>
# perl Makefile.PL EXPATLIBPATH=/sw/lib EXPATINCPATH=/sw/include
# make; make test; make install           <A
NAME="macosx-make"
><IMG
SRC="../images/callouts/2.gif"
HSPACE="0"
VSPACE="0"
BORDER="0"
ALT="(2)"></A
>
# exit                                    <A
NAME="macosx-exit"
><IMG
SRC="../images/callouts/3.gif"
HSPACE="0"
VSPACE="0"
BORDER="0"
ALT="(3)"></A
>
      </PRE
></FONT
></TD
></TR
></TABLE
><DIV
CLASS="calloutlist"
><DL
COMPACT="COMPACT"
><DT
><A
HREF="#macosx-look"
><IMG
SRC="../images/callouts/1.gif"
HSPACE="0"
VSPACE="0"
BORDER="0"
ALT="(1)"></A
><A
HREF="#macosx-exit"
><IMG
SRC="../images/callouts/3.gif"
HSPACE="0"
VSPACE="0"
BORDER="0"
ALT="(3)"></A
></DT
><DD
>The look command will download the module and spawn a
          new shell with the extracted files as the current working directory.
          The exit command will return you to your original shell.
          </DD
><DT
><A
HREF="#macosx-make"
><IMG
SRC="../images/callouts/2.gif"
HSPACE="0"
VSPACE="0"
BORDER="0"
ALT="(2)"></A
></DT
><DD
>You should watch the output from these make commands,
          especially <SPAN
CLASS="QUOTE"
>"make test"</SPAN
> as errors may prevent XML::Parser
          from functioning correctly with Bugzilla.
          </DD
></DL
></DIV
></DIV
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="os-mandrake"
>2.4.3. Linux-Mandrake 8.0</A
></H3
><P
>Linux-Mandrake 8.0 includes every required and optional library
      for Bugzilla. The easiest way to install them is by using the
      <B
CLASS="command"
>urpmi</B
>  utility. If you follow these commands, you
      should have everything you need for Bugzilla, and
      <B
CLASS="command"
>./checksetup.pl</B
>  should not complain about any
      missing libraries. You may already have some of these installed.
      </P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="screen"
>&#13;<SAMP
CLASS="prompt"
>bash#</SAMP
> <B
CLASS="command"
>urpmi perl-mysql</B
>
<SAMP
CLASS="prompt"
>bash#</SAMP
> <B
CLASS="command"
>urpmi perl-chart</B
>
<SAMP
CLASS="prompt"
>bash#</SAMP
> <B
CLASS="command"
>urpmi perl-gd</B
>
<SAMP
CLASS="prompt"
>bash#</SAMP
> <B
CLASS="command"
>urpmi perl-MailTools</B
>             <A
NAME="test-mailtools"
><IMG
SRC="../images/callouts/1.gif"
HSPACE="0"
VSPACE="0"
BORDER="0"
ALT="(1)"></A
>
<SAMP
CLASS="prompt"
>bash#</SAMP
> <B
CLASS="command"
>urpmi apache-modules</B
>
      </PRE
></FONT
></TD
></TR
></TABLE
><DIV
CLASS="calloutlist"
><DL
COMPACT="COMPACT"
><DT
><A
HREF="#test-mailtools"
><IMG
SRC="../images/callouts/1.gif"
HSPACE="0"
VSPACE="0"
BORDER="0"
ALT="(1)"></A
></DT
><DD
>for Bugzilla email integration</DD
></DL
></DIV
></DIV
></DIV
><DIV
CLASS="section"
><HR><H2
CLASS="section"
><A
NAME="nonroot"
>2.5. UNIX (non-root) Installation Notes</A
></H2
><DIV
CLASS="section"
><H3
CLASS="section"
><A
NAME="AEN857"
>2.5.1. Introduction</A
></H3
><P
>If you are running a *NIX OS as non-root, either due
      to lack of access (web hosts, for example) or for security
      reasons, this will detail how to install Bugzilla on such
      a setup. It is recommended that you read through the
      <A
HREF="#installation"
>Section 2.1</A
>
      first to get an idea on the installation steps required.
      (These notes will reference to steps in that guide.)</P
></DIV
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="AEN861"
>2.5.2. MySQL</A
></H3
><P
>You may have MySQL installed as root. If you're
      setting up an account with a web host, a MySQL account
      needs to be set up for you. From there, you can create
      the bugs account, or use the account given to you.</P
><DIV
CLASS="warning"
><P
></P
><TABLE
CLASS="warning"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/warning.gif"
HSPACE="5"
ALT="Warning"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>You may have problems trying to set up
        <B
CLASS="command"
>GRANT</B
> permissions to the database.
        If you're using a web host, chances are that you have a
        separate database which is already locked down (or one big
        database with limited/no access to the other areas), but you
        may want to ask your system adminstrator what the security
        settings are set to, and/or run the <B
CLASS="command"
>GRANT</B
>
        command for you.</P
><P
>Also, you will probably not be able to change the MySQL
        root user password (for obvious reasons), so skip that
        step.</P
></TD
></TR
></TABLE
></DIV
><DIV
CLASS="section"
><HR><H4
CLASS="section"
><A
NAME="AEN869"
>2.5.2.1. Running MySQL as Non-Root</A
></H4
><DIV
CLASS="section"
><H5
CLASS="section"
><A
NAME="AEN871"
>2.5.2.1.1. The Custom Configuration Method</A
></H5
><P
>Create a file .my.cnf in your 
              home directory (using /home/foo in this example)
              as follows....</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;[mysqld]
datadir=/home/foo/mymysql
socket=/home/foo/mymysql/thesock
port=8081

[mysql]
socket=/home/foo/mymysql/thesock
port=8081

[mysql.server]
user=mysql
basedir=/var/lib

[safe_mysqld]
err-log=/home/foo/mymysql/the.log
pid-file=/home/foo/mymysql/the.pid
              </PRE
></FONT
></TD
></TR
></TABLE
></DIV
><DIV
CLASS="section"
><HR><H5
CLASS="section"
><A
NAME="AEN875"
>2.5.2.1.2. The Custom Built Method</A
></H5
><P
>You can install MySQL as a not-root, if you really need to.
            Build it with PREFIX set to <TT
CLASS="filename"
>/home/foo/mysql</TT
>,
            or use pre-installed executables, specifying that you want
            to put all of the data files in <TT
CLASS="filename"
>/home/foo/mysql/data</TT
>.
            If there is another MySQL server running on the system that you
            do not own, use the -P option to specify a TCP port that is not
            in use.</P
></DIV
><DIV
CLASS="section"
><HR><H5
CLASS="section"
><A
NAME="AEN880"
>2.5.2.1.3. Starting the Server</A
></H5
><P
>After your mysqld program is built and any .my.cnf file is 
            in place, you must initialize the databases (ONCE).</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="screen"
>&#13;              <SAMP
CLASS="prompt"
>bash$</SAMP
>
              <B
CLASS="command"
>mysql_install_db</B
>
            </PRE
></FONT
></TD
></TR
></TABLE
><P
>Then start the daemon with</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="screen"
>&#13;              <SAMP
CLASS="prompt"
>bash$</SAMP
>
              <B
CLASS="command"
>safe_mysql &#38;</B
>
            </PRE
></FONT
></TD
></TR
></TABLE
><P
>After you start mysqld the first time, you then connect to
            it as "root" and <B
CLASS="command"
>GRANT</B
> permissions to other
            users. (Again, the MySQL root account has nothing to do with
            the *NIX root account.)</P
><DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>You will need to start the daemons yourself. You can either
              ask your system administrator to add them to system startup files, or
              add a crontab entry that runs a script to check on these daemons
              and restart them if needed.</P
></TD
></TR
></TABLE
></DIV
><DIV
CLASS="warning"
><P
></P
><TABLE
CLASS="warning"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/warning.gif"
HSPACE="5"
ALT="Warning"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>Do NOT run daemons or other services on a server without first
              consulting your system administrator! Daemons use up system resources
              and running one may be in violation of your terms of service for any
              machine on which you are a user!</P
></TD
></TR
></TABLE
></DIV
></DIV
></DIV
></DIV
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="AEN896"
>2.5.3. Perl</A
></H3
><P
>On the extremely rare chance that you don't have Perl on
      the machine, you will have to build the sources
      yourself. The following commands should get your system
      installed with your own personal version of Perl:</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="screen"
>&#13;        <SAMP
CLASS="prompt"
>bash$</SAMP
>
        <B
CLASS="command"
>wget http://perl.com/CPAN/src/stable.tar.gz</B
>
        <SAMP
CLASS="prompt"
>bash$</SAMP
>
        <B
CLASS="command"
>tar zvxf stable.tar.gz</B
>
        <SAMP
CLASS="prompt"
>bash$</SAMP
>
        <B
CLASS="command"
>cd perl-5.8.1</B
> (or whatever the version of Perl is called)
        <SAMP
CLASS="prompt"
>bash$</SAMP
>
        <B
CLASS="command"
>sh Configure -de -Dprefix=/home/foo/perl</B
>
        <SAMP
CLASS="prompt"
>bash$</SAMP
>
        <B
CLASS="command"
>make &#38;&#38; make test &#38;&#38; make install</B
>
      </PRE
></FONT
></TD
></TR
></TABLE
><P
>Once you have Perl installed into a directory (probably
      in <TT
CLASS="filename"
>~/perl/bin</TT
>), you'll have to
      change the locations on the scripts, which is detailed later on
      this page.</P
></DIV
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="install-perlmodules-nonroot"
>2.5.4. Perl Modules</A
></H3
><P
>Installing the Perl modules as a non-root user is probably the
      hardest part of the process. There are two different methods: a
      completely independant Perl with its own modules, or personal
      modules using the current (root installed) version of Perl. The
      independant method takes up quite a bit of disk space, but is
      less complex, while the mixed method only uses as much space as the
      modules themselves, but takes more work to setup.</P
><DIV
CLASS="section"
><HR><H4
CLASS="section"
><A
NAME="AEN915"
>2.5.4.1. The Independant Method</A
></H4
><P
>The independant method requires that you install your own
        personal version of Perl, as detailed in the previous section. Once
        installed, you can start the CPAN shell with the following
        command:</P
><P
>&#13;          <TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="screen"
>&#13;            <SAMP
CLASS="prompt"
>bash$</SAMP
>
            <B
CLASS="command"
>/home/foo/perl/bin/perl -MCPAN -e 'shell'</B
>
          </PRE
></FONT
></TD
></TR
></TABLE
>
        </P
><P
>And then:</P
><P
>&#13;          <TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="screen"
>&#13;            <SAMP
CLASS="prompt"
>cpan&#62;</SAMP
>
            <B
CLASS="command"
>install Bundle::Bugzilla</B
>
          </PRE
></FONT
></TD
></TR
></TABLE
>
        </P
><P
>With this method, module installation will usually go a lot
        smoother, but if you have any hang-ups, you can consult the next
        section.</P
></DIV
><DIV
CLASS="section"
><HR><H4
CLASS="section"
><A
NAME="AEN928"
>2.5.4.2. The Mixed Method</A
></H4
><P
>First, you'll need to configure CPAN to
        install modules in your home directory. The CPAN FAQ says the
        following on this issue:</P
><P
>&#13;          <TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;5)  I am not root, how can I install a module in a personal directory?

    You will most probably like something like this:

      o conf makepl_arg "LIB=~/myperl/lib \
                         INSTALLMAN1DIR=~/myperl/man/man1 \
                         INSTALLMAN3DIR=~/myperl/man/man3"
    install Sybase::Sybperl

    You can make this setting permanent like all "o conf" settings with "o conf commit".

    You will have to add ~/myperl/man to the MANPATH environment variable and also tell your Perl programs to
    look into ~/myperl/lib, e.g. by including

      use lib "$ENV{HOME}/myperl/lib";

    or setting the PERL5LIB environment variable.

    Another thing you should bear in mind is that the UNINST parameter should never be set if you are not root.</PRE
></FONT
></TD
></TR
></TABLE
>
        </P
><P
>So, you will need to create a Perl directory in your home
        directory, as well as the <TT
CLASS="filename"
>lib</TT
>,
        <TT
CLASS="filename"
>man</TT
>,
        <TT
CLASS="filename"
>man/man1</TT
>, and
        <TT
CLASS="filename"
>man/man3</TT
> directories in that
        Perl directory. Set the MANPATH variable and PERL5LIB variable, so
        that the installation of the modules goes smoother. (Setting
        UNINST=0 in your "make install" options, on the CPAN first-time
        configuration, is also a good idea.)</P
><P
>After that, go into the CPAN shell:</P
><P
>&#13;          <TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="screen"
>&#13;            <SAMP
CLASS="prompt"
>bash$</SAMP
>
            <B
CLASS="command"
>perl -MCPAN -e 'shell'</B
>
          </PRE
></FONT
></TD
></TR
></TABLE
>
        </P
><P
>From there, you will need to type in the above "o conf" command
        and commit the changes. Then you can run through the installation:</P
><P
>&#13;          <TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="screen"
>&#13;            <SAMP
CLASS="prompt"
>cpan&#62;</SAMP
>
            <B
CLASS="command"
>install Bundle::Bugzilla</B
>
          </PRE
></FONT
></TD
></TR
></TABLE
>
        </P
><P
>Most of the module installation process should go smoothly. However,
        you may have some problems with Template. When you first start, you will
        want to try to install Template with the XS Stash options on. If this
        doesn't work, it may spit out C compiler error messages and croak back
        to the CPAN shell prompt. So, redo the install, and turn it off. (In fact,
        say no to all of the Template questions.) It may also start failing on a
        few of the tests. If the total tests passed is a reasonable figure (90+%),
        force the install with the following command:</P
><P
>&#13;          <TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="screen"
>&#13;            <SAMP
CLASS="prompt"
>cpan&#62;</SAMP
>
            <B
CLASS="command"
>force install Template</B
>
          </PRE
></FONT
></TD
></TR
></TABLE
>
        </P
><P
>You may also want to install the other optional modules:</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="screen"
>&#13;          <SAMP
CLASS="prompt"
>cpan&#62;</SAMP
>
          <B
CLASS="command"
>install GD</B
>
          <SAMP
CLASS="prompt"
>cpan&#62;</SAMP
>
          <B
CLASS="command"
>install Chart::Base</B
>
          <SAMP
CLASS="prompt"
>cpan&#62;</SAMP
>
          <B
CLASS="command"
>install MIME::Parser</B
>
        </PRE
></FONT
></TD
></TR
></TABLE
></DIV
></DIV
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="AEN961"
>2.5.5. HTTP Server</A
></H3
><P
>Ideally, this also needs to be installed as root and
      run under a special webserver account. As long as
      the web server will allow the running of *.cgi files outside of a
      cgi-bin, and a way of denying web access to certain files (such as a
      .htaccess file), you should be good in this department.</P
><DIV
CLASS="section"
><HR><H4
CLASS="section"
><A
NAME="AEN964"
>2.5.5.1. Running Apache as Non-Root</A
></H4
><P
>You can run Apache as a non-root user, but the port will need
        to be set to one above 1024. If you type <B
CLASS="command"
>httpd -V</B
>,
        you will get a list of the variables that your system copy of httpd
        uses. One of those, namely HTTPD_ROOT, tells you where that
        installation looks for its config information.</P
><P
>From there, you can copy the config files to your own home
        directory to start editing. When you edit those and then use the -d
        option to override the HTTPD_ROOT compiled into the web server, you
        get control of your own customized web server.</P
><DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>You will need to start the daemons yourself. You can either
          ask your system administrator to add them to system startup files, or
          add a crontab entry that runs a script to check on these daemons
          and restart them if needed.</P
></TD
></TR
></TABLE
></DIV
><DIV
CLASS="warning"
><P
></P
><TABLE
CLASS="warning"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/warning.gif"
HSPACE="5"
ALT="Warning"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>Do NOT run daemons or other services on a server without first
          consulting your system administrator! Daemons use up system resources
          and running one may be in violation of your terms of service for any
          machine on which you are a user!</P
></TD
></TR
></TABLE
></DIV
></DIV
></DIV
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="AEN973"
>2.5.6. Bugzilla</A
></H3
><P
>If you had to install Perl modules as a non-root user
      (<A
HREF="#install-perlmodules-nonroot"
>Section 2.5.4</A
>) or to non-standard
      directories, you will need to change the scripts, setting the correct
      location of the Perl modules:</P
><P
>&#13;        <TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>perl -pi -e
        's@use strict\;@use strict\; use lib \"/home/foo/perl/lib\"\;@'
        *cgi *pl Bug.pm processmail syncshadowdb</PRE
></FONT
></TD
></TR
></TABLE
>

        Change <TT
CLASS="filename"
>/home/foo/perl/lib</TT
> to
        your personal Perl library directory. You can probably skip this
        step if you are using the independant method of Perl module
        installation.
      </P
><P
>When you run <B
CLASS="command"
>./checksetup.pl</B
> to create
      the <TT
CLASS="filename"
>localconfig</TT
> file, it will list the Perl
      modules it finds. If one is missing, go back and double-check the
      module installation from the CPAN shell, then delete the
      <TT
CLASS="filename"
>localconfig</TT
> file and try again.</P
><DIV
CLASS="warning"
><P
></P
><TABLE
CLASS="warning"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/warning.gif"
HSPACE="5"
ALT="Warning"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>The one option in <TT
CLASS="filename"
>localconfig</TT
> you
        might have problems with is the web server group. If you can't
        successfully browse to the <TT
CLASS="filename"
>index.cgi</TT
> (like
        a Forbidden error), you may have to relax your permissions,
        and blank out the web server group. Of course, this may pose
        as a security risk. Having a properly jailed shell and/or
        limited access to shell accounts may lessen the security risk,
        but use at your own risk.</P
></TD
></TR
></TABLE
></DIV
></DIV
></DIV
></DIV
><DIV
CLASS="chapter"
><HR><H1
><A
NAME="administration"
></A
>Chapter 3. Administering Bugzilla</H1
><DIV
CLASS="section"
><H2
CLASS="section"
><A
NAME="parameters"
>3.1. Bugzilla Configuration</A
></H2
><P
>&#13;      Bugzilla is configured by changing various parameters, accessed
      from the "Edit parameters" link in the page footer. Here are
      some of the key parameters on that page. You should run down this
      list and set them appropriately after installing Bugzilla.
    </P
><P
></P
><DIV
CLASS="variablelist"
><DL
><DT
>maintainer</DT
><DD
><P
> 
            The maintainer parameter is the email address of the person 
            responsible for maintaining this Bugzilla installation.
            The address need not be that of a valid Bugzilla account.
          </P
></DD
><DT
>urlbase</DT
><DD
><P
>&#13;            This parameter defines the fully qualified domain name and web 
            server path to your Bugzilla installation.
          </P
><P
>&#13;            For example, if your Bugzilla query page is
            <TT
CLASS="filename"
>http://www.foo.com/bugzilla/query.cgi</TT
>, 
            set your <SPAN
CLASS="QUOTE"
>"urlbase"</SPAN
>
            to <TT
CLASS="filename"
>http://www.foo.com/bugzilla/</TT
>.
          </P
></DD
><DT
>makeproductgroups</DT
><DD
><P
>&#13;            This dictates whether or not to automatically create groups
            when new products are created.
          </P
></DD
><DT
>useentrygroupdefault</DT
><DD
><P
>&#13;            Bugzilla products can have a group associated with them, so that
            certain users can only see bugs in certain products. When this 
            parameter is set to <SPAN
CLASS="QUOTE"
>"on"</SPAN
>, this 
            causes the initial group controls on newly created products 
            to place all newly-created bugs in the group 
            having the same name as the product immediately.
            After a product is initially created, the group controls
            can be further adjusted without interference by 
            this mechanism.
          </P
></DD
><DT
>maildeliverymethod</DT
><DD
><P
>&#13;            This is used to specify how email is sent, or if it is sent at 
            all.  There are several options included for different MTAs, 
            along with two additional options that disable email sending.  
            "testfile" does not send mail, but instead saves it in 
            <TT
CLASS="filename"
>data/mailer.testfile</TT
> for later review.  
            "none" disables email sending entirely.
          </P
></DD
><DT
>shadowdb</DT
><DD
><P
>&#13;            You run into an interesting problem when Bugzilla reaches a
            high level of continuous activity. MySQL supports only table-level
            write locking. What this means is that if someone needs to make a
            change to a bug, they will lock the entire table until the operation
            is complete. Locking for write also blocks reads until the write is
            complete. Note that more recent versions of mysql support row level
            locking using different table types. These types are slower than the
            standard type, and Bugzilla does not yet take advantage of features
            such as transactions which would justify this speed decrease. The
            Bugzilla team are, however, happy to hear about any experiences with
            row level locking and Bugzilla.
          </P
><P
>&#13;            The <SPAN
CLASS="QUOTE"
>"shadowdb"</SPAN
> parameter was designed to get around
            this limitation. While only a single user is allowed to write to
            a table at a time, reads can continue unimpeded on a read-only
            shadow copy of the database. Although your database size will
            double, a shadow database can cause an enormous performance
            improvement when implemented on extremely high-traffic Bugzilla
            databases.
          </P
><P
>&#13;            As a guide, on reasonably old hardware, mozilla.org began needing 
            <SPAN
CLASS="QUOTE"
>"shadowdb"</SPAN
> when they reached around 40,000 Bugzilla
            users with several hundred Bugzilla bug changes and comments per day.
          </P
><P
>&#13;            The value of the parameter defines the name of the shadow bug
            database. You will need to set the host and port settings from
            the params page, and set up replication in your database server
            so that updates reach this readonly mirror. Consult your database
            documentation for more detail.
          </P
></DD
><DT
>shutdownhtml</DT
><DD
><P
>&#13;            If you need to shut down Bugzilla to perform administration, enter
            some descriptive text (with embedded HTML codes, if you'd like)
            into this box. Anyone who tries to use Bugzilla (including admins)
            will receive a page displaying this text. Users can neither log in
            nor log out while shutdownhtml is enabled.
          </P
><DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;              Although regular log-in capability is disabled while 'shutdownhtml'
              is enabled, safeguards are in place to protect the unfortunate 
              admin who loses connection to Bugzilla. Should this happen to you,
              go directly to the <TT
CLASS="filename"
>editparams.cgi</TT
> (by typing
              the URL in manually, if necessary). Doing this will prompt you to
              log in, and your name/password will be accepted here (but nowhere
              else). 
            </P
></TD
></TR
></TABLE
></DIV
></DD
><DT
>passwordmail</DT
><DD
><P
>&#13;            Every time a user creates an account, the text of this parameter
            (with substitutions) is sent to the new user along with their
            password message.
          </P
><P
>&#13;            Add any text you wish to the "passwordmail" parameter box. For
            instance, many people choose to use this box to give a quick 
            training blurb about how to use Bugzilla at your site.
          </P
></DD
><DT
>movebugs</DT
><DD
><P
>&#13;            This option is an undocumented feature to allow moving bugs
            between separate Bugzilla installations.  You will need to understand
            the source code in order to use this feature.  Please consult
            <TT
CLASS="filename"
>movebugs.pl</TT
> in your Bugzilla source tree for
            further documentation, such as it is.
          </P
></DD
><DT
>useqacontact</DT
><DD
><P
>&#13;            This allows you to define an email address for each component, 
            in addition to that of the default assignee, who will be sent
            carbon copies of incoming bugs.
          </P
></DD
><DT
>usestatuswhiteboard</DT
><DD
><P
>&#13;            This defines whether you wish to have a free-form, overwritable field
            associated with each bug. The advantage of the Status Whiteboard is
            that it can be deleted or modified with ease, and provides an
            easily-searchable field for indexing some bugs that have some trait
            in common.         
          </P
></DD
><DT
>whinedays</DT
><DD
><P
>&#13;            Set this to the number of days you want to let bugs go
            in the NEW or REOPENED state before notifying people they have
            untouched new bugs. If you do not plan to use this feature, simply 
            do not set up the whining cron job described in the installation
            instructions, or set this value to "0" (never whine).
          </P
></DD
><DT
>commenton*</DT
><DD
><P
>&#13;            All these fields allow you to dictate what changes can pass
            without comment, and which must have a comment from the
            person who changed them.  Often, administrators will allow
            users to add themselves to the CC list, accept bugs, or
            change the Status Whiteboard without adding a comment as to
            their reasons for the change, yet require that most other
            changes come with an explanation.
          </P
><P
>&#13;            Set the "commenton" options according to your site policy. It
            is a wise idea to require comments when users resolve, reassign, or
            reopen bugs at the very least. 
          </P
><DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;              It is generally far better to require a developer comment
              when resolving bugs than not. Few things are more annoying to bug
              database users than having a developer mark a bug "fixed" without
              any comment as to what the fix was (or even that it was truly
              fixed!)
            </P
></TD
></TR
></TABLE
></DIV
></DD
><DT
>supportwatchers</DT
><DD
><P
>&#13;            Turning on this option allows users to ask to receive copies 
            of bug mail sent to another user.  Watching a user with
            different group permissions is not a way to 'get around' the
            system; copied emails are still subject to the normal groupset
            permissions of a bug, and <SPAN
CLASS="QUOTE"
>"watchers"</SPAN
> will only be 
            copied on emails from bugs they would normally be allowed to view. 
          </P
></DD
><DT
>noresolveonopenblockers</DT
><DD
><P
>&#13;            This option will prevent users from resolving bugs as FIXED if
            they have unresolved dependencies. Only the FIXED resolution
            is affected. Users will be still able to resolve bugs to
            resolutions other than FIXED if they have unresolved dependent
            bugs.
          </P
></DD
></DL
></DIV
></DIV
><DIV
CLASS="section"
><HR><H2
CLASS="section"
><A
NAME="useradmin"
>3.2. User Administration</A
></H2
><DIV
CLASS="section"
><H3
CLASS="section"
><A
NAME="defaultuser"
>3.2.1. Creating the Default User</A
></H3
><P
>When you first run checksetup.pl after installing Bugzilla, it
      will prompt you for the administrative username (email address) and
      password for this "super user". If for some reason you delete
      the "super user" account, re-running checksetup.pl will again prompt
      you for this username and password.</P
><DIV
CLASS="tip"
><P
></P
><TABLE
CLASS="tip"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/tip.gif"
HSPACE="5"
ALT="Tip"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>If you wish to add more administrative users, add them to 
        the "admin" group and, optionally, add edit the tweakparams, editusers,
        creategroups, editcomponents, and editkeywords groups to add the
        entire admin group to those groups.
        </P
></TD
></TR
></TABLE
></DIV
></DIV
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="manageusers"
>3.2.2. Managing Other Users</A
></H3
><DIV
CLASS="section"
><H4
CLASS="section"
><A
NAME="createnewusers"
>3.2.2.1. Creating new users</A
></H4
><P
>Your users can create their own user accounts by clicking the
        "New Account" link at the bottom of each page (assuming they
        aren't logged in as someone else already.) However, should you
        desire to create user accounts ahead of time, here is how you do
        it.</P
><P
></P
><OL
TYPE="1"
><LI
><P
>After logging in, click the "Users" link at the footer of
            the query page, and then click "Add a new user".</P
></LI
><LI
><P
>Fill out the form presented. This page is self-explanatory.
            When done, click "Submit".</P
><DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>Adding a user this way will 
              <EM
>not</EM
>

              send an email informing them of their username and password.
              While useful for creating dummy accounts (watchers which
              shuttle mail to another system, for instance, or email
              addresses which are a mailing list), in general it is
              preferable to log out and use the 
              <SPAN
CLASS="QUOTE"
>"New Account"</SPAN
>

              button to create users, as it will pre-populate all the
              required fields and also notify the user of her account name
              and password.</P
></TD
></TR
></TABLE
></DIV
></LI
></OL
></DIV
><DIV
CLASS="section"
><HR><H4
CLASS="section"
><A
NAME="modifyusers"
>3.2.2.2. Modifying Users</A
></H4
><P
>To see a specific user, search for their login name
        in the box provided on the "Edit Users" page. To see all users, 
        leave the box blank.</P
><P
>You can search in different ways the listbox to the right
        of the text entry box. You can match by 
        case-insensitive substring (the default),
        regular expression, or a 
        <EM
>reverse</EM
>
        regular expression match, which finds every user name which does NOT
        match the regular expression. (Please see
        the <B
CLASS="command"
>man regexp</B
>
        manual page for details on regular expression syntax.)
        </P
><P
>Once you have found your user, you can change the following
        fields:</P
><P
></P
><UL
><LI
><P
>&#13;            <EM
>Login Name</EM
>: 
            This is generally the user's full email address. However, if you
            have are using the emailsuffix Param, this may just be the user's
            login name. Note that users can now change their login names
            themselves (to any valid email address.)
            </P
></LI
><LI
><P
>&#13;            <EM
>Real Name</EM
>: The user's real name. Note that
            Bugzilla does not require this to create an account.</P
></LI
><LI
><P
>&#13;            <EM
>Password</EM
>: 
            You can change the user's password here. Users can automatically
            request a new password, so you shouldn't need to do this often.
            If you want to disable an account, see Disable Text below.
            </P
></LI
><LI
><P
>&#13;              <EM
>Disable Text</EM
>: 
              If you type anything in this box, including just a space, the
              user is prevented from logging in, or making any changes to 
              bugs via the web interface. 
              The HTML you type in this box is presented to the user when
              they attempt to perform these actions, and should explain
              why the account was disabled.
            </P
><P
>&#13;              Users with disabled accounts will continue to receive
              mail from Bugzilla; furthermore, they will not be able
              to log in themselves to change their own preferences and
              stop it. If you want an account (disabled or active) to
              stop receiving mail, add the account name (one account
              per line) to the file <TT
CLASS="filename"
>data/nomail</TT
>.
            </P
><DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;                Even users whose accounts have been disabled can still
                submit bugs via the e-mail gateway, if one exists.
                The e-mail gateway should <EM
>not</EM
> be
                enabled for secure installations of Bugzilla.
              </P
></TD
></TR
></TABLE
></DIV
><DIV
CLASS="warning"
><P
></P
><TABLE
CLASS="warning"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/warning.gif"
HSPACE="5"
ALT="Warning"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;                Don't disable all the administrator accounts!
              </P
></TD
></TR
></TABLE
></DIV
></LI
><LI
><P
>&#13;            <EM
>&#60;groupname&#62;</EM
>: 
            If you have created some groups, e.g. "securitysensitive", then
            checkboxes will appear here to allow you to add users to, or
            remove them from, these groups.
            </P
></LI
><LI
><P
>&#13;            <EM
>canconfirm</EM
>: 
            This field is only used if you have enabled the "unconfirmed"
            status. If you enable this for a user,
            that user can then move bugs from "Unconfirmed" to a "Confirmed"
            status (e.g.: "New" status).</P
></LI
><LI
><P
>&#13;            <EM
>creategroups</EM
>: 
            This option will allow a user to create and destroy groups in
            Bugzilla.</P
></LI
><LI
><P
>&#13;            <EM
>editbugs</EM
>: 
            Unless a user has this bit set, they can only edit those bugs
            for which they are the assignee or the reporter. Even if this
            option is unchecked, users can still add comments to bugs.
            </P
></LI
><LI
><P
>&#13;            <EM
>editcomponents</EM
>: 
            This flag allows a user to create new products and components,
            as well as modify and destroy those that have no bugs associated
            with them. If a product or component has bugs associated with it,
            those bugs must be moved to a different product or component
            before Bugzilla will allow them to be destroyed.
            </P
></LI
><LI
><P
>&#13;            <EM
>editkeywords</EM
>: 
            If you use Bugzilla's keyword functionality, enabling this
            feature allows a user to create and destroy keywords. As always,
            the keywords for existing bugs containing the keyword the user
            wishes to destroy must be changed before Bugzilla will allow it
            to die.</P
></LI
><LI
><P
>&#13;            <EM
>editusers</EM
>: 
            This flag allows a user to do what you're doing right now: edit
            other users. This will allow those with the right to do so to
            remove administrator privileges from other users or grant them to
            themselves. Enable with care.</P
></LI
><LI
><P
>&#13;            <EM
>tweakparams</EM
>: 
            This flag allows a user to change Bugzilla's Params 
            (using <TT
CLASS="filename"
>editparams.cgi</TT
>.)</P
></LI
><LI
><P
>&#13;            <EM
>&#60;productname&#62;</EM
>: 
            This allows an administrator to specify the products in which 
            a user can see bugs. The user must still have the 
            "editbugs" privilege to edit bugs in these products.</P
></LI
></UL
></DIV
></DIV
></DIV
><DIV
CLASS="section"
><HR><H2
CLASS="section"
><A
NAME="products"
>3.3. Products</A
></H2
><P
>&#13;    <A
HREF="#gloss-product"
><I
CLASS="glossterm"
>&#13;    Products</I
></A
>

    are the broadest category in Bugzilla, and tend to represent real-world
    shipping products. E.g. if your company makes computer games, 
    you should have one product per game, perhaps a "Common" product for 
    units of technology used in multiple games, and maybe a few special
     products (Website, Administration...)</P
><P
>Many of Bugzilla's settings are configurable on a per-product
    basis. The number of "votes" available to users is set per-product, 
    as is the number of votes
    required to move a bug automatically from the UNCONFIRMED status to the
    NEW status.</P
><P
>To create a new product:</P
><P
></P
><OL
TYPE="1"
><LI
><P
>Select "products" from the footer</P
></LI
><LI
><P
>Select the "Add" link in the bottom right</P
></LI
><LI
><P
>Enter the name of the product and a description. The
        Description field may contain HTML.</P
></LI
></OL
><P
>Don't worry about the "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", and "Version" options yet. We'll cover
    those in a few moments.
    </P
></DIV
><DIV
CLASS="section"
><HR><H2
CLASS="section"
><A
NAME="components"
>3.4. Components</A
></H2
><P
>Components are subsections of a Product. E.g. the computer game 
    you are designing may have a "UI"
    component, an "API" component, a "Sound System" component, and a
    "Plugins" component, each overseen by a different programmer. It
    often makes sense to divide Components in Bugzilla according to the
    natural divisions of responsibility within your Product or
    company.</P
><P
>&#13;    Each component has a default assignee and (if you turned it on in the parameters),
    a QA Contact. The default assignee should be the primary person who fixes bugs in
    that component. The QA Contact should be the person who will ensure
    these bugs are completely fixed. The Assignee, QA Contact, and Reporter
    will get email when new bugs are created in this Component and when
    these bugs change. Default Assignee and Default QA Contact fields only
    dictate the 
    <EM
>default assignments</EM
>; 
    these can be changed on bug submission, or at any later point in
    a bug's life.</P
><P
>To create a new Component:</P
><P
></P
><OL
TYPE="1"
><LI
><P
>Select the "Edit components" link from the "Edit product"
        page</P
></LI
><LI
><P
>Select the "Add" link in the bottom right.</P
></LI
><LI
><P
>Fill out the "Component" field, a short "Description", 
        the "Default Assignee" and "Default QA Contact" (if enabled.) 
        The Component and Description fields may contain HTML; 
        the "Default Assignee" field must be a login name
        already existing in the database. 
        </P
></LI
></OL
></DIV
><DIV
CLASS="section"
><HR><H2
CLASS="section"
><A
NAME="versions"
>3.5. Versions</A
></H2
><P
>Versions are the revisions of the product, such as "Flinders
    3.1", "Flinders 95", and "Flinders 2000". Version is not a multi-select
    field; the usual practice is to select the earliest version known to have
    the bug.
    </P
><P
>To create and edit Versions:</P
><P
></P
><OL
TYPE="1"
><LI
><P
>From the "Edit product" screen, select "Edit Versions"</P
></LI
><LI
><P
>You will notice that the product already has the default
        version "undefined". Click the "Add" link in the bottom right.</P
></LI
><LI
><P
>Enter the name of the Version. This field takes text only. 
        Then click the "Add" button.</P
></LI
></OL
></DIV
><DIV
CLASS="section"
><HR><H2
CLASS="section"
><A
NAME="milestones"
>3.6. Milestones</A
></H2
><P
>Milestones are "targets" that you plan to get a bug fixed by. For
    example, you have a bug that you plan to fix for your 3.0 release, it
    would be assigned the milestone of 3.0.</P
><DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>Milestone options will only appear for a Product if you turned
      on the "usetargetmilestone" Param in the "Edit Parameters" screen.
      </P
></TD
></TR
></TABLE
></DIV
><P
>To create new Milestones, set Default Milestones, and set
    Milestone URL:</P
><P
></P
><OL
TYPE="1"
><LI
><P
>Select "Edit milestones" from the "Edit product" page.</P
></LI
><LI
><P
>Select "Add" in the bottom right corner.
        text</P
></LI
><LI
><P
>Enter the name of the Milestone in the "Milestone" field. You
        can optionally set the "sortkey", which is a positive or negative
        number (-32768 to 32767) that defines where in the list this particular
        milestone appears. This is because milestones often do not 
        occur in alphanumeric order For example, "Future" might be
        after "Release 1.2". Select "Add".</P
></LI
><LI
><P
>From the Edit product screen, you can enter the URL of a 
        page which gives information about your milestones and what
        they mean. </P
></LI
></OL
></DIV
><DIV
CLASS="section"
><HR><H2
CLASS="section"
><A
NAME="flags-overview"
>3.7. Flags</A
></H2
><P
>&#13;     Flags are a way to attach a specific status to a bug or attachment, 
     either <SPAN
CLASS="QUOTE"
>"+"</SPAN
> or <SPAN
CLASS="QUOTE"
>"-"</SPAN
>. The meaning of these symbols depends on the text
     the flag itself, but contextually they could mean pass/fail, 
     accept/reject, approved/denied, or even a simple yes/no. If your site
     allows requestable flags, then users may set a flag to <SPAN
CLASS="QUOTE"
>"?"</SPAN
> as a 
     request to another user that they look at the bug/attachment, and set
     the flag to its correct status.
   </P
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="flags-simpleexample"
>3.7.1. A Simple Example</A
></H3
><P
>&#13;       A developer might want to ask their manager, 
       <SPAN
CLASS="QUOTE"
>"Should we fix this bug before we release version 2.0?"</SPAN
> 
       They might want to do this for a <EM
>lot</EM
> of bugs,
       so it would be nice to streamline the process...
     </P
><P
>&#13;       In Bugzilla, it would work this way:
       <P
></P
><OL
TYPE="1"
><LI
><P
>&#13;             The Bugzilla administrator creates a flag type called 
             <SPAN
CLASS="QUOTE"
>"blocking2.0"</SPAN
> that shows up on all bugs in 
             your product.
           </P
><P
>&#13;             It shows up on the <SPAN
CLASS="QUOTE"
>"Show Bug"</SPAN
> screen
             as the text <SPAN
CLASS="QUOTE"
>"blocking2.0"</SPAN
> with a drop-down box next
             to it. The drop-down box contains four values: an empty space,
             <SPAN
CLASS="QUOTE"
>"?"</SPAN
>, <SPAN
CLASS="QUOTE"
>"-"</SPAN
>, and <SPAN
CLASS="QUOTE"
>"+"</SPAN
>.
           </P
></LI
><LI
><P
>The developer sets the flag to <SPAN
CLASS="QUOTE"
>"?"</SPAN
>.</P
></LI
><LI
><P
>&#13;             The manager sees the <SAMP
CLASS="computeroutput"
>blocking2.0</SAMP
>
             flag with a <SPAN
CLASS="QUOTE"
>"?"</SPAN
> value.
           </P
></LI
><LI
><P
>&#13;             If the manager thinks the feature should go into the product
             before version 2.0 can be released, he sets the flag to 
             <SPAN
CLASS="QUOTE"
>"+"</SPAN
>. Otherwise, he sets it to <SPAN
CLASS="QUOTE"
>"-"</SPAN
>.
           </P
></LI
><LI
><P
>&#13;             Now, every Bugzilla user who looks at the bug knows whether or 
             not the bug needs to be fixed before release of version 2.0.
           </P
></LI
></OL
>
     </P
></DIV
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="flags-about"
>3.7.2. About Flags</A
></H3
><DIV
CLASS="section"
><H4
CLASS="section"
><A
NAME="flag-values"
>3.7.2.1. Values</A
></H4
><P
>&#13;         Flags can have three values:
         <P
></P
><DIV
CLASS="variablelist"
><DL
><DT
><SAMP
CLASS="computeroutput"
>?</SAMP
></DT
><DD
><P
>&#13;               A user is requesting that a status be set. (Think of it as 'A question is being asked'.)
             </P
></DD
><DT
><SAMP
CLASS="computeroutput"
>-</SAMP
></DT
><DD
><P
>&#13;               The status has been set negatively. (The question has been answered <SPAN
CLASS="QUOTE"
>"no"</SPAN
>.)
             </P
></DD
><DT
><SAMP
CLASS="computeroutput"
>+</SAMP
></DT
><DD
><P
>&#13;               The status has been set positively.
               (The question has been answered <SPAN
CLASS="QUOTE"
>"yes"</SPAN
>.)
             </P
></DD
></DL
></DIV
>
       </P
><P
>&#13;         Actually, there's a fourth value a flag can have -- 
         <SPAN
CLASS="QUOTE"
>"unset"</SPAN
> -- which shows up as a blank space. This 
         just means that nobody has expressed an opinion (or asked
         someone else to express an opinion) about this bug or attachment.
       </P
></DIV
></DIV
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="flag-askto"
>3.7.3. Using flag requests</A
></H3
><P
>&#13;       If a flag has been defined as 'requestable', 
       users are allowed to set the flag's status to <SPAN
CLASS="QUOTE"
>"?"</SPAN
>.
       This status indicates that someone (aka <SPAN
CLASS="QUOTE"
>"the requester"</SPAN
> is asking
       for someone else to set the flag to either <SPAN
CLASS="QUOTE"
>"+"</SPAN
> or <SPAN
CLASS="QUOTE"
>"-"</SPAN
>.
     </P
><P
>&#13;       If a flag has been defined as 'specifically requestable', 
       a text box will appear next to the flag into which the requester may
       enter a Bugzilla username. That named person (aka <SPAN
CLASS="QUOTE"
>"the requestee"</SPAN
>)
       will receive an email notifying them of the request, and pointing them
       to the bug/attachment in question.
     </P
><P
>&#13;       If a flag has <EM
>not</EM
> been defined as 'specifically requestable',
       then no such text-box will appear. A request to set this flag cannot be made of
       any specific individual, but must be asked <SPAN
CLASS="QUOTE"
>"to the wind"</SPAN
>.
       A requester may <SPAN
CLASS="QUOTE"
>"ask the wind"</SPAN
> on any flag simply by leaving the text-box blank.
     </P
></DIV
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="flag-types"
>3.7.4. Two Types of Flags</A
></H3
><P
>&#13;       Flags can go in two places: on an attachment, or on a bug.
     </P
><DIV
CLASS="section"
><HR><H4
CLASS="section"
><A
NAME="flag-type-attachment"
>3.7.4.1. Attachment Flags</A
></H4
><P
>&#13;         Attachment flags are used to ask a question about a specific 
         attachment on a bug.
       </P
><P
>&#13;         Many Bugzilla installations use this to 
         request that one developer <SPAN
CLASS="QUOTE"
>"review"</SPAN
> another 
         developer's code before they check it in. They attach the code to
         a bug report, and then set a flag on that attachment called
         <SPAN
CLASS="QUOTE"
>"review"</SPAN
> to 
         <SAMP
CLASS="computeroutput"
>review?boss@domain.com</SAMP
>.
         boss@domain.com is then notified by email that
         he has to check out that attachment and approve it or deny it.
       </P
><P
>&#13;         For a Bugzilla user, attachment flags show up in two 
         places:
         <P
></P
><OL
TYPE="1"
><LI
><P
>&#13;               On the list of attachments in the <SPAN
CLASS="QUOTE"
>"Show Bug"</SPAN
>
               screen, you can see the current state of any flags that
               have been set to ?, +, or -. You can see who asked about 
               the flag (the requester), and who is being asked (the 
               requestee).
             </P
></LI
><LI
><P
>&#13;              When you <SPAN
CLASS="QUOTE"
>"Edit"</SPAN
> an attachment, you can 
              see any settable flag, along with any flags that have 
              already been set. This <SPAN
CLASS="QUOTE"
>"Edit Attachment"</SPAN
> 
              screen is where you set flags to ?, -, +, or unset them.
             </P
></LI
></OL
>
       </P
></DIV
><DIV
CLASS="section"
><HR><H4
CLASS="section"
><A
NAME="flag-type-bug"
>3.7.4.2. Bug Flags</A
></H4
><P
>&#13;         Bug flags are used to set a status on the bug itself. You can 
         see Bug Flags in the <SPAN
CLASS="QUOTE"
>"Show Bug"</SPAN
> screen 
         (<TT
CLASS="filename"
>editbug.cgi</TT
>).
       </P
><P
>&#13;         Only users with the ability to edit the bug may 
         set flags on bugs. This includes the assignee, reporter, and 
         any user with the <SAMP
CLASS="computeroutput"
>editbugs</SAMP
> 
         permission.
       </P
></DIV
></DIV
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="flags-admin"
>3.7.5. Administering Flags</A
></H3
><P
>&#13;       If you have the <SPAN
CLASS="QUOTE"
>"editcomponents"</SPAN
> permission, you will
       have <SPAN
CLASS="QUOTE"
>"Edit: ... | Flags | ..."</SPAN
> in your page footer.
       Clicking on that link will bring you to the <SPAN
CLASS="QUOTE"
>"Administer 
       Flag Types"</SPAN
> page. Here, you can select whether you want 
       to create (or edit) a Bug flag, or an Attachment flag.
     </P
><P
>&#13;       No matter which you choose, the interface is the same, so we'll 
       just go over it once.
     </P
><DIV
CLASS="section"
><HR><H4
CLASS="section"
><A
NAME="flags-create"
>3.7.5.1. Creating a Flag</A
></H4
><P
>&#13;          When you click on the <SPAN
CLASS="QUOTE"
>"Create a Flag Type for..."</SPAN
>
          link, you will be presented with a form. Here is what the fields in 
          the form mean:
        </P
><DIV
CLASS="section"
><HR><H5
CLASS="section"
><A
NAME="flags-create-field-name"
>3.7.5.1.1. Name</A
></H5
><P
>&#13;            This is the name of the flag. This will be displayed 
            to Bugzilla users who are looking at or setting the flag. 
            The name may consist of any valid Unicode character. 
          </P
></DIV
><DIV
CLASS="section"
><HR><H5
CLASS="section"
><A
NAME="flags-create-field-description"
>3.7.5.1.2. Description</A
></H5
><P
>&#13;            This describes the flag in more detail. At present, this doesn't
            show up anywhere helpful; ideally, it would be nice to have
            it show up as a tooltip. This field 
            can be as long as you like, and can contain any character you want.
          </P
></DIV
><DIV
CLASS="section"
><HR><H5
CLASS="section"
><A
NAME="flags-create-field-category"
>3.7.5.1.3. Category</A
></H5
><P
>&#13;            Default behaviour for a newly-created flag is to appear on
            products and all components, which is why <SPAN
CLASS="QUOTE"
>"__Any__:__Any__"</SPAN
>
            is already entered in the <SPAN
CLASS="QUOTE"
>"Inclusions"</SPAN
> box.
            If this is not your desired behaviour, you must either set some
            exclusions (for products on which you don't want the flag to appear),
            or you must remove <SPAN
CLASS="QUOTE"
>"__Any__:__Any__"</SPAN
> from the Inclusions box
            and define products/components specifically for this flag.
          </P
><P
>&#13;            To create an Inclusion, select a Product from the top drop-down box.
            You may also select a specific component from the bottom drop-down box.
            (Setting <SPAN
CLASS="QUOTE"
>"__Any__"</SPAN
> for Product translates to, 
            <SPAN
CLASS="QUOTE"
>"all the products in this Bugzilla"</SPAN
>.
            Selecting  <SPAN
CLASS="QUOTE"
>"__Any__"</SPAN
> in the Component field means
            <SPAN
CLASS="QUOTE"
>"all components in the selected product."</SPAN
>) 
            Selections made, press <SPAN
CLASS="QUOTE"
>"Include"</SPAN
>, and your
            Product/Component pairing will show up in the <SPAN
CLASS="QUOTE"
>"Inclusions"</SPAN
> box on the right.
          </P
><P
>&#13;            To create an Exclusion, the process is the same; select a Product from the
            top drop-down box, select a specific component if you want one, and press
            <SPAN
CLASS="QUOTE"
>"Exclude"</SPAN
>. The Product/Component pairing will show up in the 
            <SPAN
CLASS="QUOTE"
>"Exclusions"</SPAN
> box on the right.
          </P
><P
>&#13;            This flag <EM
>will</EM
> and <EM
>can</EM
> be set for any
            products/components that appearing in the <SPAN
CLASS="QUOTE"
>"Inclusions"</SPAN
> box 
            (or which fall under the appropriate <SPAN
CLASS="QUOTE"
>"__Any__"</SPAN
>). 
            This flag <EM
>will not</EM
> appear (and therefore cannot be set) on
            any products appearing in the <SPAN
CLASS="QUOTE"
>"Exclusions"</SPAN
> box.
            <EM
> IMPORTANT: Exclusions override inclusions.</EM
>
          </P
><P
>&#13;            You may select a Product without selecting a specific Component,
            but it is illegal to select a Component without a Product, or to select a
            Component that does not belong to the named Product. Doing so as of
            this writing (2.18rc3) will raise an error... even if all your products
            have a component by that name.
          </P
><P
><EM
>Example:</EM
> Let's say you have a product called 
            <SPAN
CLASS="QUOTE"
>"Jet Plane"</SPAN
> that has thousands of components. You want
            to be able to ask if a problem should be fixed in the next model of 
            plane you release. We'll call the flag <SPAN
CLASS="QUOTE"
>"fixInNext"</SPAN
>.
            But, there's one component in <SPAN
CLASS="QUOTE"
>"Jet Plane,"</SPAN
> 
            called <SPAN
CLASS="QUOTE"
>"Pilot."</SPAN
> It doesn't make sense to release a 
            new pilot, so you don't want to have the flag show up in that component.
            So, you include <SPAN
CLASS="QUOTE"
>"Jet Plane:__Any__"</SPAN
> and you exclude 
            <SPAN
CLASS="QUOTE"
>"Jet Plane:Pilot"</SPAN
>.
          </P
></DIV
><DIV
CLASS="section"
><HR><H5
CLASS="section"
><A
NAME="flags-create-field-sortkey"
>3.7.5.1.4. Sort Key</A
></H5
><P
>&#13;            Flags normally show up in alphabetical order. If you want them to 
            show up in a different order, you can use this key set the order on each flag. 
            Flags with a lower sort key will appear before flags with a higher
            sort key. Flags that have the same sort key will be sorted alphabetically,
            but they will still be after flags with a lower sort key, and before flags
            with a higher sort key.
          </P
><P
>&#13;            <EM
>Example:</EM
> I have AFlag (Sort Key 100), BFlag (Sort Key 10), 
            CFlag (Sort Key 10), and DFlag (Sort Key 1). These show up in
            the order: DFlag, BFlag, CFlag, AFlag.
          </P
></DIV
><DIV
CLASS="section"
><HR><H5
CLASS="section"
><A
NAME="flags-create-field-active"
>3.7.5.1.5. Active</A
></H5
><P
>&#13;            Sometimes, you might want to keep old flag information in the 
            Bugzilla database, but stop users from setting any new flags of this type.
            To do this, uncheck <SPAN
CLASS="QUOTE"
>"active"</SPAN
>. Deactivated
            flags will still show up in the UI if they are ?, +, or -, but they
            may only be cleared (unset), and cannot be changed to a new value.
            Once a deactivated flag is cleared, it will completely disappear from a 
            bug/attachment, and cannot be set again.
          </P
></DIV
><DIV
CLASS="section"
><HR><H5
CLASS="section"
><A
NAME="flags-create-field-requestable"
>3.7.5.1.6. Requestable</A
></H5
><P
>&#13;            New flags are, by default, <SPAN
CLASS="QUOTE"
>"requestable"</SPAN
>, meaning that they
            offer users the <SPAN
CLASS="QUOTE"
>"?"</SPAN
> option, as well as <SPAN
CLASS="QUOTE"
>"+"</SPAN
>
            and <SPAN
CLASS="QUOTE"
>"-"</SPAN
>.
            To remove the ? option, uncheck <SPAN
CLASS="QUOTE"
>"requestable"</SPAN
>.
          </P
></DIV
><DIV
CLASS="section"
><HR><H5
CLASS="section"
><A
NAME="flags-create-field-cclist"
>3.7.5.1.7. CC List</A
></H5
><P
>&#13;            If you want certain users to be notified every time this flag is 
            set to ?, -, +, or unset, add them here. This is a comma-separated 
            list of email addresses that need not be restricted to Bugzilla usernames..
          </P
></DIV
><DIV
CLASS="section"
><HR><H5
CLASS="section"
><A
NAME="flags-create-field-specific"
>3.7.5.1.8. Specifically Requestable</A
></H5
><P
>&#13;            By default this box is checked for new flags, meaning that users may make
            flag requests of specific individuals. Unchecking this box will remove the
            text box next to a flag; if it is still requestable, then requests may
            only be made <SPAN
CLASS="QUOTE"
>"to the wind."</SPAN
> Removing this after specific
            requests have been made will not remove those requests; that data will
            stay in the database (though it will no longer appear to the user).
          </P
></DIV
><DIV
CLASS="section"
><HR><H5
CLASS="section"
><A
NAME="flags-create-field-multiplicable"
>3.7.5.1.9. Multiplicable</A
></H5
><P
>&#13;            Any flag with <SPAN
CLASS="QUOTE"
>"Multiplicable"</SPAN
> set (default for new flags is 'on')
            may be set more than once. After being set once, an unset flag
            of the same type will appear below it with <SPAN
CLASS="QUOTE"
>"addl."</SPAN
> (short for 
            <SPAN
CLASS="QUOTE"
>"additional"</SPAN
>) before the name. There is no limit to the number of
            times a Multiplicable flags may be set on the same bug/attachment.
          </P
></DIV
></DIV
><DIV
CLASS="section"
><HR><H4
CLASS="section"
><A
NAME="flags-delete"
>3.7.5.2. Deleting a Flag</A
></H4
><P
>&#13;          When you are at the <SPAN
CLASS="QUOTE"
>"Administer Flag Types"</SPAN
> screen,
          you will be presented with a list of Bug flags and a list of Attachment
          Flags.
        </P
><P
>&#13;          To delete a flag, click on the <SPAN
CLASS="QUOTE"
>"Delete"</SPAN
> link next to
          the flag description.
        </P
><DIV
CLASS="warning"
><P
></P
><TABLE
CLASS="warning"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/warning.gif"
HSPACE="5"
ALT="Warning"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;            Once you delete a flag, it is <EM
>gone</EM
> from
            your Bugzilla. All the data for that flag will be deleted.
            Everywhere that flag was set, it will disappear,
            and you cannot get that data back. If you want to keep flag data,
            but don't want anybody to set any new flags or change current flags,
            unset <SPAN
CLASS="QUOTE"
>"active"</SPAN
> in the flag Edit form.
          </P
></TD
></TR
></TABLE
></DIV
></DIV
><DIV
CLASS="section"
><HR><H4
CLASS="section"
><A
NAME="flags-edit"
>3.7.5.3. Editing a Flag</A
></H4
><P
>&#13;          To edit a flag's properties, just click on the <SPAN
CLASS="QUOTE"
>"Edit"</SPAN
>
          link next to the flag's description. That will take you to the same
          form described in the <SPAN
CLASS="QUOTE"
>"Creating a Flag"</SPAN
> section.
        </P
></DIV
></DIV
></DIV
><DIV
CLASS="section"
><HR><H2
CLASS="section"
><A
NAME="voting"
>3.8. Voting</A
></H2
><P
>Voting allows users to be given a pot of votes which they can allocate
    to bugs, to indicate that they'd like them fixed. 
    This allows developers to gauge
    user need for a particular enhancement or bugfix. By allowing bugs with
    a certain number of votes to automatically move from "UNCONFIRMED" to
    "NEW", users of the bug system can help high-priority bugs garner
    attention so they don't sit for a long time awaiting triage.</P
><P
>To modify Voting settings:</P
><P
></P
><OL
TYPE="1"
><LI
><P
>Navigate to the "Edit product" screen for the Product you
        wish to modify</P
></LI
><LI
><P
><EM
>Maximum Votes per person</EM
>:
        Setting this field to "0" disables voting.</P
></LI
><LI
><P
><EM
>Maximum Votes a person can put on a single
         bug</EM
>: 
         It should probably be some number lower than the
        "Maximum votes per person". Don't set this field to "0" if
        "Maximum votes per person" is non-zero; that doesn't make
        any sense.</P
></LI
><LI
><P
><EM
>Number of votes a bug in this product needs to
        automatically get out of the UNCONFIRMED state</EM
>: 
        Setting this field to "0" disables the automatic move of
        bugs from UNCONFIRMED to NEW. 
        </P
></LI
><LI
><P
>Once you have adjusted the values to your preference, click
        "Update".</P
></LI
></OL
></DIV
><DIV
CLASS="section"
><HR><H2
CLASS="section"
><A
NAME="quips"
>3.9. Quips</A
></H2
><P
>&#13;      Quips are small text messages that can be configured to appear
      next to search results. A Bugzilla installation can have its own specific
      quips. Whenever a quip needs to be displayed, a random selection
      is made from the pool of already existing quips.
    </P
><P
>&#13;      Quips are controlled by the <EM
>enablequips</EM
> parameter.
      It has several possible values: on, approved, frozen or off.
      In order to enable quips approval you need to set this parameter
      to "approved". In this way, users are free to submit quips for
      addition but an administrator must explicitly approve them before
      they are actually used.
    </P
><P
>&#13;      In order to see the user interface for the quips, it is enough to click
      on a quip when it is displayed together with the search results. Or
      it can be seen directly in the browser by visiting the quips.cgi URL
      (prefixed with the usual web location of the Bugzilla installation).
      Once the quip interface is displayed, it is enough to click the
      "view and edit the whole quip list" in order to see the administration
      page. A page with all the quips available in the database will
      be displayed.
    </P
><P
>&#13;      Next to each tip there is a checkbox, under the
      "Approved" column. Quips who have this checkbox checked are
      already approved and will appear next to the search results.
      The ones that have it unchecked are still preserved in the
      database but they will not appear on search results pages.
      User submitted quips have initially the checkbox unchecked.
    </P
><P
>&#13;      Also, there is a delete link next to each quip,
      which can be used in order to permanently delete a quip.
    </P
></DIV
><DIV
CLASS="section"
><HR><H2
CLASS="section"
><A
NAME="groups"
>3.10. Groups and Group Security</A
></H2
><P
>Groups allow the administrator
    to isolate bugs or products that should only be seen by certain people.
    The association between products and groups is controlled from
    the product edit page under <SPAN
CLASS="QUOTE"
>"Edit Group Controls."</SPAN
>
    </P
><P
>&#13;    If the makeproductgroups param is on, a new group will be automatically
    created for every new product. It is primarily available for backward
    compatibility with older sites. 
    </P
><P
>&#13;      Note that group permissions are such that you need to be a member
      of <EM
>all</EM
> the groups a bug is in, for whatever
      reason, to see that bug. Similarly, you must be a member 
      of <EM
>all</EM
> of the entry groups for a product 
      to add bugs to a product and you must be a member 
      of <EM
>all</EM
> of the canedit groups for a product
      in order to make <EM
>any</EM
> change to bugs in that
      product.
    </P
><DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;        By default, bugs can also be seen by the Assignee, the Reporter, and 
        by everyone on the CC List, regardless of whether or not the bug would 
        typically be viewable by them. Visibility to the Reporter and CC List can 
        be overridden (on a per-bug basis) by bringing up the bug, finding the 
        section that starts with <SPAN
CLASS="QUOTE"
>"Users in the roles selected below..."</SPAN
>
        and un-checking the box next to either 'Reporter' or 'CC List' (or both).
      </P
></TD
></TR
></TABLE
></DIV
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="AEN1438"
>3.10.1. Creating Groups</A
></H3
><P
>To create Groups:</P
><P
></P
><OL
TYPE="1"
><LI
><P
>Select the <SPAN
CLASS="QUOTE"
>"groups"</SPAN
>
          link in the footer.</P
></LI
><LI
><P
>Take a moment to understand the instructions on the <SPAN
CLASS="QUOTE"
>"Edit
          Groups"</SPAN
> screen, then select the <SPAN
CLASS="QUOTE"
>"Add Group"</SPAN
> link.</P
></LI
><LI
><P
>Fill out the <SPAN
CLASS="QUOTE"
>"Group"</SPAN
>, <SPAN
CLASS="QUOTE"
>"Description"</SPAN
>, 
           and <SPAN
CLASS="QUOTE"
>"User RegExp"</SPAN
> fields. 
           <SPAN
CLASS="QUOTE"
>"User RegExp"</SPAN
> allows you to automatically
           place all users who fulfill the Regular Expression into the new group. 
           When you have finished, click <SPAN
CLASS="QUOTE"
>"Add"</SPAN
>.</P
><P
>Users whose email addresses match the regular expression
           will automatically be members of the group as long as their 
           email addresses continue to match the regular expression.</P
><DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>This is a change from 2.16 where the regular expression
             resulted in a user acquiring permanent membership in a group.
             To remove a user from a group the user was in due to a regular
             expression in version 2.16 or earlier, the user must be explicitly
             removed from the group. This can easily be done by pressing
             buttons named 'Remove Memberships' or 'Remove Memberships
             included in regular expression' under the table.</P
></TD
></TR
></TABLE
></DIV
><DIV
CLASS="warning"
><P
></P
><TABLE
CLASS="warning"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/warning.gif"
HSPACE="5"
ALT="Warning"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>If specifying a domain in the regexp, make sure you end
             the regexp with a $. Otherwise, when granting access to 
             "@mycompany\.com", you will allow access to 
             'badperson@mycompany.com.cracker.net'. You need to use 
             '@mycompany\.com$' as the regexp.</P
></TD
></TR
></TABLE
></DIV
></LI
><LI
><P
>If you plan to use this group to directly control
          access to bugs, check the "use for bugs" box. Groups
          not used for bugs are still useful because other groups
          can include the group as a whole.</P
></LI
><LI
><P
>After you add your new group, edit the new group.  On the
          edit page, you can specify other groups that should be included
          in this group and which groups should be permitted to add and delete
          users from this group.</P
></LI
></OL
></DIV
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="AEN1465"
>3.10.2. Assigning Users to Groups</A
></H3
><P
>Users can become a member of a group in several ways.</P
><P
></P
><OL
TYPE="1"
><LI
><P
>The user can be explicitly placed in the group by editing
          the user's own profile</P
></LI
><LI
><P
>The group can include another group of which the user is
          a member.</P
></LI
><LI
><P
>The user's email address can match a regular expression
          that the group specifies to automatically grant membership to
          the group.</P
></LI
></OL
></DIV
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="AEN1475"
>3.10.3. Assigning Group Controls to Products</A
></H3
><P
>&#13;      On the product edit page, there is a page to edit the 
      <SPAN
CLASS="QUOTE"
>"Group Controls"</SPAN
> 
      for a product. This  allows you to 
      configure how a group relates to the product. 
      Groups may be applicable, default, 
      and mandatory as well as used to control entry 
      or used to make bugs in the product
      totally read-only unless the group restrictions are met. 
      </P
><P
>&#13;      For each group, it is possible to specify if membership in that
      group is...
      </P
><P
></P
><OL
TYPE="1"
><LI
><P
>&#13;          required for bug entry, 
          </P
></LI
><LI
><P
>&#13;          Not applicable to this product(NA),
          a possible restriction for a member of the 
          group to place on a bug in this product(Shown),
          a default restriction for a member of the 
          group to place on a bug in this product(Default),
          or a mandatory restriction to be placed on bugs 
          in this product(Mandatory).
          </P
></LI
><LI
><P
>&#13;          Not applicable by non-members to this product(NA),
          a possible restriction for a non-member of the 
          group to place on a bug in this product(Shown),
          a default restriction for a non-member of the 
          group to place on a bug in this product(Default),
          or a mandatory restriction to be placed on bugs 
          in this product when entered by a non-member(Mandatory).
          </P
></LI
><LI
><P
>&#13;          required in order to make <EM
>any</EM
> change
          to bugs in this product <EM
>including comments.</EM
>
          </P
></LI
></OL
><P
>These controls are often described in this order, so a 
      product that requires a user to be a member of group "foo" 
      to enter a bug and then requires that the bug stay restricted
      to group "foo" at all times and that only members of group "foo"
      can edit the bug even if they otherwise could see the bug would 
      have its controls summarized by...</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
> 
foo: ENTRY, MANDATORY/MANDATORY, CANEDIT
      </PRE
></FONT
></TD
></TR
></TABLE
></DIV
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="AEN1493"
>3.10.4. Common Applications of Group Controls</A
></H3
><DIV
CLASS="section"
><H4
CLASS="section"
><A
NAME="AEN1495"
>3.10.4.1. General User Access With Security Group</A
></H4
><P
>To permit any user to file bugs in each product (A, B, C...) 
      and to permit any user to submit those bugs into a security
      group....</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
> 
Product A...
security: SHOWN/SHOWN
Product B...
security: SHOWN/SHOWN
Product C...
security: SHOWN/SHOWN
      </PRE
></FONT
></TD
></TR
></TABLE
></DIV
><DIV
CLASS="section"
><HR><H4
CLASS="section"
><A
NAME="AEN1499"
>3.10.4.2. General User Access With A Security Product</A
></H4
><P
>To permit any user to file bugs in a Security product
      while keeping those bugs from becoming visible to anyone
      outside the securityworkers group unless a member of the
      securityworkers group removes that restriction....</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
> 
Product Security...
securityworkers: DEFAULT/MANDATORY
      </PRE
></FONT
></TD
></TR
></TABLE
></DIV
><DIV
CLASS="section"
><HR><H4
CLASS="section"
><A
NAME="AEN1503"
>3.10.4.3. Product Isolation With Common Group</A
></H4
><P
>To permit users of product A to access the bugs for
      product A, users of product B to access product B, and support
      staff to access both, 3 groups are needed</P
><P
></P
><OL
TYPE="1"
><LI
><P
>Support: Contains members of the support staff.</P
></LI
><LI
><P
>AccessA: Contains users of product A and the Support group.</P
></LI
><LI
><P
>AccessB: Contains users of product B and the Support group.</P
></LI
></OL
><P
>Once these 3 groups are defined, the products group controls
      can be set to..</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;Product A...
AccessA: ENTRY, MANDATORY/MANDATORY
Product B...
AccessB: ENTRY, MANDATORY/MANDATORY
      </PRE
></FONT
></TD
></TR
></TABLE
><P
>Optionally, the support group could be permitted to make
      bugs inaccessible to the users and could be permitted to publish
      bugs relevant to all users in a common product that is read-only
      to anyone outside the support group. That configuration could
      be...</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;Product A...
AccessA: ENTRY, MANDATORY/MANDATORY
Support: SHOWN/NA
Product B...
AccessB: ENTRY, MANDATORY/MANDATORY
Support: SHOWN/NA
Product Common...
Support: ENTRY, DEFAULT/MANDATORY, CANEDIT
      </PRE
></FONT
></TD
></TR
></TABLE
></DIV
></DIV
></DIV
><DIV
CLASS="section"
><HR><H2
CLASS="section"
><A
NAME="upgrading"
>3.11. Upgrading to New Releases</A
></H2
><P
>&#13;      Upgrading Bugzilla is something we all want to do from time to time,
      be it to get new features or pick up the latest security fix. How easy
      it is to update depends on a few factors:
    </P
><P
></P
><UL
><LI
><P
>&#13;          If the new version is a revision or a new point release
        </P
></LI
><LI
><P
>&#13;          How many local changes (if any) have been made
        </P
></LI
></UL
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="upgrading-version-defns"
>3.11.1. Version Definitions</A
></H3
><P
>&#13;        Bugzilla displays the version you are using at the top of most
        pages you load. It will look something like '2.16.7' or '2.18rc3'
        or '2.19.1+'. The first number in this series is the Major Version.
        This does not change very often (that is to say, almost never);
        Bugzilla was 1.x.x when it was first created, and went to 2.x.x
        when it was re-written in perl in Sept 1998. If/When the major version
        is changed to 3.x.x, it will signify a significant structural change
        and will be accompanied by much fanfare and many instructions on
        how to upgrade, including a revision to this page. :)
      </P
><P
>&#13;        The second number in the version is called the 'minor number', and
        a release that changes the minor number is called a 'point release'.
        An even number in this position (2.14, 2.16, 2.18, 2.20, etc.)
        represents a stable version, while an odd number (2.17, 2.19, etc.)
        represents a development version. In the past, stable point releases
        were feature-based, coming when certain enhancements had been
        completed, or the Bugzilla development team felt that enough
        progress had been made overall. As of version 2.18, however,
        Bugzilla has moved to a time-based release schedule; current plans
        are to create a stable point release every 6 months or so after
        2.18 is deployed.
      </P
><P
>&#13;        The third number in the Bugzilla version represents a bugfix version.
        Bugfix Revisions are normally released only to address security
        vulnerabilities; in the future, it is likely that the Bugzilla
        development team will back-port bugfixes in a new point release to
        the old point release for a limited period. Once enough of these
        bugfixes have accumulated (or a new security vulnerability is
        identified and closed), a bugfix release will be made. As an 
        example, 2.16.6 was a bugfix release, and improved on 2.16.5.
      </P
><DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;          When reading version numbers, everything separated by a point ('.')
          should be read as a single number. It is <EM
>not</EM
>
          the same as decimal. 2.14 is newer than 2.8 because minor version
          14 is greater than minor version 8. 2.24.11 would be newer than
          2.24.9 (because bugfix 11 is greater than bugfix 9. This is
          confusing to some people who aren't used to dealing with software.
        </P
></TD
></TR
></TABLE
></DIV
></DIV
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="upgrading-methods"
>3.11.2. Upgrading - Methods and Procedure</A
></H3
><P
>&#13;        There are three different ways to upgrade your installation.
      </P
><P
></P
><OL
TYPE="1"
><LI
><P
>&#13;            Using CVS (<A
HREF="#upgrade-cvs"
>Section 3.11.2.1</A
>)
          </P
></LI
><LI
><P
>&#13;            Downloading a new tarball (<A
HREF="#upgrade-tarball"
>Section 3.11.2.2</A
>)
          </P
></LI
><LI
><P
>&#13;            Applying the relevant patches (<A
HREF="#upgrade-patches"
>Section 3.11.2.3</A
>)
          </P
></LI
></OL
><P
>&#13;        Each of these options has its own pros and cons; the one that's
        right for you depends on how long it has been since you last
        installed, the degree to which you have customized your installation,
        and/or your network configuration. (Some discussion of the various
        methods of updating compared with degree and methods of local
        customization can be found in <A
HREF="#template-method"
>Section 5.1.2</A
>.)
      </P
><P
>&#13;        The larger the jump you are trying to make, the more difficult it
        is going to be to upgrade if you have made local customizations.
        Upgrading from 2.18 to 2.18.1 should be fairly painless even if
        you are heavily customized, but going from 2.14 to 2.18 is going
        to mean a fair bit of work re-writing your local changes to use
        the new files, logic, templates, etc. If you have done no local
        changes at all, however, then upgrading should be approximately
        the same amount of work regardless of how long it has been since
        your version was released.
      </P
><DIV
CLASS="warning"
><P
></P
><TABLE
CLASS="warning"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/warning.gif"
HSPACE="5"
ALT="Warning"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;          Upgrading is a one-way process. You should backup your database
          and current Bugzilla directory before attempting the upgrade. If
          you wish to revert to the old Bugzilla version for any reason, you
          will have to restore from these backups.
        </P
></TD
></TR
></TABLE
></DIV
><P
>&#13;        The examples in the following sections are written as though the
        user were updating to version 2.18.1, but the procedures are the
        same regardless of whether one is updating to a new point release
        or simply trying to obtain a new bugfix release. Also, in the
        examples the user's Bugzilla installation is found at
        <TT
CLASS="filename"
>/var/www/html/bugzilla</TT
>. If that is not the
        same as the location of your Bugzilla installation, simply
        substitute the proper paths where appropriate.
      </P
><DIV
CLASS="section"
><HR><H4
CLASS="section"
><A
NAME="upgrade-cvs"
>3.11.2.1. Upgrading using CVS</A
></H4
><P
>&#13;          Every release of Bugzilla, whether it is a point release or a bugfix,
          is tagged in CVS.  Also, every tarball that has been distributed since
          version 2.12 has been created in such a way that it can be used with
          CVS once it is unpacked. Doing so, however, requires that you are able
          to access cvs-mirror.mozilla.org on port 2401, which may not be an
          option or a possibility for some users, especially those behind a
          highly restrictive firewall.
        </P
><DIV
CLASS="tip"
><P
></P
><TABLE
CLASS="tip"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/tip.gif"
HSPACE="5"
ALT="Tip"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;            If you can, updating using CVS is probably the most painless
            method, especially if you have a lot of local changes.
          </P
></TD
></TR
></TABLE
></DIV
><P
>&#13;          The following shows the sequence of commands needed to update a
          Bugzilla installation via CVS, and a typical series of results.
        </P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;bash$ <B
CLASS="command"
>cd /var/www/html/bugzilla</B
>
bash$ <B
CLASS="command"
>cvs login</B
>
Logging in to :pserver:anonymous@cvs-mirror.mozilla.org:2401/cvsroot
CVS password: <EM
>('anonymous', or just leave it blank)</EM
>
bash$ <B
CLASS="command"
>cvs -q update -r BUGZILLA-2_18_1 -dP</B
>
P checksetup.pl
P collectstats.pl
P globals.pl
P docs/rel_notes.txt
P template/en/default/list/quips.html.tmpl
<EM
>(etc.)</EM
>
        </PRE
></FONT
></TD
></TR
></TABLE
><DIV
CLASS="caution"
><P
></P
><TABLE
CLASS="caution"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/caution.gif"
HSPACE="5"
ALT="Caution"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;            If a line in the output from <B
CLASS="command"
>cvs update</B
> begins
            with a <SAMP
CLASS="computeroutput"
>C</SAMP
>, then that represents a
            file with local changes that CVS was unable to properly merge. You
            need to resolve these conflicts manually before Bugzilla (or at
            least the portion using that file) will be usable.
          </P
></TD
></TR
></TABLE
></DIV
></DIV
><DIV
CLASS="section"
><HR><H4
CLASS="section"
><A
NAME="upgrade-tarball"
>3.11.2.2. Upgrading using the tarball</A
></H4
><P
>&#13;          If you are unable (or unwilling) to use CVS, another option that's
          always available is to obtain the latest tarball from the <A
HREF="http://www.bugzilla.org/download/"
TARGET="_top"
>Download Page</A
> and 
          create a new Bugzilla installation from that.
        </P
><P
>&#13;          This sequence of commands shows how to get the tarball from the
          command-line; it is also possible to download it from the site
          directly in a web browser. If you go that route, save the file
          to the <TT
CLASS="filename"
>/var/www/html</TT
>
          directory (or its equivalent, if you use something else) and 
          omit the first three lines of the example.
        </P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;bash$ <B
CLASS="command"
>cd /var/www/html</B
>
bash$ <B
CLASS="command"
>wget ftp://ftp.mozilla.org/pub/mozilla.org/webtools/bugzilla-2.18.1.tar.gz</B
>
<EM
>(Output omitted)</EM
>
bash$ <B
CLASS="command"
>tar xzvf bugzilla-2.18.1.tar.gz</B
>
bugzilla-2.18.1/
bugzilla-2.18.1/.cvsignore
bugzilla-2.18.1/1x1.gif
<EM
>(Output truncated)</EM
>
bash$ <B
CLASS="command"
>cd bugzilla-2.18.1</B
>
bash$ <B
CLASS="command"
>cp ../bugzilla/localconfig* .</B
>
bash$ <B
CLASS="command"
>cp -r ../bugzilla/data .</B
>
bash$ <B
CLASS="command"
>cd ..</B
>
bash$ <B
CLASS="command"
>mv bugzilla bugzilla.old</B
>
bash$ <B
CLASS="command"
>mv bugzilla-2.18.1 bugzilla</B
>
        </PRE
></FONT
></TD
></TR
></TABLE
><DIV
CLASS="warning"
><P
></P
><TABLE
CLASS="warning"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/warning.gif"
HSPACE="5"
ALT="Warning"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;            The <B
CLASS="command"
>cp</B
> commands both end with periods which
            is a very important detail, it tells the shell that the destination
            directory is the current working directory. 
          </P
></TD
></TR
></TABLE
></DIV
><P
>&#13;          This upgrade method will give you a clean install of Bugzilla with the 
          same version as the tarball. That's fine if you don't have any local
          customizations that you want to maintain, but if you do then you will 
          need to reapply them by hand to the appropriate files. 
        </P
><P
>&#13;          It's worth noting that since 2.12, the Bugzilla tarballs come
          CVS-ready, so if you decide at a later date that you'd rather use
          CVS as an upgrade method, your code will already be set up for it.
        </P
></DIV
><DIV
CLASS="section"
><HR><H4
CLASS="section"
><A
NAME="upgrade-patches"
>3.11.2.3. Upgrading using patches</A
></H4
><P
>&#13;          If you are doing a bugfix upgrade -- that is, one where only the 
          last number of the revision changes, such as from 2.16.6 to 2.16.7
          -- then you have the option of obtaining and applying a patch file
          from the <A
HREF="http://www.bugzilla.org/download/"
TARGET="_top"
>Download Page</A
>.
          This file is made available by the <A
HREF="http://www.bugzilla.org/developers/profiles.html"
TARGET="_top"
>Bugzilla
          Development Team</A
>, and is a collection of all the bug fixes
          and security patches that have been made since the last bugfix
          release. If you are planning to upgrade via patches, it is safer
          to grab this developer-made patch file than to read the patch
          notes and apply all (or even just some of) the patches oneself,
          as sometimes patches on bugs get changed before they get checked in.
        </P
><P
>&#13;          As above, this example starts with obtaining the file via the 
          command line. If you have already downloaded it, you can omit the
          first two commands.
        </P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;bash$ <B
CLASS="command"
>cd /var/www/html/bugzilla</B
>
bash$ <B
CLASS="command"
>wget ftp://ftp.mozilla.org/pub/mozilla.org/webtools/bugzilla-2.18.0-to-2.18.1.diff.gz</B
>
<EM
>(Output omitted)</EM
>
bash$ <B
CLASS="command"
>gunzip bugzilla-2.18.0-to-2.18.1.diff.gz</B
>
bash$ <B
CLASS="command"
>patch -p1 &#60; bugzilla-2.18.0-to-2.18.1.diff</B
>
patching file checksetup.pl
patching file collectstats.pl
patching file globals.pl
<EM
>(etc.)</EM
>
        </PRE
></FONT
></TD
></TR
></TABLE
><DIV
CLASS="warning"
><P
></P
><TABLE
CLASS="warning"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/warning.gif"
HSPACE="5"
ALT="Warning"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;            Be aware that upgrading from a patch file does not change the
            entries in your <TT
CLASS="filename"
>CVS</TT
> directory.
            This could make it more difficult to upgrade using CVS
            (<A
HREF="#upgrade-cvs"
>Section 3.11.2.1</A
>) in the future.
          </P
></TD
></TR
></TABLE
></DIV
></DIV
></DIV
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="upgrading-completion"
>3.11.3. Completing Your Upgrade</A
></H3
><P
>&#13;        Regardless of which upgrade method you choose, you will need to
        run <B
CLASS="command"
>./checksetup.pl</B
> before your Bugzilla
        upgrade will be complete.
      </P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;bash$ <B
CLASS="command"
>cd bugzilla</B
>
bash$ <B
CLASS="command"
>./checksetup.pl</B
>
      </PRE
></FONT
></TD
></TR
></TABLE
><DIV
CLASS="warning"
><P
></P
><TABLE
CLASS="warning"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/warning.gif"
HSPACE="5"
ALT="Warning"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;          The period at the beginning of the command
          <B
CLASS="command"
>./checksetup.pl</B
> is important and can not
          be omitted.
        </P
></TD
></TR
></TABLE
></DIV
><P
>&#13;        If you have done a lot of local modifications, it wouldn't hurt
        to run the Bugzilla Testing suite. This is not a required step,
        but it isn't going to hurt anything, and might help point out
        some areas that could be improved. (More information on the
        test suite can be had by following this link to the appropriate
        section in the <A
HREF="http://www.bugzilla.org/docs/developer.html#testsuite"
TARGET="_top"
>Developers'
        Guide</A
>.)
      </P
></DIV
></DIV
></DIV
><DIV
CLASS="chapter"
><HR><H1
><A
NAME="security"
></A
>Chapter 4. Bugzilla Security</H1
><P
>While some of the items in this chapter are related to the operating
  system Bugzilla is running on or some of the support software required to
  run Bugzilla, it is all related to protecting your data. This is not
  intended to be a comprehensive guide to securing Linux, Apache, MySQL, or
  any other piece of software mentioned. There is no substitute for active
  administration and monitoring of a machine. The key to good security is
  actually right in the middle of the word: <EM
>U R It</EM
>.
  </P
><P
>While programmers in general always strive to write secure code,
  accidents can and do happen. The best approach to security is to always
  assume that the program you are working with isn't 100% secure and restrict
  its access to other parts of your machine as much as possible.
  </P
><DIV
CLASS="section"
><HR><H2
CLASS="section"
><A
NAME="security-os"
>4.1. Operating System</A
></H2
><DIV
CLASS="section"
><H3
CLASS="section"
><A
NAME="security-os-ports"
>4.1.1. TCP/IP Ports</A
></H3
><P
>The TCP/IP standard defines more than 65,000 ports for sending
      and receiving traffic. Of those, Bugzilla needs exactly one to operate
      (different configurations and options may require up to 3). You should
      audit your server and make sure that you aren't listening on any ports
      you don't need to be. It's also highly recommended that the server
      Bugzilla resides on, along with any other machines you administer, be
      placed behind some kind of firewall.
      </P
></DIV
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="security-os-accounts"
>4.1.2. System User Accounts</A
></H3
><P
>Many <A
HREF="#gloss-daemon"
><I
CLASS="glossterm"
>daemons</I
></A
>, such
      as Apache's <TT
CLASS="filename"
>httpd</TT
> or MySQL's
      <TT
CLASS="filename"
>mysqld</TT
>, run as either <SPAN
CLASS="QUOTE"
>"root"</SPAN
> or
      <SPAN
CLASS="QUOTE"
>"nobody"</SPAN
>. This is even worse on Windows machines where the
      majority of <A
HREF="#gloss-service"
><I
CLASS="glossterm"
>services</I
></A
>
      run as <SPAN
CLASS="QUOTE"
>"SYSTEM"</SPAN
>. While running as <SPAN
CLASS="QUOTE"
>"root"</SPAN
> or
      <SPAN
CLASS="QUOTE"
>"SYSTEM"</SPAN
> introduces obvious security concerns, the
      problems introduced by running everything as <SPAN
CLASS="QUOTE"
>"nobody"</SPAN
> may
      not be so obvious. Basically, if you run every daemon as
      <SPAN
CLASS="QUOTE"
>"nobody"</SPAN
> and one of them gets comprimised it can
      comprimise every other daemon running as <SPAN
CLASS="QUOTE"
>"nobody"</SPAN
> on your
      machine. For this reason, it is recommended that you create a user
      account for each daemon.
      </P
><DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>You will need to set the <VAR
CLASS="option"
>webservergroup</VAR
> option
        in <TT
CLASS="filename"
>localconfig</TT
> to the group your webserver runs
        as. This will allow <TT
CLASS="filename"
>./checksetup.pl</TT
> to set file
        permissions on Unix systems so that nothing is world-writable.
        </P
></TD
></TR
></TABLE
></DIV
></DIV
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="security-os-chroot"
>4.1.3. The <TT
CLASS="filename"
>chroot</TT
> Jail</A
></H3
><P
>&#13;        If your system supports it, you may wish to consider running
        Bugzilla inside of a <TT
CLASS="filename"
>chroot</TT
> jail. This option
        provides unprecedented security by restricting anything running
        inside the jail from accessing any information outside of it. If you
        wish to use this option, please consult the documentation that came
        with your system.
      </P
></DIV
></DIV
><DIV
CLASS="section"
><HR><H2
CLASS="section"
><A
NAME="security-mysql"
>4.2. MySQL</A
></H2
><DIV
CLASS="section"
><H3
CLASS="section"
><A
NAME="security-mysql-account"
>4.2.1. The MySQL System Account</A
></H3
><P
>As mentioned in <A
HREF="#security-os-accounts"
>Section 4.1.2</A
>, the MySQL
      daemon should run as a non-privleged, unique user. Be sure to consult
      the MySQL documentation or the documentation that came with your system
      for instructions.
      </P
></DIV
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="security-mysql-root"
>4.2.2. The MySQL <SPAN
CLASS="QUOTE"
>"root"</SPAN
> and <SPAN
CLASS="QUOTE"
>"anonymous"</SPAN
> Users</A
></H3
><P
>By default, MySQL comes with a <SPAN
CLASS="QUOTE"
>"root"</SPAN
> user with a
      blank password and an <SPAN
CLASS="QUOTE"
>"anonymous"</SPAN
> user, also with a blank
      password. In order to protect your data, the <SPAN
CLASS="QUOTE"
>"root"</SPAN
> user
      should be given a password and the anonymous user should be disabled.
      </P
><DIV
CLASS="example"
><A
NAME="security-mysql-account-root"
></A
><P
><B
>Example 4-1. Assigning the MySQL <SPAN
CLASS="QUOTE"
>"root"</SPAN
> User a Password</B
></P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="screen"
>&#13;<SAMP
CLASS="prompt"
>bash$</SAMP
> mysql mysql
<SAMP
CLASS="prompt"
>mysql&#62;</SAMP
> UPDATE user SET password = password('<VAR
CLASS="replaceable"
>new_password</VAR
>') WHERE user = 'root';
<SAMP
CLASS="prompt"
>mysql&#62;</SAMP
> FLUSH PRIVILEGES;
        </PRE
></FONT
></TD
></TR
></TABLE
></DIV
><DIV
CLASS="example"
><A
NAME="security-mysql-account-anonymous"
></A
><P
><B
>Example 4-2. Disabling the MySQL <SPAN
CLASS="QUOTE"
>"anonymous"</SPAN
> User</B
></P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="screen"
>&#13;<SAMP
CLASS="prompt"
>bash$</SAMP
> mysql -u root -p mysql           <A
NAME="security-mysql-account-anonymous-mysql"
><IMG
SRC="../images/callouts/1.gif"
HSPACE="0"
VSPACE="0"
BORDER="0"
ALT="(1)"></A
>
<SAMP
CLASS="prompt"
>Enter Password:</SAMP
> <VAR
CLASS="replaceable"
>new_password</VAR
>
<SAMP
CLASS="prompt"
>mysql&#62;</SAMP
> DELETE FROM user WHERE user = '';
<SAMP
CLASS="prompt"
>mysql&#62;</SAMP
> FLUSH PRIVILEGES;
        </PRE
></FONT
></TD
></TR
></TABLE
><DIV
CLASS="calloutlist"
><DL
COMPACT="COMPACT"
><DT
><A
HREF="#security-mysql-account-anonymous-mysql"
><IMG
SRC="../images/callouts/1.gif"
HSPACE="0"
VSPACE="0"
BORDER="0"
ALT="(1)"></A
></DT
><DD
>This command assumes that you have already completed
            <A
HREF="#security-mysql-account-root"
>Example 4-1</A
>.
            </DD
></DL
></DIV
></DIV
></DIV
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="security-mysql-network"
>4.2.3. Network Access</A
></H3
><P
>If MySQL and your webserver both run on the same machine and you
      have no other reason to access MySQL remotely, then you should disable
      the network access. This, along with the suggestion in
      <A
HREF="#security-os-ports"
>Section 4.1.1</A
>, will help protect your system from
      any remote vulnerabilites in MySQL.
      </P
><DIV
CLASS="example"
><A
NAME="security-mysql-network-ex"
></A
><P
><B
>Example 4-3. Disabling Networking in MySQL</B
></P
><P
>Simply enter the following in <TT
CLASS="filename"
>/etc/my.conf</TT
>:
        <TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="screen"
>&#13;[myslqd]
# Prevent network access to MySQL.
skip-networking
        </PRE
></FONT
></TD
></TR
></TABLE
>
        </P
></DIV
></DIV
></DIV
><DIV
CLASS="section"
><HR><H2
CLASS="section"
><A
NAME="security-webserver"
>4.3. Webserver</A
></H2
><DIV
CLASS="section"
><H3
CLASS="section"
><A
NAME="security-webserver-access"
>4.3.1. Disabling Remote Access to Bugzilla Configuration Files</A
></H3
><P
>There are many files that are placed in the Bugzilla directory
      area that should not be accessable from the web. Because of the way
      Bugzilla is currently layed out, the list of what should and should not
      be accessible is rather complicated. A new installation method is
      currently in the works which should solve this by allowing files that
      shouldn't be accessible from the web to be placed in a directory outside
      the webroot. See 
      <A
HREF="http://bugzilla.mozilla.org/show_bug.cgi?id=44659"
TARGET="_top"
>bug 44659</A
>
      for more information.
      </P
><DIV
CLASS="tip"
><P
></P
><TABLE
CLASS="tip"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/tip.gif"
HSPACE="5"
ALT="Tip"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>Bugzilla ships with the ability to create
        <A
HREF="#gloss-htaccess"
><I
CLASS="glossterm"
><TT
CLASS="filename"
>.htaccess</TT
></I
></A
>
        files that enforce these rules. Instructions for enabling these
        directives in Apache can be found in <A
HREF="#http-apache"
>Section 2.2.4.1</A
>
        </P
></TD
></TR
></TABLE
></DIV
><P
></P
><UL
COMPACT="COMPACT"
><LI
><P
>In the main Bugzilla directory, you should:</P
><P
></P
><UL
COMPACT="COMPACT"
><LI
><P
>Block:
              <TT
CLASS="filename"
>*.pl</TT
>, <TT
CLASS="filename"
>*localconfig*</TT
>
              </P
></LI
><LI
><P
>But allow:
              <TT
CLASS="filename"
>localconfig.js</TT
>, <TT
CLASS="filename"
>localconfig.rdf</TT
>
              </P
></LI
></UL
></LI
><LI
><P
>In <TT
CLASS="filename"
>data</TT
>:</P
><P
></P
><UL
COMPACT="COMPACT"
><LI
><P
>Block everything</P
></LI
><LI
><P
>But allow:
              <TT
CLASS="filename"
>duplicates.rdf</TT
>
              </P
></LI
></UL
></LI
><LI
><P
>In <TT
CLASS="filename"
>data/webdot</TT
>:</P
><P
></P
><UL
COMPACT="COMPACT"
><LI
><P
>If you use a remote webdot server:</P
><P
></P
><UL
COMPACT="COMPACT"
><LI
><P
>Block everything</P
></LI
><LI
><P
>But allow
                  <TT
CLASS="filename"
>*.dot</TT
>
                  only for the remote webdot server</P
></LI
></UL
></LI
><LI
><P
>Otherwise, if you use a local GraphViz:</P
><P
></P
><UL
COMPACT="COMPACT"
><LI
><P
>Block everything</P
></LI
><LI
><P
>But allow:
                  <TT
CLASS="filename"
>*.png</TT
>, <TT
CLASS="filename"
>*.gif</TT
>, <TT
CLASS="filename"
>*.jpg</TT
>, <TT
CLASS="filename"
>*.map</TT
>
                  </P
></LI
></UL
></LI
><LI
><P
>And if you don't use any dot:</P
><P
></P
><UL
COMPACT="COMPACT"
><LI
><P
>Block everything</P
></LI
></UL
></LI
></UL
></LI
><LI
><P
>In <TT
CLASS="filename"
>Bugzilla</TT
>:</P
><P
></P
><UL
COMPACT="COMPACT"
><LI
><P
>Block everything</P
></LI
></UL
></LI
><LI
><P
>In <TT
CLASS="filename"
>template</TT
>:</P
><P
></P
><UL
COMPACT="COMPACT"
><LI
><P
>Block everything</P
></LI
></UL
></LI
></UL
><P
>Be sure to test that data that should not be accessed remotely is
      properly blocked. Of particular intrest is the localconfig file which
      contains your database password. Also, be aware that many editors
      create temporary and backup files in the working directory and that
      those should also not be accessable. For more information, see 
      <A
HREF="http://bugzilla.mozilla.org/show_bug.cgi?id=186383"
TARGET="_top"
>bug 186383</A
>
      or
      <A
HREF="http://online.securityfocus.com/bid/6501"
TARGET="_top"
>Bugtraq ID 6501</A
>.
      To test, simply point your web browser at the file; for example, to
      test mozilla.org's installation, we'd try to access
      <A
HREF="http://bugzilla.mozilla.org/localconfig"
TARGET="_top"
>http://bugzilla.mozilla.org/localconfig</A
>. You should get
      a <SPAN
CLASS="QUOTE"
>"<SPAN
CLASS="errorcode"
>403</SPAN
> <SPAN
CLASS="errorname"
>Forbidden</SPAN
>"</SPAN
>
      error.
      </P
><DIV
CLASS="tip"
><P
></P
><TABLE
CLASS="tip"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/tip.gif"
HSPACE="5"
ALT="Tip"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>Be sure to check <A
HREF="#http"
>Section 2.2.4</A
> for instructions
        specific to the webserver you use.
        </P
></TD
></TR
></TABLE
></DIV
></DIV
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="security-webserver-mod-throttle"
>4.3.2. Using <TT
CLASS="filename"
>mod_throttle</TT
> to Prevent a DOS</A
></H3
><DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>This section only applies to people who have chosen the Apache
        webserver. It may be possible to do similar things with other
        webservers. Consult the documentation that came with your webserver
        to find out.
        </P
></TD
></TR
></TABLE
></DIV
><P
>It is possible for a user, by mistake or on purpose, to access
      the database many times in a row which can result in very slow access
      speeds for other users (effectively, a
      <A
HREF="#gloss-dos"
><I
CLASS="glossterm"
>DOS</I
></A
> attack). If your
      Bugzilla installation is experiencing this problem, you may install
      the Apache module <TT
CLASS="filename"
>mod_throttle</TT
> which can limit
      connections by IP address. You may download this module at 
      <A
HREF="http://www.snert.com/Software/mod_throttle/"
TARGET="_top"
>http://www.snert.com/Software/mod_throttle/</A
>.
      Follow the instructions to install into your Apache install. 
      The command you need is 
      <B
CLASS="command"
>ThrottleClientIP</B
>. See the 
      <A
HREF="http://www.snert.com/Software/mod_throttle/"
TARGET="_top"
>documentation</A
>
      for more information.</P
></DIV
></DIV
><DIV
CLASS="section"
><HR><H2
CLASS="section"
><A
NAME="security-bugzilla"
>4.4. Bugzilla</A
></H2
><DIV
CLASS="section"
><H3
CLASS="section"
><A
NAME="security-bugzilla-charset"
>4.4.1. Prevent users injecting malicious Javascript</A
></H3
><P
>It is possible for a Bugzilla user to take advantage of character
      set encoding ambiguities to inject HTML into Bugzilla comments. This
      could include malicious scripts. 
      Due to internationalization concerns, we are unable to
      incorporate by default the code changes suggested by 
      <A
HREF="http://www.cert.org/tech_tips/malicious_code_mitigation.html#3"
TARGET="_top"
>the
      CERT advisory</A
> on this issue.
      Making the change in <A
HREF="#security-bugzilla-charset-ex"
>Example 4-4</A
> will
      prevent this problem. 
      </P
><DIV
CLASS="example"
><A
NAME="security-bugzilla-charset-ex"
></A
><P
><B
>Example 4-4. Forcing Bugzilla to output a charset</B
></P
><P
>Locate the following line in
        <TT
CLASS="filename"
>Bugzilla/CGI.pm</TT
>:
        <TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>$self-&#62;charset('');</PRE
></FONT
></TD
></TR
></TABLE
>
        and change it to:
        <TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>$self-&#62;charset('UTF-8');</PRE
></FONT
></TD
></TR
></TABLE
>
        </P
></DIV
></DIV
></DIV
></DIV
><DIV
CLASS="chapter"
><HR><H1
><A
NAME="customization"
></A
>Chapter 5. Customising Bugzilla</H1
><DIV
CLASS="section"
><H2
CLASS="section"
><A
NAME="cust-templates"
>5.1. Template Customization</A
></H2
><P
>&#13;      Administrators can configure the look and feel of Bugzilla without
      having to edit Perl files or face the nightmare of massive merge
      conflicts when they upgrade to a newer version in the future.
    </P
><P
>&#13;      Templatization also makes localized versions of Bugzilla possible, 
      for the first time. It's possible to have Bugzilla's UI language 
      determined by the user's browser. More information is available in
      <A
HREF="#template-http-accept"
>Section 5.1.6</A
>.
    </P
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="template-directory"
>5.1.1. Template Directory Structure</A
></H3
><P
>&#13;        The template directory structure starts with top level directory 
        named <TT
CLASS="filename"
>template</TT
>, which contains a directory
        for each installed localization. The next level defines the
        language used in the templates. Bugzilla comes with English
        templates, so the directory name is <TT
CLASS="filename"
>en</TT
>,
        and we will discuss <TT
CLASS="filename"
>template/en</TT
> throughout
        the documentation. Below <TT
CLASS="filename"
>template/en</TT
> is the
        <TT
CLASS="filename"
>default</TT
> directory, which contains all the
        standard templates shipped with Bugzilla.
      </P
><DIV
CLASS="warning"
><P
></P
><TABLE
CLASS="warning"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/warning.gif"
HSPACE="5"
ALT="Warning"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;          A directory <TT
CLASS="filename"
>data/templates</TT
> also exists;
          this is where Template Toolkit puts the compiled versions of
          the templates from either the default or custom directories.
          <EM
>Do not</EM
> directly edit the files in this
          directory, or all your changes will be lost the next time
          Template Toolkit recompiles the templates.
        </P
></TD
></TR
></TABLE
></DIV
></DIV
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="template-method"
>5.1.2. Choosing a Customization Method</A
></H3
><P
>&#13;        If you want to edit Bugzilla's templates, the first decision
        you must make is how you want to go about doing so. There are two
        choices, and which you use depends mainly on the scope of your 
        modifications, and the method you plan to use to upgrade Bugzilla.
      </P
><P
>&#13;        The first method of making customizations is to directly edit the
        templates found in <TT
CLASS="filename"
>template/en/default</TT
>.
        This is probably the best way to go about it if you are going to
        be upgrading Bugzilla through CVS, because if you then execute
        a <B
CLASS="command"
>cvs update</B
>, any changes you have made will
        be merged automagically with the updated versions.
      </P
><DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;          If you use this method, and CVS conflicts occur during an
          update, the conflicted templates (and possibly other parts
          of your installation) will not work until they are resolved.
        </P
></TD
></TR
></TABLE
></DIV
><P
>&#13;        The second method is to copy the templates to be modified
        into a mirrored directory structure under 
        <TT
CLASS="filename"
>template/en/custom</TT
>. Templates in this
        directory structure automatically override any identically-named
        and identically-located templates in the 
        <TT
CLASS="filename"
>default</TT
> directory. 
      </P
><DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;          The <TT
CLASS="filename"
>custom</TT
> directory does not exist
          at first and must be created if you want to use it.
        </P
></TD
></TR
></TABLE
></DIV
><P
>&#13;        The second method of customization should be used if you 
        use the overwriting method of upgrade, because otherwise 
        your changes will be lost.  This method may also be better if
        you are using the CVS method of upgrading and are going to make major
        changes, because it is guaranteed that the contents of this directory
        will not be touched during an upgrade, and you can then decide whether
        to continue using your own templates, or make the effort to merge your
        changes into the new versions by hand.
      </P
><P
>&#13;        Using this method, your installation may break if incompatible
        changes are made to the template interface.  Such changes should
        be documented in the release notes, provided you are using a
        stable release of Bugzilla.  If you use using unstable code, you will
        need to deal with this one yourself, although if possible the changes
        will be mentioned before they occur in the deprecations section of the
        previous stable release's release notes.
      </P
><DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;          Regardless of which method you choose, it is recommended that
          you run <B
CLASS="command"
>./checksetup.pl</B
> after creating or
          editing any templates in the <TT
CLASS="filename"
>template/en/default</TT
>
          directory, and after editing any templates in the 
          <TT
CLASS="filename"
>custom</TT
> directory.
        </P
></TD
></TR
></TABLE
></DIV
><DIV
CLASS="warning"
><P
></P
><TABLE
CLASS="warning"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/warning.gif"
HSPACE="5"
ALT="Warning"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;          It is <EM
>required</EM
> that you run 
          <B
CLASS="command"
>./checksetup.pl</B
> after creating a new
          template in the <TT
CLASS="filename"
>custom</TT
> directory. Failure
          to do so will raise an incomprehensible error message.
        </P
></TD
></TR
></TABLE
></DIV
></DIV
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="template-edit"
>5.1.3. How To Edit Templates</A
></H3
><DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;          If you are making template changes that you intend on submitting back
          for inclusion in standard Bugzilla, you should read the relevant
          sections of the 
          <A
HREF="http://www.bugzilla.org/docs/developer.html"
TARGET="_top"
>Developers'
          Guide</A
>.
        </P
></TD
></TR
></TABLE
></DIV
><P
>&#13;        The syntax of the Template Toolkit language is beyond the scope of
        this guide. It's reasonably easy to pick up by looking at the current 
        templates; or, you can read the manual, available on the
        <A
HREF="http://www.template-toolkit.org"
TARGET="_top"
>Template Toolkit home
        page</A
>.
      </P
><P
>&#13;        One thing you should take particular care about is the need
        to properly HTML filter data that has been passed into the template.
        This means that if the data can possibly contain special HTML characters
        such as &#60;, and the data was not intended to be HTML, they need to be
        converted to entity form, i.e. &#38;lt;.  You use the 'html' filter in the
        Template Toolkit to do this.  If you forget, you may open up
        your installation to cross-site scripting attacks.
      </P
><P
>&#13;        Also note that Bugzilla adds a few filters of its own, that are not
        in standard Template Toolkit.  In particular, the 'url_quote' filter
        can convert characters that are illegal or have special meaning in URLs,
        such as &#38;, to the encoded form, i.e. %26.  This actually encodes most
        characters (but not the common ones such as letters and numbers and so
        on), including the HTML-special characters, so there's never a need to
        HTML filter afterwards.
      </P
><P
>&#13;        Editing templates is a good way of doing a <SPAN
CLASS="QUOTE"
>"poor man's custom
        fields"</SPAN
>.
        For example, if you don't use the Status Whiteboard, but want to have
        a free-form text entry box for <SPAN
CLASS="QUOTE"
>"Build Identifier"</SPAN
>,
        then you can just
        edit the templates to change the field labels. It's still be called
        status_whiteboard internally, but your users don't need to know that.
      </P
></DIV
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="template-formats"
>5.1.4. Template Formats and Types</A
></H3
><P
>&#13;        Some CGI's have the ability to use more than one template. For example,
        <TT
CLASS="filename"
>buglist.cgi</TT
> can output itself as RDF, or as two 
        formats of HTML (complex and simple). The mechanism that provides this 
        feature is extensible.
      </P
><P
>&#13;        Bugzilla can support different types of output, which again can have 
        multiple formats. In order to request a certain type, you can append 
        the &#38;ctype=&#60;contenttype&#62; (such as rdf or html) to the 
        <TT
CLASS="filename"
>&#60;cginame&#62;.cgi</TT
> URL. If you would like to 
        retrieve a certain format, you can use the &#38;format=&#60;format&#62; 
        (such as simple or complex) in the URL.
      </P
><P
>&#13;        To see if a CGI supports multiple output formats and types, grep the
        CGI for <SPAN
CLASS="QUOTE"
>"GetFormat"</SPAN
>. If it's not present, adding
        multiple format/type support isn't too hard - see how it's done in
        other CGIs, e.g. config.cgi.
      </P
><P
>&#13;        To make a new format template for a CGI which supports this, 
        open a current template for
        that CGI and take note of the INTERFACE comment (if present.) This 
        comment defines what variables are passed into this template. If 
        there isn't one, I'm afraid you'll have to read the template and
        the code to find out what information you get. 
      </P
><P
>&#13;        Write your template in whatever markup or text style is appropriate.
      </P
><P
>&#13;        You now need to decide what content type you want your template
        served as. The content types are defined in the
        <TT
CLASS="filename"
>Bugzilla/Constants.pm</TT
> file in the 
        <TT
CLASS="filename"
>contenttypes</TT
>
        constant. If your content type is not there, add it. Remember
        the three- or four-letter tag assigned to your content type. 
        This tag will be part of the template filename.
      </P
><DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;          After adding or changing a content type, it's suitable to edit
          <TT
CLASS="filename"
>Bugzilla/Constants.pm</TT
> in order to reflect
          the changes. Also, the file should be kept up to date after an
          upgrade if content types have been customized in the past. 
        </P
></TD
></TR
></TABLE
></DIV
><P
>&#13;        Save the template as <TT
CLASS="filename"
>&#60;stubname&#62;-&#60;formatname&#62;.&#60;contenttypetag&#62;.tmpl</TT
>. 
        Try out the template by calling the CGI as 
        <TT
CLASS="filename"
>&#60;cginame&#62;.cgi?format=&#60;formatname&#62;&#38;ctype=&#60;type&#62;</TT
> .
      </P
></DIV
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="template-specific"
>5.1.5. Particular Templates</A
></H3
><P
>&#13;        There are a few templates you may be particularly interested in
        customizing for your installation.
      </P
><P
>&#13;        <B
CLASS="command"
>index.html.tmpl</B
>:
        This is the Bugzilla front page.
      </P
><P
>&#13;        <B
CLASS="command"
>global/header.html.tmpl</B
>:
        This defines the header that goes on all Bugzilla pages.
        The header includes the banner, which is what appears to users
        and is probably what you want to edit instead.  However the
        header also includes the HTML HEAD section, so you could for
        example add a stylesheet or META tag by editing the header.
      </P
><P
>&#13;        <B
CLASS="command"
>global/banner.html.tmpl</B
>:
        This contains the <SPAN
CLASS="QUOTE"
>"banner"</SPAN
>, the part of the header
        that appears
        at the top of all Bugzilla pages.  The default banner is reasonably
        barren, so you'll probably want to customize this to give your
        installation a distinctive look and feel.  It is recommended you
        preserve the Bugzilla version number in some form so the version 
        you are running can be determined, and users know what docs to read.
      </P
><P
>&#13;        <B
CLASS="command"
>global/footer.html.tmpl</B
>:
        This defines the footer that goes on all Bugzilla pages.  Editing
        this is another way to quickly get a distinctive look and feel for
        your Bugzilla installation.
      </P
><P
>&#13;        <B
CLASS="command"
>global/variables.none.tmpl</B
>:
        This defines a list of terms that may be changed in order to
        <SPAN
CLASS="QUOTE"
>"brand"</SPAN
> the Bugzilla instance In this way, terms
        like <SPAN
CLASS="QUOTE"
>"bugs"</SPAN
> can be replaced with <SPAN
CLASS="QUOTE"
>"issues"</SPAN
>
        across the whole Bugzilla installation. The name
        <SPAN
CLASS="QUOTE"
>"Bugzilla"</SPAN
> and other words can be customized as well.
      </P
><P
>&#13;        <B
CLASS="command"
>list/table.html.tmpl</B
>:
        This template controls the appearance of the bug lists created
        by Bugzilla. Editing this template allows per-column control of 
        the width and title of a column, the maximum display length of
        each entry, and the wrap behaviour of long entries.
        For long bug lists, Bugzilla inserts a 'break' every 100 bugs by
        default; this behaviour is also controlled by this template, and
        that value can be modified here.
       </P
><P
>&#13;        <B
CLASS="command"
>bug/create/user-message.html.tmpl</B
>:
        This is a message that appears near the top of the bug reporting page.
        By modifying this, you can tell your users how they should report
        bugs.
      </P
><P
>&#13;        <B
CLASS="command"
>bug/process/midair.html.tmpl</B
>:
        This is the page used if two people submit simultaneous changes to the
        same bug.  The second person to submit their changes will get this page
        to tell them what the first person did, and ask if they wish to
        overwrite those changes or go back and revisit the bug.  The default
        title and header on this page read "Mid-air collision detected!"  If
        you work in the aviation industry, or other environment where this
        might be found offensive (yes, we have true stories of this happening)
        you'll want to change this to something more appropriate for your
        environment.
      </P
><P
>&#13;        <B
CLASS="command"
>bug/create/create.html.tmpl</B
> and
        <B
CLASS="command"
>bug/create/comment.txt.tmpl</B
>:
        You may not wish to go to the effort of creating custom fields in
        Bugzilla, yet you want to make sure that each bug report contains
        a number of pieces of important information for which there is not
        a special field. The bug entry system has been designed in an
        extensible fashion to enable you to add arbitrary HTML widgets,
        such as drop-down lists or textboxes, to the bug entry page
        and have their values appear formatted in the initial comment.
        A hidden field that indicates the format should be added inside
        the form in order to make the template functional. Its value should
        be the suffix of the template filename. For example, if the file
        is called <TT
CLASS="filename"
>create-cust.html.tmpl</TT
>, then
        <TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#60;input type="hidden" name="format" value="cust"&#62;</PRE
></FONT
></TD
></TR
></TABLE
>
        should be used inside the form.
      </P
><P
>  
        An example of this is the mozilla.org 
        <A
HREF="http://landfill.bugzilla.org/bugzilla-tip/enter_bug.cgi?product=WorldControl&#38;format=guided"
TARGET="_top"
>guided 
        bug submission form</A
>. The code for this comes with the Bugzilla
        distribution as an example for you to copy. It can be found in the
        files 
        <TT
CLASS="filename"
>create-guided.html.tmpl</TT
> and
        <TT
CLASS="filename"
>comment-guided.html.tmpl</TT
>.
      </P
><P
>&#13;        So to use this feature, create a custom template for 
        <TT
CLASS="filename"
>enter_bug.cgi</TT
>. The default template, on which you
        could base it, is 
        <TT
CLASS="filename"
>custom/bug/create/create.html.tmpl</TT
>.
        Call it <TT
CLASS="filename"
>create-&#60;formatname&#62;.html.tmpl</TT
>, and
        in it, add widgets for each piece of information you'd like
        collected - such as a build number, or set of steps to reproduce.
      </P
><P
>&#13;        Then, create a template like 
        <TT
CLASS="filename"
>custom/bug/create/comment.txt.tmpl</TT
>, and call it 
        <TT
CLASS="filename"
>comment-&#60;formatname&#62;.txt.tmpl</TT
>. This 
        template should reference the form fields you have created using
        the syntax <TT
CLASS="filename"
>[% form.&#60;fieldname&#62; %]</TT
>. When a 
        bug report is
        submitted, the initial comment attached to the bug report will be
        formatted according to the layout of this template.
      </P
><P
>&#13;        For example, if your custom enter_bug template had a field
        <TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#60;input type="text" name="buildid" size="30"&#62;</PRE
></FONT
></TD
></TR
></TABLE
>
        and then your comment.txt.tmpl had
        <TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>BuildID: [% form.buildid %]</PRE
></FONT
></TD
></TR
></TABLE
>
        then something like
        <TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>BuildID: 20020303</PRE
></FONT
></TD
></TR
></TABLE
>
        would appear in the initial comment.
      </P
></DIV
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="template-http-accept"
>5.1.6. Configuring Bugzilla to Detect the User's Language</A
></H3
><P
>Bugzilla honours the user's Accept: HTTP header. You can install
      templates in other languages, and Bugzilla will pick the most appropriate
      according to a priority order defined by you. Many
      language templates can be obtained from <A
HREF="http://www.bugzilla.org/download.html#localizations"
TARGET="_top"
>http://www.bugzilla.org/download.html#localizations</A
>. Instructions
      for submitting new languages are also available from that location.
      </P
><P
>After untarring the localizations (or creating your own) in the 
      <TT
CLASS="filename"
>BUGZILLA_ROOT/template</TT
> directory,
      you must update the <VAR
CLASS="option"
>languages</VAR
> parameter to contain any
      localizations you'd like to permit. You may also wish to set the
      <VAR
CLASS="option"
>defaultlanguage</VAR
> parameter to something other than
      <SPAN
CLASS="QUOTE"
>"en"</SPAN
> if you don't want Engish to be the default language.
      </P
></DIV
></DIV
><DIV
CLASS="section"
><HR><H2
CLASS="section"
><A
NAME="cust-hooks"
>5.2. Template Hooks</A
></H2
><DIV
CLASS="warning"
><P
></P
><TABLE
CLASS="warning"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/warning.gif"
HSPACE="5"
ALT="Warning"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;        Template Hooks require Template Toolkit version 2.12 or
        above, or the application of a patch.  See <A
HREF="http://bugzilla.mozilla.org/show_bug.cgi?id=239112"
TARGET="_top"
>bug
        239112</A
> for details.
      </P
></TD
></TR
></TABLE
></DIV
><P
>&#13;      Template hooks are a way for extensions to Bugzilla to insert code
      into the standard Bugzilla templates without modifying the template files
      themselves.  The hooks mechanism defines a consistent API for extending
      the standard templates in a way that cleanly separates standard code
      from extension code.  Hooks reduce merge conflicts and make it easier
      to write extensions that work across multiple versions of Bugzilla,
      making upgrading a Bugzilla installation with installed extensions easier.
    </P
><P
>&#13;      A template hook is just a named place in a standard template file
      where extension template files for that hook get processed.  Each hook
      has a corresponding directory in the Bugzilla directory tree.  Hooking an
      extension template to a hook is as simple as putting the extension file
      into the hook's directory.  When Bugzilla processes the standard template
      and reaches the hook, it will process all extension templates in the
      hook's directory. The hooks themselves can be added into any standard
      template upon request by extension authors.
    </P
><P
>&#13;      To use hooks to extend a Bugzilla template, first make sure there is
      a hook at the appropriate place within the template you want to extend. 
      Hooks appear in the standard Bugzilla templates as a single directive
      in the format
      <VAR
CLASS="literal"
>[% Hook.process("<VAR
CLASS="varname"
>name</VAR
>") %]</VAR
>,
      where <VAR
CLASS="varname"
>name</VAR
> is the unique (within that template)
      name of the hook.
    </P
><P
>&#13;      If you aren't sure which template you want to extend or just want
      to browse the available hooks, either use your favorite multi-file search
      tool (e.g. <B
CLASS="command"
>grep</B
>) to search the standard templates
      for occurrences of <CODE
CLASS="methodname"
>Hook.process</CODE
> or browse
      the directory tree in
      <TT
CLASS="filename"
>BUGZILLA_ROOT/template/en/extension/hook/</TT
>,
      which contains a directory for each hook in the following location:
    </P
><P
>&#13;      <TT
CLASS="filename"
>BUGZILLA_ROOT/template/en/extension/hook/PATH_TO_STANDARD_TEMPLATE/STANDARD_TEMPLATE_NAME/HOOK_NAME/</TT
>
    </P
><P
>&#13;      If there is no hook at the appropriate place within the Bugzilla template
      you want to extend,
      <A
HREF="http://bugzilla.mozilla.org/enter_bug.cgi?product=Bugzilla&#38;component=User%20Interface"
TARGET="_top"
>file
      a bug requesting one</A
>, specifying:
    </P
><P
></P
><TABLE
BORDER="0"
><TBODY
><TR
><TD
>the template for which you are requesting a hook;</TD
></TR
><TR
><TD
>&#13;        where in the template you would like the hook to be placed
        (line number/position for latest version of template in CVS
        or description of location);
      </TD
></TR
><TR
><TD
>the purpose of the hook;</TD
></TR
><TR
><TD
>a link to information about your extension, if any.</TD
></TR
></TBODY
></TABLE
><P
></P
><P
>&#13;      The Bugzilla reviewers will promptly review each hook request,
      name the hook, add it to the template, check the new version
      of the template into CVS, and create the corresponding directory in
      <TT
CLASS="filename"
>BUGZILLA_ROOT/template/en/extension/hook/</TT
>.
    </P
><P
>&#13;      You may optionally attach a patch to the bug which implements the hook
      and check it in yourself after receiving approval from a Bugzilla
      reviewer.  The developers may suggest changes to the location of the
      hook based on their analysis of your needs or so the hook can satisfy
      the needs of multiple extensions, but the process of getting hooks
      approved and checked in is not as stringent as the process for general
      changes to Bugzilla, and any extension, whether released or still in
      development, can have hooks added to meet their needs.
    </P
><P
>&#13;      After making sure the hook you need exists (or getting it added if not),
      add your extension template to the directory within the Bugzilla
      directory tree corresponding to the hook. 
    </P
><P
>&#13;      That's it!  Now, when the standard template containing the hook
      is processed, your extension template will be processed at the point 
      where the hook appears.
    </P
><P
>&#13;      For example, let's say you have an extension named Projman that adds
      project management capabilities to Bugzilla.  Projman has an
      administration interface <TT
CLASS="filename"
>edit-projects.cgi</TT
>, 
      and you want to add a link to it into the navigation bar at the bottom
      of every Bugzilla page for those users who are authorized
      to administer projects.
    </P
><P
>&#13;      The navigation bar is generated by the template file
      <TT
CLASS="filename"
>useful-links.html.tmpl</TT
>, which is located in
      the <TT
CLASS="filename"
>global/</TT
> subdirectory on the standard Bugzilla 
      template path
      <TT
CLASS="filename"
>BUGZILLA_ROOT/template/en/default/</TT
>.
      Looking in <TT
CLASS="filename"
>useful-links.html.tmpl</TT
>, you find
      the following hook at the end of the list of standard Bugzilla
      administration links:
    </P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>...
    [% ', &#60;a href="editkeywords.cgi"&#62;keywords&#60;/a&#62;' 
                                              IF user.groups.editkeywords %]
    [% Hook.process("edit") %]
...</PRE
></FONT
></TD
></TR
></TABLE
><P
>&#13;      The corresponding directory for this hook is
      <TT
CLASS="filename"
>BUGZILLA_ROOT/template/en/extension/hook/global/useful-links.html.tmpl/edit/</TT
>.
    </P
><P
>&#13;      You put a template named
      <TT
CLASS="filename"
>projman-edit-projects.html.tmpl</TT
>
      into that directory with the following content:
    </P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>...[% ', &#60;a href="edit-projects.cgi"&#62;projects&#60;/a&#62;' IF user.groups.projman_admins %]</PRE
></FONT
></TD
></TR
></TABLE
><P
>&#13;      Voila!  The link now appears after the other administration links in the
      navigation bar for users in the <VAR
CLASS="literal"
>projman_admins</VAR
> group.
    </P
><P
>&#13;      Notes:
    </P
><P
></P
><UL
><LI
><P
>&#13;          You may want to prefix your extension template names
          with the name of your extension, e.g. 
          <TT
CLASS="filename"
>projman-foo.html.tmpl</TT
>, 
          so they do not conflict with the names of templates installed by
          other extensions.
        </P
></LI
><LI
><P
>&#13;          If your extension includes entirely new templates in addition to
          extensions of standard templates, it should install those new
          templates into an extension-specific subdirectory of the
          <TT
CLASS="filename"
>BUGZILLA_ROOT/template/en/extension/</TT
> 
          directory.  The <TT
CLASS="filename"
>extension/</TT
> directory, like the 
          <TT
CLASS="filename"
>default/</TT
> and <TT
CLASS="filename"
>custom/</TT
>
          directories, is part of the template search path, so putting templates
          there enables them to be found by the template processor.
        </P
><P
>&#13;          The template processor looks for templates first in the
          <TT
CLASS="filename"
>custom/</TT
> directory (i.e. templates added by the 
          specific installation), then in the <TT
CLASS="filename"
>extension/</TT
> 
          directory (i.e. templates added by extensions), and finally in the
          <TT
CLASS="filename"
>default/</TT
> directory (i.e. the standard Bugzilla 
          templates).  Thus extension templates can override standard templates,
          but installation-specific templates override both.
        </P
><P
>&#13;          Note that overriding standard templates with extension templates
          gives you great power but also makes upgrading an installation harder.
          As with custom templates,  we recommend using this functionality
          sparingly and only when absolutely necessary.
        </P
></LI
><LI
><P
>&#13;          Installation customizers can also take advantage of hooks when adding
          code to a Bugzilla template.  To do so, create directories in
          <TT
CLASS="filename"
>BUGZILLA_ROOT/template/en/custom/hook/</TT
>
          equivalent to the directories in
          <TT
CLASS="filename"
>BUGZILLA_ROOT/template/en/extension/hook/</TT
>          
          for the hooks you want to use, then place your customization templates
          into those directories.
        </P
><P
>&#13;          Obviously this method of customizing Bugzilla only lets you add code
          to the standard templates; you cannot change the existing code.
          Nevertheless, for those customizations that only add code, this method
          can reduce conflicts when merging changes, making upgrading
          your customized Bugzilla installation easier.
        </P
></LI
></UL
></DIV
><DIV
CLASS="section"
><HR><H2
CLASS="section"
><A
NAME="cust-change-permissions"
>5.3. Customizing Who Can Change What</A
></H2
><DIV
CLASS="warning"
><P
></P
><TABLE
CLASS="warning"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/warning.gif"
HSPACE="5"
ALT="Warning"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;        This feature should be considered experimental; the Bugzilla code you
        will be changing is not stable, and could change or move between 
        versions. Be aware that if you make modifications as outlined here, 
        you may have
        to re-make them or port them if Bugzilla changes internally between
        versions, and you upgrade.
      </P
></TD
></TR
></TABLE
></DIV
><P
>&#13;      Companies often have rules about which employees, or classes of employees,
      are allowed to change certain things in the bug system. For example, 
      only the bug's designated QA Contact may be allowed to VERIFY the bug.
      Bugzilla has been
      designed to make it easy for you to write your own custom rules to define
      who is allowed to make what sorts of value transition.
    </P
><P
>&#13;      For maximum flexibility, customizing this means editing Bugzilla's Perl 
      code. This gives the administrator complete control over exactly who is
      allowed to do what. The relevant function is called 
      <TT
CLASS="filename"
>CheckCanChangeField()</TT
>,
      and is found in <TT
CLASS="filename"
>process_bug.cgi</TT
> in your 
      Bugzilla directory. If you open that file and search for 
      <SPAN
CLASS="QUOTE"
>"sub CheckCanChangeField"</SPAN
>, you'll find it.
    </P
><P
>&#13;      This function has been carefully commented to allow you to see exactly
      how it works, and give you an idea of how to make changes to it.
      Certain marked sections should not be changed - these are
      the <SPAN
CLASS="QUOTE"
>"plumbing"</SPAN
> which makes the rest of the function work.
      In between those sections, you'll find snippets of code like:
      <TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>    # Allow the assignee to change anything.
    if ($ownerid eq $whoid) {
        return 1;
    }</PRE
></FONT
></TD
></TR
></TABLE
>
      It's fairly obvious what this piece of code does.
    </P
><P
>&#13;      So, how does one go about changing this function? Well, simple changes
      can be made just by removing pieces - for example, if you wanted to 
      prevent any user adding a comment to a bug, just remove the lines marked
      <SPAN
CLASS="QUOTE"
>"Allow anyone to change comments."</SPAN
> If you don't want the
      Reporter to have any special rights on bugs they have filed, just
      remove the entire section that deals with the Reporter.
    </P
><P
>&#13;      More complex customizations are not much harder. Basically, you add
      a check in the right place in the function, i.e. after all the variables
      you are using have been set up. So, don't look at $ownerid before 
      $ownerid has been obtained from the database. You can either add a
      positive check, which returns 1 (allow) if certain conditions are true,
      or a negative check, which returns 0 (deny.) E.g.:
      <TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>    if ($field eq "qacontact") {
        if (Bugzilla-&#62;user-&#62;groups("quality_assurance")) {
            return 1;
        } 
        else {
            return 0;
        }
    }</PRE
></FONT
></TD
></TR
></TABLE
>
      This says that only users in the group "quality_assurance" can change
      the QA Contact field of a bug.
    </P
><P
>&#13;      Getting more weird:
      <TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>    if (($field eq "priority") &#38;&#38;
        (Bugzilla-&#62;user-&#62;email =~ /.*\@example\.com$/))
    {
        if ($oldvalue eq "P1") {
            return 1;
        } 
        else {
            return 0;
        }
    }</PRE
></FONT
></TD
></TR
></TABLE
>
      This says that if the user is trying to change the priority field,
      and their email address is @example.com, they can only do so if the
      old value of the field was "P1". Not very useful, but illustrative.
    </P
><DIV
CLASS="warning"
><P
></P
><TABLE
CLASS="warning"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/warning.gif"
HSPACE="5"
ALT="Warning"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;        If you are modifying <TT
CLASS="filename"
>process_bug.cgi</TT
> in any
        way, do not change the code that is bounded by DO_NOT_CHANGE blocks.
        Doing so could compromise security, or cause your installation to
        stop working entirely.
      </P
></TD
></TR
></TABLE
></DIV
><P
>&#13;      For a list of possible field names, look in 
      <TT
CLASS="filename"
>data/versioncache</TT
> for the list called 
      <TT
CLASS="filename"
>@::log_columns</TT
>. If you need help writing custom
      rules for your organization, ask in the newsgroup.
    </P
></DIV
><DIV
CLASS="section"
><HR><H2
CLASS="section"
><A
NAME="dbmodify"
>5.4. Modifying Your Running System</A
></H2
><P
>&#13;        Bugzilla optimizes database lookups by storing all relatively
        static information in the <TT
CLASS="filename"
>versioncache</TT
>
        file, located in the <TT
CLASS="filename"
>data/</TT
>
        subdirectory under your installation directory.
      </P
><P
>&#13;        If you make a change to the structural data in your database (the
        versions table for example), or to the <SPAN
CLASS="QUOTE"
>"constants"</SPAN
>
        encoded in <TT
CLASS="filename"
>defparams.pl</TT
>, you will need to remove 
        the cached content from the data directory (by doing a 
        <B
CLASS="command"
>rm data/versioncache</B
>), or your changes won't show up.
      </P
><P
>&#13;        <TT
CLASS="filename"
>versioncache</TT
> gets regenerated automatically
        whenever it's more than an hour old, so Bugzilla will eventually
        notice your changes by itself, but generally you want it to notice
        right away, so that you can test things.
      </P
></DIV
><DIV
CLASS="section"
><HR><H2
CLASS="section"
><A
NAME="dbdoc"
>5.5. MySQL Bugzilla Database Introduction</A
></H2
><P
>This information comes straight from my life. I was forced to learn
    how Bugzilla organizes database because of nitpicky requests from users
    for tiny changes in wording, rather than having people re-educate
    themselves or figure out how to work our procedures around the tool. It
    sucks, but it can and will happen to you, so learn how the schema works
    and deal with it when it comes.</P
><P
>So, here you are with your brand-new installation of Bugzilla.
    You've got MySQL set up, Apache working right, Perl DBI and DBD talking
    to the database flawlessly. Maybe you've even entered a few test bugs to
    make sure email's working; people seem to be notified of new bugs and
    changes, and you can enter and edit bugs to your heart's content. Perhaps
    you've gone through the trouble of setting up a gateway for people to
    submit bugs to your database via email, have had a few people test it,
    and received rave reviews from your beta testers.</P
><P
>What's the next thing you do? Outline a training strategy for your
    development team, of course, and bring them up to speed on the new tool
    you've labored over for hours.</P
><P
>Your first training session starts off very well! You have a
    captive audience which seems enraptured by the efficiency embodied in
    this thing called "Bugzilla". You are caught up describing the nifty
    features, how people can save favorite queries in the database, set them
    up as headers and footers on their pages, customize their layouts,
    generate reports, track status with greater efficiency than ever before,
    leap tall buildings with a single bound and rescue Jane from the clutches
    of Certain Death!</P
><P
>But Certain Death speaks up -- a tiny voice, from the dark corners
    of the conference room. "I have a concern," the voice hisses from the
    darkness, "about the use of the word 'verified'."</P
><P
>The room, previously filled with happy chatter, lapses into
    reverential silence as Certain Death (better known as the Vice President
    of Software Engineering) continues. "You see, for two years we've used
    the word 'verified' to indicate that a developer or quality assurance
    engineer has confirmed that, in fact, a bug is valid. I don't want to
    lose two years of training to a new software product. You need to change
    the bug status of 'verified' to 'approved' as soon as possible. To avoid
    confusion, of course."</P
><P
>Oh no! Terror strikes your heart, as you find yourself mumbling
    "yes, yes, I don't think that would be a problem," You review the changes
    with Certain Death, and continue to jabber on, "no, it's not too big a
    change. I mean, we have the source code, right? You know, 'Use the
    Source, Luke' and all that... no problem," All the while you quiver
    inside like a beached jellyfish bubbling, burbling, and boiling on a hot
    Jamaican sand dune...</P
><P
>Thus begins your adventure into the heart of Bugzilla. You've been
    forced to learn about non-portable enum() fields, varchar columns, and
    tinyint definitions. The Adventure Awaits You!</P
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="AEN2062"
>5.5.1. Bugzilla Database Basics</A
></H3
><P
>If you were like me, at this point you're totally clueless about
      the internals of MySQL, and if it weren't for this executive order from
      the Vice President you couldn't care less about the difference between
      a 
      <SPAN
CLASS="QUOTE"
>"bigint"</SPAN
>

      and a 
      <SPAN
CLASS="QUOTE"
>"tinyint"</SPAN
>

      entry in MySQL. I recommend you refer to the
      <A
HREF="http://www.mysql.com/documentation/"
TARGET="_top"
>MySQL documentation</A
>
      . Below are the basics you need to know about the Bugzilla database.
      Check the chart above for more details.</P
><P
>&#13;        <P
></P
><OL
TYPE="1"
><LI
><P
>To connect to your database:</P
><P
>&#13;              <SAMP
CLASS="prompt"
>bash#</SAMP
>

              <B
CLASS="command"
>mysql</B
>

              <VAR
CLASS="parameter"
>-u root</VAR
>
            </P
><P
>If this works without asking you for a password, 
            <EM
>shame on you</EM
>

            ! You should have locked your security down like the installation
            instructions told you to. You can find details on locking down
            your database in the Bugzilla FAQ in this directory (under
            "Security"), or more robust security generalities in the 
            <A
HREF="http://www.mysql.com/php/manual.php3?section=Privilege_system"
TARGET="_top"
>MySQL
            searchable documentation</A
>.
            </P
></LI
><LI
><P
>You should now be at a prompt that looks like this:</P
><P
>&#13;              <SAMP
CLASS="prompt"
>mysql&#62;</SAMP
>
            </P
><P
>At the prompt, if 
            <SPAN
CLASS="QUOTE"
>"bugs"</SPAN
>

            is the name you chose in the
            <TT
CLASS="filename"
>localconfig</TT
>

            file for your Bugzilla database, type:</P
><P
>&#13;              <SAMP
CLASS="prompt"
>mysql</SAMP
>

              <B
CLASS="command"
>use bugs;</B
>
            </P
></LI
></OL
>
      </P
><DIV
CLASS="section"
><HR><H4
CLASS="section"
><A
NAME="AEN2089"
>5.5.1.1. Bugzilla Database Tables</A
></H4
><P
>Imagine your MySQL database as a series of spreadsheets, and
        you won't be too far off. If you use this command:</P
><P
>&#13;          <SAMP
CLASS="prompt"
>mysql&#62;</SAMP
>
          <B
CLASS="command"
>show tables from bugs;</B
>
        </P
><P
>you'll be able to see the names of all the 
        <SPAN
CLASS="QUOTE"
>"spreadsheets"</SPAN
>
        (tables) in your database.</P
><P
>From the command issued above, ou should have some
	  output that looks like this:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;+-------------------+
| Tables in bugs    |
+-------------------+
| attachments       |
| bugs              |
| bugs_activity     |
| cc                |
| components        |
| dependencies      |
| fielddefs         |
| groups            |
| keyworddefs       |
| keywords          |
| logincookies      |
| longdescs         |
| milestones        |
| namedqueries      |
| products          |
| profiles          |
| profiles_activity |
| tokens            |
| versions          |
| votes             |
| watch             |
+-------------------+
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
CLASS="literallayout"
><br>
&nbsp;&nbsp;Here's&nbsp;an&nbsp;overview&nbsp;of&nbsp;what&nbsp;each&nbsp;table&nbsp;does.&nbsp;Most&nbsp;columns&nbsp;in&nbsp;each&nbsp;table&nbsp;have<br>
descriptive&nbsp;names&nbsp;that&nbsp;make&nbsp;it&nbsp;fairly&nbsp;trivial&nbsp;to&nbsp;figure&nbsp;out&nbsp;their&nbsp;jobs.<br>
<br>
attachments:&nbsp;This&nbsp;table&nbsp;stores&nbsp;all&nbsp;attachments&nbsp;to&nbsp;bugs.&nbsp;It&nbsp;tends&nbsp;to&nbsp;be&nbsp;your<br>
largest&nbsp;table,&nbsp;yet&nbsp;also&nbsp;generally&nbsp;has&nbsp;the&nbsp;fewest&nbsp;entries&nbsp;because&nbsp;file<br>
attachments&nbsp;are&nbsp;so&nbsp;(relatively)&nbsp;large.<br>
<br>
bugs:&nbsp;&nbsp;This&nbsp;is&nbsp;the&nbsp;core&nbsp;of&nbsp;your&nbsp;system.&nbsp;The&nbsp;bugs&nbsp;table&nbsp;stores&nbsp;most&nbsp;of&nbsp;the<br>
current&nbsp;information&nbsp;about&nbsp;a&nbsp;bug,&nbsp;with&nbsp;the&nbsp;exception&nbsp;of&nbsp;the&nbsp;info&nbsp;stored&nbsp;in&nbsp;the<br>
other&nbsp;tables.<br>
<br>
bugs_activity:&nbsp;&nbsp;This&nbsp;stores&nbsp;information&nbsp;regarding&nbsp;what&nbsp;changes&nbsp;are&nbsp;made&nbsp;to&nbsp;bugs<br>
when&nbsp;--&nbsp;a&nbsp;history&nbsp;file.<br>
<br>
cc:&nbsp;&nbsp;This&nbsp;tiny&nbsp;table&nbsp;simply&nbsp;stores&nbsp;all&nbsp;the&nbsp;CC&nbsp;information&nbsp;for&nbsp;any&nbsp;bug&nbsp;which&nbsp;has<br>
any&nbsp;entries&nbsp;in&nbsp;the&nbsp;CC&nbsp;field&nbsp;of&nbsp;the&nbsp;bug.&nbsp;Note&nbsp;that,&nbsp;like&nbsp;most&nbsp;other&nbsp;tables&nbsp;in<br>
Bugzilla,&nbsp;it&nbsp;does&nbsp;not&nbsp;refer&nbsp;to&nbsp;users&nbsp;by&nbsp;their&nbsp;user&nbsp;names,&nbsp;but&nbsp;by&nbsp;their&nbsp;unique<br>
userid,&nbsp;stored&nbsp;as&nbsp;a&nbsp;primary&nbsp;key&nbsp;in&nbsp;the&nbsp;profiles&nbsp;table.<br>
<br>
components:&nbsp;This&nbsp;stores&nbsp;the&nbsp;programs&nbsp;and&nbsp;components&nbsp;(or&nbsp;products&nbsp;and<br>
components,&nbsp;in&nbsp;newer&nbsp;Bugzilla&nbsp;parlance)&nbsp;for&nbsp;Bugzilla.&nbsp;Curiously,&nbsp;the&nbsp;"program"<br>
(product)&nbsp;field&nbsp;is&nbsp;the&nbsp;full&nbsp;name&nbsp;of&nbsp;the&nbsp;product,&nbsp;rather&nbsp;than&nbsp;some&nbsp;other&nbsp;unique<br>
identifier,&nbsp;like&nbsp;bug_id&nbsp;and&nbsp;user_id&nbsp;are&nbsp;elsewhere&nbsp;in&nbsp;the&nbsp;database.<br>
<br>
dependencies:&nbsp;Stores&nbsp;data&nbsp;about&nbsp;those&nbsp;cool&nbsp;dependency&nbsp;trees.<br>
<br>
fielddefs:&nbsp;&nbsp;A&nbsp;nifty&nbsp;table&nbsp;that&nbsp;defines&nbsp;other&nbsp;tables.&nbsp;For&nbsp;instance,&nbsp;when&nbsp;you<br>
submit&nbsp;a&nbsp;form&nbsp;that&nbsp;changes&nbsp;the&nbsp;value&nbsp;of&nbsp;"AssignedTo"&nbsp;this&nbsp;table&nbsp;allows<br>
translation&nbsp;to&nbsp;the&nbsp;actual&nbsp;field&nbsp;name&nbsp;"assigned_to"&nbsp;for&nbsp;entry&nbsp;into&nbsp;MySQL.<br>
<br>
groups:&nbsp;&nbsp;defines&nbsp;bitmasks&nbsp;for&nbsp;groups.&nbsp;A&nbsp;bitmask&nbsp;is&nbsp;a&nbsp;number&nbsp;that&nbsp;can&nbsp;uniquely<br>
identify&nbsp;group&nbsp;memberships.&nbsp;For&nbsp;instance,&nbsp;say&nbsp;the&nbsp;group&nbsp;that&nbsp;is&nbsp;allowed&nbsp;to<br>
tweak&nbsp;parameters&nbsp;is&nbsp;assigned&nbsp;a&nbsp;value&nbsp;of&nbsp;"1",&nbsp;the&nbsp;group&nbsp;that&nbsp;is&nbsp;allowed&nbsp;to&nbsp;edit<br>
users&nbsp;is&nbsp;assigned&nbsp;a&nbsp;"2",&nbsp;and&nbsp;the&nbsp;group&nbsp;that&nbsp;is&nbsp;allowed&nbsp;to&nbsp;create&nbsp;new&nbsp;groups&nbsp;is<br>
assigned&nbsp;the&nbsp;bitmask&nbsp;of&nbsp;"4".&nbsp;By&nbsp;uniquely&nbsp;combining&nbsp;the&nbsp;group&nbsp;bitmasks&nbsp;(much<br>
like&nbsp;the&nbsp;chmod&nbsp;command&nbsp;in&nbsp;UNIX,)&nbsp;you&nbsp;can&nbsp;identify&nbsp;a&nbsp;user&nbsp;is&nbsp;allowed&nbsp;to&nbsp;tweak<br>
parameters&nbsp;and&nbsp;create&nbsp;groups,&nbsp;but&nbsp;not&nbsp;edit&nbsp;users,&nbsp;by&nbsp;giving&nbsp;him&nbsp;a&nbsp;bitmask&nbsp;of<br>
"5",&nbsp;or&nbsp;a&nbsp;user&nbsp;allowed&nbsp;to&nbsp;edit&nbsp;users&nbsp;and&nbsp;create&nbsp;groups,&nbsp;but&nbsp;not&nbsp;tweak<br>
parameters,&nbsp;by&nbsp;giving&nbsp;him&nbsp;a&nbsp;bitmask&nbsp;of&nbsp;"6"&nbsp;Simple,&nbsp;huh?<br>
&nbsp;&nbsp;If&nbsp;this&nbsp;makes&nbsp;no&nbsp;sense&nbsp;to&nbsp;you,&nbsp;try&nbsp;this&nbsp;at&nbsp;the&nbsp;mysql&nbsp;prompt:<br>
mysql&#62;&nbsp;select&nbsp;*&nbsp;from&nbsp;groups;<br>
&nbsp;&nbsp;You'll&nbsp;see&nbsp;the&nbsp;list,&nbsp;it&nbsp;makes&nbsp;much&nbsp;more&nbsp;sense&nbsp;that&nbsp;way.<br>
<br>
keyworddefs:&nbsp;&nbsp;Definitions&nbsp;of&nbsp;keywords&nbsp;to&nbsp;be&nbsp;used<br>
<br>
keywords:&nbsp;Unlike&nbsp;what&nbsp;you'd&nbsp;think,&nbsp;this&nbsp;table&nbsp;holds&nbsp;which&nbsp;keywords&nbsp;are<br>
associated&nbsp;with&nbsp;which&nbsp;bug&nbsp;id's.<br>
<br>
logincookies:&nbsp;This&nbsp;stores&nbsp;every&nbsp;login&nbsp;cookie&nbsp;ever&nbsp;assigned&nbsp;to&nbsp;you&nbsp;for&nbsp;every<br>
machine&nbsp;you've&nbsp;ever&nbsp;logged&nbsp;into&nbsp;Bugzilla&nbsp;from.&nbsp;Curiously,&nbsp;it&nbsp;never&nbsp;does&nbsp;any<br>
housecleaning&nbsp;--&nbsp;I&nbsp;see&nbsp;cookies&nbsp;in&nbsp;this&nbsp;file&nbsp;I've&nbsp;not&nbsp;used&nbsp;for&nbsp;months.&nbsp;However,<br>
since&nbsp;Bugzilla&nbsp;never&nbsp;expires&nbsp;your&nbsp;cookie&nbsp;(for&nbsp;convenience'&nbsp;sake),&nbsp;it&nbsp;makes<br>
sense.<br>
<br>
longdescs:&nbsp;&nbsp;The&nbsp;meat&nbsp;of&nbsp;bugzilla&nbsp;--&nbsp;here&nbsp;is&nbsp;where&nbsp;all&nbsp;user&nbsp;comments&nbsp;are&nbsp;stored!<br>
You've&nbsp;only&nbsp;got&nbsp;2^24&nbsp;bytes&nbsp;per&nbsp;comment&nbsp;(it's&nbsp;a&nbsp;mediumtext&nbsp;field),&nbsp;so&nbsp;speak<br>
sparingly&nbsp;--&nbsp;that's&nbsp;only&nbsp;the&nbsp;amount&nbsp;of&nbsp;space&nbsp;the&nbsp;Old&nbsp;Testament&nbsp;from&nbsp;the&nbsp;Bible<br>
would&nbsp;take&nbsp;(uncompressed,&nbsp;16&nbsp;megabytes).&nbsp;Each&nbsp;comment&nbsp;is&nbsp;keyed&nbsp;to&nbsp;the<br>
bug_id&nbsp;to&nbsp;which&nbsp;it's&nbsp;attached,&nbsp;so&nbsp;the&nbsp;order&nbsp;is&nbsp;necessarily&nbsp;chronological,&nbsp;for<br>
comments&nbsp;are&nbsp;played&nbsp;back&nbsp;in&nbsp;the&nbsp;order&nbsp;in&nbsp;which&nbsp;they&nbsp;are&nbsp;received.<br>
<br>
milestones:&nbsp;&nbsp;Interesting&nbsp;that&nbsp;milestones&nbsp;are&nbsp;associated&nbsp;with&nbsp;a&nbsp;specific&nbsp;product<br>
in&nbsp;this&nbsp;table,&nbsp;but&nbsp;Bugzilla&nbsp;does&nbsp;not&nbsp;yet&nbsp;support&nbsp;differing&nbsp;milestones&nbsp;by<br>
product&nbsp;through&nbsp;the&nbsp;standard&nbsp;configuration&nbsp;interfaces.<br>
<br>
namedqueries:&nbsp;&nbsp;This&nbsp;is&nbsp;where&nbsp;everybody&nbsp;stores&nbsp;their&nbsp;"custom&nbsp;queries".&nbsp;Very<br>
cool&nbsp;feature;&nbsp;it&nbsp;beats&nbsp;the&nbsp;tar&nbsp;out&nbsp;of&nbsp;having&nbsp;to&nbsp;bookmark&nbsp;each&nbsp;cool&nbsp;query&nbsp;you<br>
construct.<br>
<br>
products:&nbsp;&nbsp;What&nbsp;products&nbsp;you&nbsp;have,&nbsp;whether&nbsp;new&nbsp;bug&nbsp;entries&nbsp;are&nbsp;allowed&nbsp;for&nbsp;the<br>
product,&nbsp;what&nbsp;milestone&nbsp;you're&nbsp;working&nbsp;toward&nbsp;on&nbsp;that&nbsp;product,&nbsp;votes,&nbsp;etc.&nbsp;It<br>
will&nbsp;be&nbsp;nice&nbsp;when&nbsp;the&nbsp;components&nbsp;table&nbsp;supports&nbsp;these&nbsp;same&nbsp;features,&nbsp;so&nbsp;you<br>
could&nbsp;close&nbsp;a&nbsp;particular&nbsp;component&nbsp;for&nbsp;bug&nbsp;entry&nbsp;without&nbsp;having&nbsp;to&nbsp;close&nbsp;an<br>
entire&nbsp;product...<br>
<br>
profiles:&nbsp;&nbsp;Ahh,&nbsp;so&nbsp;you&nbsp;were&nbsp;wondering&nbsp;where&nbsp;your&nbsp;precious&nbsp;user&nbsp;information&nbsp;was<br>
stored?&nbsp;&nbsp;Here&nbsp;it&nbsp;is!&nbsp;&nbsp;With&nbsp;the&nbsp;passwords&nbsp;in&nbsp;plain&nbsp;text&nbsp;for&nbsp;all&nbsp;to&nbsp;see!&nbsp;(but<br>
sshh...&nbsp;don't&nbsp;tell&nbsp;your&nbsp;users!)<br>
<br>
profiles_activity:&nbsp;&nbsp;Need&nbsp;to&nbsp;know&nbsp;who&nbsp;did&nbsp;what&nbsp;when&nbsp;to&nbsp;who's&nbsp;profile?&nbsp;&nbsp;This'll<br>
tell&nbsp;you,&nbsp;it's&nbsp;a&nbsp;pretty&nbsp;complete&nbsp;history.<br>
<br>
versions:&nbsp;&nbsp;Version&nbsp;information&nbsp;for&nbsp;every&nbsp;product<br>
<br>
votes:&nbsp;&nbsp;Who&nbsp;voted&nbsp;for&nbsp;what&nbsp;when<br>
<br>
watch:&nbsp;&nbsp;Who&nbsp;(according&nbsp;to&nbsp;userid)&nbsp;is&nbsp;watching&nbsp;who's&nbsp;bugs&nbsp;(according&nbsp;to&nbsp;their<br>
userid).<br>
<br>
<br>
===<br>
THE&nbsp;DETAILS<br>
===<br>
<br>
&nbsp;&nbsp;Ahh,&nbsp;so&nbsp;you're&nbsp;wondering&nbsp;just&nbsp;what&nbsp;to&nbsp;do&nbsp;with&nbsp;the&nbsp;information&nbsp;above?&nbsp;&nbsp;At&nbsp;the<br>
mysql&nbsp;prompt,&nbsp;you&nbsp;can&nbsp;view&nbsp;any&nbsp;information&nbsp;about&nbsp;the&nbsp;columns&nbsp;in&nbsp;a&nbsp;table&nbsp;with<br>
this&nbsp;command&nbsp;(where&nbsp;"table"&nbsp;is&nbsp;the&nbsp;name&nbsp;of&nbsp;the&nbsp;table&nbsp;you&nbsp;wish&nbsp;to&nbsp;view):<br>
<br>
mysql&#62;&nbsp;show&nbsp;columns&nbsp;from&nbsp;table;<br>
<br>
&nbsp;&nbsp;You&nbsp;can&nbsp;also&nbsp;view&nbsp;all&nbsp;the&nbsp;data&nbsp;in&nbsp;a&nbsp;table&nbsp;with&nbsp;this&nbsp;command:<br>
<br>
mysql&#62;&nbsp;select&nbsp;*&nbsp;from&nbsp;table;<br>
<br>
&nbsp;&nbsp;--&nbsp;note:&nbsp;this&nbsp;is&nbsp;a&nbsp;very&nbsp;bad&nbsp;idea&nbsp;to&nbsp;do&nbsp;on,&nbsp;for&nbsp;instance,&nbsp;the&nbsp;"bugs"&nbsp;table&nbsp;if<br>
you&nbsp;have&nbsp;50,000&nbsp;bugs.&nbsp;You'll&nbsp;be&nbsp;sitting&nbsp;there&nbsp;a&nbsp;while&nbsp;until&nbsp;you&nbsp;ctrl-c&nbsp;or<br>
50,000&nbsp;bugs&nbsp;play&nbsp;across&nbsp;your&nbsp;screen.<br>
<br>
&nbsp;&nbsp;You&nbsp;can&nbsp;limit&nbsp;the&nbsp;display&nbsp;from&nbsp;above&nbsp;a&nbsp;little&nbsp;with&nbsp;the&nbsp;command,&nbsp;where<br>
"column"&nbsp;is&nbsp;the&nbsp;name&nbsp;of&nbsp;the&nbsp;column&nbsp;for&nbsp;which&nbsp;you&nbsp;wish&nbsp;to&nbsp;restrict&nbsp;information:<br>
<br>
mysql&#62;&nbsp;select&nbsp;*&nbsp;from&nbsp;table&nbsp;where&nbsp;(column&nbsp;=&nbsp;"some&nbsp;info");<br>
<br>
&nbsp;&nbsp;--&nbsp;or&nbsp;the&nbsp;reverse&nbsp;of&nbsp;this<br>
<br>
mysql&#62;&nbsp;select&nbsp;*&nbsp;from&nbsp;table&nbsp;where&nbsp;(column&nbsp;!=&nbsp;"some&nbsp;info");<br>
<br>
&nbsp;&nbsp;Let's&nbsp;take&nbsp;our&nbsp;example&nbsp;from&nbsp;the&nbsp;introduction,&nbsp;and&nbsp;assume&nbsp;you&nbsp;need&nbsp;to&nbsp;change<br>
the&nbsp;word&nbsp;"verified"&nbsp;to&nbsp;"approved"&nbsp;in&nbsp;the&nbsp;resolution&nbsp;field.&nbsp;We&nbsp;know&nbsp;from&nbsp;the<br>
above&nbsp;information&nbsp;that&nbsp;the&nbsp;resolution&nbsp;is&nbsp;likely&nbsp;to&nbsp;be&nbsp;stored&nbsp;in&nbsp;the&nbsp;"bugs"<br>
table.&nbsp;Note&nbsp;we'll&nbsp;need&nbsp;to&nbsp;change&nbsp;a&nbsp;little&nbsp;perl&nbsp;code&nbsp;as&nbsp;well&nbsp;as&nbsp;this&nbsp;database<br>
change,&nbsp;but&nbsp;I&nbsp;won't&nbsp;plunge&nbsp;into&nbsp;that&nbsp;in&nbsp;this&nbsp;document.&nbsp;Let's&nbsp;verify&nbsp;the<br>
information&nbsp;is&nbsp;stored&nbsp;in&nbsp;the&nbsp;"bugs"&nbsp;table:<br>
<br>
mysql&#62;&nbsp;show&nbsp;columns&nbsp;from&nbsp;bugs<br>
<br>
&nbsp;&nbsp;(exceedingly&nbsp;long&nbsp;output&nbsp;truncated&nbsp;here)<br>
|&nbsp;bug_status|&nbsp;enum('UNCONFIRMED','NEW','ASSIGNED','REOPENED','RESOLVED','VERIFIED','CLOSED')||MUL&nbsp;|&nbsp;UNCONFIRMED||<br>
<br>
&nbsp;&nbsp;Sorry&nbsp;about&nbsp;that&nbsp;long&nbsp;line.&nbsp;We&nbsp;see&nbsp;from&nbsp;this&nbsp;that&nbsp;the&nbsp;"bug&nbsp;status"&nbsp;column&nbsp;is<br>
an&nbsp;"enum&nbsp;field",&nbsp;which&nbsp;is&nbsp;a&nbsp;MySQL&nbsp;peculiarity&nbsp;where&nbsp;a&nbsp;string&nbsp;type&nbsp;field&nbsp;can<br>
only&nbsp;have&nbsp;certain&nbsp;types&nbsp;of&nbsp;entries.&nbsp;While&nbsp;I&nbsp;think&nbsp;this&nbsp;is&nbsp;very&nbsp;cool,&nbsp;it's&nbsp;not<br>
standard&nbsp;SQL.&nbsp;Anyway,&nbsp;we&nbsp;need&nbsp;to&nbsp;add&nbsp;the&nbsp;possible&nbsp;enum&nbsp;field&nbsp;entry<br>
'APPROVED'&nbsp;by&nbsp;altering&nbsp;the&nbsp;"bugs"&nbsp;table.<br>
<br>
mysql&#62;&nbsp;ALTER&nbsp;table&nbsp;bugs&nbsp;CHANGE&nbsp;bug_status&nbsp;bug_status<br>
&nbsp;&nbsp;&nbsp;&nbsp;-&#62;&nbsp;enum("UNCONFIRMED",&nbsp;"NEW",&nbsp;"ASSIGNED",&nbsp;"REOPENED",&nbsp;"RESOLVED",<br>
&nbsp;&nbsp;&nbsp;&nbsp;-&#62;&nbsp;"VERIFIED",&nbsp;"APPROVED",&nbsp;"CLOSED")&nbsp;not&nbsp;null;<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;(note&nbsp;we&nbsp;can&nbsp;take&nbsp;three&nbsp;lines&nbsp;or&nbsp;more&nbsp;--&nbsp;whatever&nbsp;you&nbsp;put&nbsp;in&nbsp;before&nbsp;the<br>
semicolon&nbsp;is&nbsp;evaluated&nbsp;as&nbsp;a&nbsp;single&nbsp;expression)<br>
<br>
Now&nbsp;if&nbsp;you&nbsp;do&nbsp;this:<br>
<br>
mysql&#62;&nbsp;show&nbsp;columns&nbsp;from&nbsp;bugs;<br>
<br>
&nbsp;&nbsp;you'll&nbsp;see&nbsp;that&nbsp;the&nbsp;bug_status&nbsp;field&nbsp;has&nbsp;an&nbsp;extra&nbsp;"APPROVED"&nbsp;enum&nbsp;that's<br>
available!&nbsp;&nbsp;Cool&nbsp;thing,&nbsp;too,&nbsp;is&nbsp;that&nbsp;this&nbsp;is&nbsp;reflected&nbsp;on&nbsp;your&nbsp;query&nbsp;page&nbsp;as<br>
well&nbsp;--&nbsp;you&nbsp;can&nbsp;query&nbsp;by&nbsp;the&nbsp;new&nbsp;status.&nbsp;But&nbsp;how's&nbsp;it&nbsp;fit&nbsp;into&nbsp;the&nbsp;existing<br>
scheme&nbsp;of&nbsp;things?<br>
&nbsp;&nbsp;Looks&nbsp;like&nbsp;you&nbsp;need&nbsp;to&nbsp;go&nbsp;back&nbsp;and&nbsp;look&nbsp;for&nbsp;instances&nbsp;of&nbsp;the&nbsp;word&nbsp;"verified"<br>
in&nbsp;the&nbsp;perl&nbsp;code&nbsp;for&nbsp;Bugzilla&nbsp;--&nbsp;wherever&nbsp;you&nbsp;find&nbsp;"verified",&nbsp;change&nbsp;it&nbsp;to<br>
"approved"&nbsp;and&nbsp;you're&nbsp;in&nbsp;business&nbsp;(make&nbsp;sure&nbsp;that's&nbsp;a&nbsp;case-insensitive&nbsp;search).<br>
Although&nbsp;you&nbsp;can&nbsp;query&nbsp;by&nbsp;the&nbsp;enum&nbsp;field,&nbsp;you&nbsp;can't&nbsp;give&nbsp;something&nbsp;a&nbsp;status<br>
of&nbsp;"APPROVED"&nbsp;until&nbsp;you&nbsp;make&nbsp;the&nbsp;perl&nbsp;changes.&nbsp;Note&nbsp;that&nbsp;this&nbsp;change&nbsp;I<br>
mentioned&nbsp;can&nbsp;also&nbsp;be&nbsp;done&nbsp;by&nbsp;editing&nbsp;checksetup.pl,&nbsp;which&nbsp;automates&nbsp;a&nbsp;lot&nbsp;of<br>
this.&nbsp;But&nbsp;you&nbsp;need&nbsp;to&nbsp;know&nbsp;this&nbsp;stuff&nbsp;anyway,&nbsp;right?<br>
	</P
></DIV
></DIV
></DIV
><DIV
CLASS="section"
><HR><H2
CLASS="section"
><A
NAME="integration"
>5.6. Integrating Bugzilla with Third-Party Tools</A
></H2
><DIV
CLASS="section"
><H3
CLASS="section"
><A
NAME="bonsai"
>5.6.1. Bonsai</A
></H3
><P
>Bonsai is a web-based tool for managing 
    <A
HREF="#cvs"
>CVS, the Concurrent Versioning System</A
>

    . Using Bonsai, administrators can control open/closed status of trees,
    query a fast relational database back-end for change, branch, and comment
    information, and view changes made since the last time the tree was
    closed. Bonsai
    also integrates with  
    <A
HREF="#tinderbox"
>Tinderbox, the Mozilla automated build management system</A
>.
    </P
></DIV
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="cvs"
>5.6.2. CVS</A
></H3
><P
>CVS integration is best accomplished, at this point, using the
    Bugzilla Email Gateway.</P
><P
>Follow the instructions in this Guide for enabling Bugzilla e-mail
    integration. Ensure that your check-in script sends an email to your
    Bugzilla e-mail gateway with the subject of 
    <SPAN
CLASS="QUOTE"
>"[Bug XXXX]"</SPAN
>, 
    and you can have CVS check-in comments append to your Bugzilla bug. If
    you  want to have the bug be closed automatically, you'll have to modify
    the <TT
CLASS="filename"
>contrib/bugzilla_email_append.pl</TT
> script.
    </P
><P
>There is also a CVSZilla project, based upon somewhat dated 
    Bugzilla code, to integrate CVS and Bugzilla through CVS' ability to 
    email. Check it out at: <A
HREF="http://homepages.kcbbs.gen.nz/~tonyg/"
TARGET="_top"
>http://homepages.kcbbs.gen.nz/~tonyg/</A
>.
    </P
><P
>Another system capable of CVS integration with Bugzilla is
    Scmbug. This system provides generic integration of Source code
    Configuration Management with Bugtracking. Check it out at: <A
HREF="http://freshmeat.net/projects/scmbug/"
TARGET="_top"
>http://freshmeat.net/projects/scmbug/</A
>.
    </P
></DIV
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="scm"
>5.6.3. Perforce SCM</A
></H3
><P
>You can find the project page for Bugzilla and Teamtrack Perforce
    integration (p4dti) at: 
    <A
HREF="http://www.ravenbrook.com/project/p4dti/"
TARGET="_top"
>http://www.ravenbrook.com/project/p4dti/</A
>

    . 
    <SPAN
CLASS="QUOTE"
>"p4dti"</SPAN
>

    is now an officially supported product from Perforce, and you can find
    the "Perforce Public Depot" p4dti page at 
    <A
HREF="http://public.perforce.com/public/perforce/p4dti/index.html"
TARGET="_top"
>http://public.perforce.com/public/perforce/p4dti/index.html</A
>

    .</P
><P
>Integration of Perforce with Bugzilla, once patches are applied, is
    seamless. Perforce replication information will appear below the comments
    of each bug. Be certain you have a matching set of patches for the
    Bugzilla version you are installing. p4dti is designed to support
    multiple defect trackers, and maintains its own documentation for it.
    Please consult the pages linked above for further information.</P
></DIV
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="svn"
>5.6.4. Subversion</A
></H3
><P
>Subversion is a free/open-source version control system,
     designed to overcome various limitations of CVS. Integration of
     Subversion with Bugzilla is possible using Scmbug, a system
     providing generic integration of Source Code Configuration
     Management with Bugtracking. Scmbug is available at <A
HREF="http://freshmeat.net/projects/scmbug/"
TARGET="_top"
>http://freshmeat.net/projects/scmbug/</A
>.</P
></DIV
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="tinderbox"
>5.6.5. Tinderbox/Tinderbox2</A
></H3
><P
>Tinderbox is a continuous-build system which can integrate with
    Bugzilla - see
    <A
HREF="http://www.mozilla.org/projects/tinderbox"
TARGET="_top"
>http://www.mozilla.org/projects/tinderbox</A
> for details
    of Tinderbox, and 
    <A
HREF="http://tinderbox.mozilla.org/showbuilds.cgi"
TARGET="_top"
>http://tinderbox.mozilla.org/showbuilds.cgi</A
> to see it
    in action.</P
></DIV
></DIV
></DIV
><DIV
CLASS="chapter"
><HR><H1
><A
NAME="using"
></A
>Chapter 6. Using Bugzilla</H1
><DIV
CLASS="section"
><H2
CLASS="section"
><A
NAME="using-intro"
>6.1. Introduction</A
></H2
><P
>This section contains information for end-users of Bugzilla.  There
    is a Bugzilla test installation, called
    <A
HREF="http://landfill.bugzilla.org/"
TARGET="_top"
>Landfill</A
>, which you are
    welcome to play with (if it's up). However, not all of the Bugzilla
    installations there will necessarily have all Bugzilla features enabled,
    and different installations run different versions, so some things may not
    quite work as this document describes.</P
></DIV
><DIV
CLASS="section"
><HR><H2
CLASS="section"
><A
NAME="myaccount"
>6.2. Create a Bugzilla Account</A
></H2
><P
>If you want to use Bugzilla, first you need to create an account.
    Consult with the administrator responsible for your installation of
    Bugzilla for the URL you should use to access it. If you're
    test-driving Bugzilla, use this URL: 
    <A
HREF="http://landfill.bugzilla.org/bugzilla-tip/"
TARGET="_top"
>http://landfill.bugzilla.org/bugzilla-tip/</A
>.
    </P
><P
></P
><OL
TYPE="1"
><LI
><P
>Click the 
        <SPAN
CLASS="QUOTE"
>"Open a new Bugzilla account"</SPAN
>

        link, enter your email address and, optionally, your name in the
        spaces provided, then click 
        <SPAN
CLASS="QUOTE"
>"Create Account"</SPAN
>

        .</P
></LI
><LI
><P
>Within moments, you should receive an email to the address
        you provided, which contains your login name (generally the
        same as the email address), and a password. 
        This password is randomly generated, but can be
        changed to something more memorable.</P
></LI
><LI
><P
>Click the 
        <SPAN
CLASS="QUOTE"
>"Log In"</SPAN
>
        link in the footer at the bottom of the page in your browser,
        enter your email address and password into the spaces provided, and
        click 
        <SPAN
CLASS="QUOTE"
>"Login"</SPAN
>.
        </P
></LI
></OL
><P
>You are now logged in. Bugzilla uses cookies to remember you are
    logged in so, unless you have cookies disabled or your IP address changes, 
    you should not have to log in again.</P
></DIV
><DIV
CLASS="section"
><HR><H2
CLASS="section"
><A
NAME="bug_page"
>6.3. Anatomy of a Bug</A
></H2
><P
>The core of Bugzilla is the screen which displays a particular
    bug. It's a good place to explain some Bugzilla concepts. 
    <A
HREF="http://landfill.bugzilla.org/bugzilla-tip/show_bug.cgi?id=1"
TARGET="_top"
>&#13;    Bug 1 on Landfill</A
>

    is a good example. Note that the labels for most fields are hyperlinks;
    clicking them will take you to context-sensitive help on that
    particular field. Fields marked * may not be present on every
    installation of Bugzilla.</P
><P
></P
><OL
TYPE="1"
><LI
><P
>&#13;        <EM
>Product and Component</EM
>: 
        Bugs are divided up by Product and Component, with a Product
        having one or more Components in it. For example,
        bugzilla.mozilla.org's "Bugzilla" Product is composed of several
        Components: 
        <P
></P
><TABLE
BORDER="0"
><TBODY
><TR
><TD
>&#13;        <EM
>Administration:</EM
>
        Administration of a Bugzilla installation.</TD
></TR
><TR
><TD
>&#13;        <EM
>Bugzilla-General:</EM
>
        Anything that doesn't fit in the other components, or spans
        multiple components.</TD
></TR
><TR
><TD
>&#13;        <EM
>Creating/Changing Bugs:</EM
>
        Creating, changing, and viewing bugs.</TD
></TR
><TR
><TD
>&#13;        <EM
>Documentation:</EM
>
        The Bugzilla documentation, including The Bugzilla Guide.</TD
></TR
><TR
><TD
>&#13;        <EM
>Email:</EM
>
        Anything to do with email sent by Bugzilla.</TD
></TR
><TR
><TD
>&#13;        <EM
>Installation:</EM
>
        The installation process of Bugzilla.</TD
></TR
><TR
><TD
>&#13;        <EM
>Query/Buglist:</EM
>
        Anything to do with searching for bugs and viewing the
        buglists.</TD
></TR
><TR
><TD
>&#13;        <EM
>Reporting/Charting:</EM
>
        Getting reports from Bugzilla.</TD
></TR
><TR
><TD
>&#13;        <EM
>User Accounts:</EM
>
        Anything about managing a user account from the user's perspective.
        Saved queries, creating accounts, changing passwords, logging in,
        etc.</TD
></TR
><TR
><TD
>&#13;        <EM
>User Interface:</EM
>
        General issues having to do with the user interface cosmetics (not
        functionality) including cosmetic issues, HTML templates,
        etc.</TD
></TR
></TBODY
></TABLE
><P
></P
>
        </P
></LI
><LI
><P
>&#13;        <EM
>Status and Resolution:</EM
>

        These define exactly what state the bug is in - from not even
        being confirmed as a bug, through to being fixed and the fix
        confirmed by Quality Assurance. The different possible values for
        Status and Resolution on your installation should be documented in the
        context-sensitive help for those items.</P
></LI
><LI
><P
>&#13;        <EM
>Assigned To:</EM
>
        The person responsible for fixing the bug.</P
></LI
><LI
><P
>&#13;        <EM
>*URL:</EM
>
        A URL associated with the bug, if any.</P
></LI
><LI
><P
>&#13;        <EM
>Summary:</EM
>
        A one-sentence summary of the problem.</P
></LI
><LI
><P
>&#13;        <EM
>*Status Whiteboard:</EM
>
        (a.k.a. Whiteboard) A free-form text area for adding short notes
        and tags to a bug.</P
></LI
><LI
><P
>&#13;        <EM
>*Keywords:</EM
>
        The administrator can define keywords which you can use to tag and
        categorise bugs - e.g. The Mozilla Project has keywords like crash
        and regression.</P
></LI
><LI
><P
>&#13;        <EM
>Platform and OS:</EM
>
        These indicate the computing environment where the bug was
        found.</P
></LI
><LI
><P
>&#13;        <EM
>Version:</EM
>
        The "Version" field is usually used for versions of a product which
        have been released, and is set to indicate which versions of a
        Component have the particular problem the bug report is
        about.</P
></LI
><LI
><P
>&#13;        <EM
>Priority:</EM
>
        The bug assignee uses this field to prioritise his or her bugs.
        It's a good idea not to change this on other people's bugs.</P
></LI
><LI
><P
>&#13;        <EM
>Severity:</EM
>
        This indicates how severe the problem is - from blocker
        ("application unusable") to trivial ("minor cosmetic issue"). You
        can also use this field to indicate whether a bug is an enhancement
        request.</P
></LI
><LI
><P
>&#13;        <EM
>*Target:</EM
>
        (a.k.a. Target Milestone) A future version by which the bug is to
        be fixed. e.g. The Bugzilla Project's milestones for future
        Bugzilla versions are 2.18, 2.20, 3.0, etc. Milestones are not
        restricted to numbers, thought - you can use any text strings, such
        as dates.</P
></LI
><LI
><P
>&#13;        <EM
>Reporter:</EM
>
        The person who filed the bug.</P
></LI
><LI
><P
>&#13;        <EM
>CC list:</EM
>
        A list of people who get mail when the bug changes.</P
></LI
><LI
><P
>&#13;        <EM
>Attachments:</EM
>
          You can attach files (e.g. testcases or patches) to bugs. If there
          are any attachments, they are listed in this section.  Attachments are
          normally stored in the Bugzilla database, unless they are marked as
          Big Files, which are stored directly on disk and (unlike attachments
          kept in the database) may be deleted at some future time.
        </P
></LI
><LI
><P
>&#13;        <EM
>*Dependencies:</EM
>
        If this bug cannot be fixed unless other bugs are fixed (depends
        on), or this bug stops other bugs being fixed (blocks), their
        numbers are recorded here.</P
></LI
><LI
><P
>&#13;        <EM
>*Votes:</EM
>
        Whether this bug has any votes.</P
></LI
><LI
><P
>&#13;        <EM
>Additional Comments:</EM
>
        You can add your two cents to the bug discussion here, if you have
        something worthwhile to say.</P
></LI
></OL
></DIV
><DIV
CLASS="section"
><HR><H2
CLASS="section"
><A
NAME="lifecycle"
>6.4. Life Cycle of a Bug</A
></H2
><P
>&#13;      The life cycle, also known as work flow, of a bug is currently hardcoded
      into Bugzilla. <A
HREF="#lifecycle-image"
>Figure 6-1</A
> contains a graphical
      repsentation of this life cycle. If you wish to customize this image for
      your site, the <A
HREF="../images/bzLifecycle.xml"
TARGET="_top"
>diagram file</A
>
      is available in <A
HREF="http://www.gnome.org/projects/dia"
TARGET="_top"
>Dia's</A
>
      native XML format.
    </P
><DIV
CLASS="figure"
><A
NAME="lifecycle-image"
></A
><P
><B
>Figure 6-1. Lifecycle of a Bugzilla Bug</B
></P
><DIV
CLASS="mediaobject"
><P
><IMG
SRC="../images/bzLifecycle.png"></P
></DIV
></DIV
></DIV
><DIV
CLASS="section"
><HR><H2
CLASS="section"
><A
NAME="query"
>6.5. Searching for Bugs</A
></H2
><P
>The Bugzilla Search page is the interface where you can find
    any bug report, comment, or patch currently in the Bugzilla system. You
    can play with it here: 
    <A
HREF="http://landfill.bugzilla.org/bugzilla-tip/query.cgi"
TARGET="_top"
>http://landfill.bugzilla.org/bugzilla-tip/query.cgi</A
>.</P
><P
>The Search page has controls for selecting different possible
    values for all of the fields in a bug, as described above. For some
    fields, multiple values can be selected. In those cases, Bugzilla
    returns bugs where the content of the field matches any one of the selected
    values. If none is selected, then the field can take any value.</P
><P
>Once you've run a search, you can save it as a Saved Search, which 
    appears in the page footer.</P
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="boolean"
>6.5.1. Boolean Charts</A
></H3
><P
>&#13;        Highly advanced querying is done using Boolean Charts.
      </P
><P
>&#13;        The boolean charts further restrict the set of results
        returned by a query. It is possible to search for bugs
        based on elaborate combinations of critera.
      </P
><P
>&#13;        The simplest boolean searches have only one term. These searches
        permit the selected left <EM
>field</EM
>
        to be compared using a
        selectable <EM
>operator</EM
> to a
        specified <EM
>value.</EM
>
        Using the "And," "Or," and "Add Another Boolean Chart" buttons, 
        additonal terms can be included in the query, further
        altering the list of bugs returned by the query.
      </P
><P
>&#13;        There are three fields in each row of a boolean search. 
      </P
><P
></P
><UL
><LI
><P
>&#13;            <EM
>Field:</EM
>
            the items being searched 
          </P
></LI
><LI
><P
>&#13;            <EM
>Operator:</EM
>
            the comparison operator 
          </P
></LI
><LI
><P
>&#13;            <EM
>Value:</EM
>
            the value to which the field is being compared
          </P
></LI
></UL
><DIV
CLASS="section"
><HR><H4
CLASS="section"
><A
NAME="pronouns"
>6.5.1.1. Pronoun Substitution</A
></H4
><P
>&#13;          Sometimes, a query needs to compare a field containing
          a user's ID (such as ReportedBy) with 
          a user's ID (such as the user running the query or the user
          to whom each bug is assigned). When the operator is either 
          "equals" or "notequals", the value can be "%reporter%", 
          "%assignee%", "%qacontact%", or "%user%."  The user pronoun
          referes to the user who is executing the query or, in the case
          of whining reports, the user who will be the recipient
          of the report. The reporter, assignee, and qacontact
          pronouns refer to the corresponding fields in the bug.
        </P
></DIV
><DIV
CLASS="section"
><HR><H4
CLASS="section"
><A
NAME="negation"
>6.5.1.2. Negation</A
></H4
><P
>&#13;          At first glance, negation seems redundant. Rather than
          searching for
          <A
NAME="AEN2277"
></A
><BLOCKQUOTE
CLASS="BLOCKQUOTE"
><P
>&#13;              NOT("summary" "contains the string" "foo"),
            </P
></BLOCKQUOTE
>
          one could search for 
          <A
NAME="AEN2279"
></A
><BLOCKQUOTE
CLASS="BLOCKQUOTE"
><P
>&#13;              ("summary" "does not contain the string" "foo").
            </P
></BLOCKQUOTE
>
          However, the search 
          <A
NAME="AEN2281"
></A
><BLOCKQUOTE
CLASS="BLOCKQUOTE"
><P
>&#13;              ("CC" "does not contain the string" "@mozilla.org")
            </P
></BLOCKQUOTE
>
          would find every bug where anyone on the CC list did not contain 
          "@mozilla.org" while
          <A
NAME="AEN2283"
></A
><BLOCKQUOTE
CLASS="BLOCKQUOTE"
><P
>&#13;              NOT("CC" "contains the string" "@mozilla.org")
            </P
></BLOCKQUOTE
>
          would find every bug where there was nobody on the CC list who
          did contain the string. Similarly, the use of negation also permits
          complex expressions to be built using terms OR'd together and then
          negated. Negation permits queries such as
          <A
NAME="AEN2285"
></A
><BLOCKQUOTE
CLASS="BLOCKQUOTE"
><P
>&#13;              NOT(("product" "equals" "update") OR 
            ("component" "equals" "Documentation"))
            </P
></BLOCKQUOTE
>
          to find bugs that are neither 
          in the update product or in the documentation component or
          <A
NAME="AEN2287"
></A
><BLOCKQUOTE
CLASS="BLOCKQUOTE"
><P
>&#13;              NOT(("commenter" "equals" "%assignee%") OR 
              ("component" "equals" "Documentation"))
            </P
></BLOCKQUOTE
>
          to find non-documentation
          bugs on which the assignee has never commented.
        </P
></DIV
><DIV
CLASS="section"
><HR><H4
CLASS="section"
><A
NAME="multiplecharts"
>6.5.1.3. Multiple Charts</A
></H4
><P
>&#13;          The terms within a single row of a boolean chart are all
          constraints on a single piece of data. If you are looking for
          a bug that has two different people cc'd on it, then you need 
          to use two boolean charts. A search for
          <A
NAME="AEN2292"
></A
><BLOCKQUOTE
CLASS="BLOCKQUOTE"
><P
>&#13;              ("cc" "contains the string" "foo@") AND
              ("cc" "contains the string" "@mozilla.org")
            </P
></BLOCKQUOTE
>
          would return only bugs with "foo@mozilla.org" on the cc list.
          If you wanted bugs where there is someone on the cc list
          containing "foo@" and someone else containing "@mozilla.org",
          then you would need two boolean charts.
          <A
NAME="AEN2294"
></A
><BLOCKQUOTE
CLASS="BLOCKQUOTE"
><P
>&#13;              First chart: ("cc" "contains the string" "foo@")
            </P
><P
>&#13;              Second chart: ("cc" "contains the string" "@mozilla.org")
            </P
></BLOCKQUOTE
>
          The bugs listed will be only the bugs where ALL the charts are true.
        </P
></DIV
></DIV
></DIV
><DIV
CLASS="section"
><HR><H2
CLASS="section"
><A
NAME="list"
>6.6. Bug Lists</A
></H2
><P
>If you run a search, a list of matching bugs will be returned.
    </P
><P
>The format of the list is configurable. For example, it can be
    sorted by clicking the column headings. Other useful features can be
    accessed using the links at the bottom of the list: 
    <P
></P
><TABLE
BORDER="0"
><TBODY
><TR
><TD
>&#13;      <EM
>Long Format:</EM
>

      this gives you a large page with a non-editable summary of the fields
      of each bug.</TD
></TR
><TR
><TD
>&#13;      <EM
>CSV:</EM
>

      get the buglist as comma-separated values, for import into e.g.
      a spreadsheet.</TD
></TR
><TR
><TD
>&#13;      <EM
>RSS</EM
>

      get the buglist as an RSS 1.0 feed.  Copy this link into your
      favorite feed reader.  If you are using Firefox, you can also
      save the list as a live bookmark by clicking the live bookmark
      icon in the status bar.  To limit the number of bugs in the feed,
      add a limit=n parameter to the URL.</TD
></TR
><TR
><TD
>&#13;      <EM
>iCalendar</EM
>

      Get the buglist as an iCalendar file. Each bug is represented as a 
      to-do item in the imported calendar.</TD
></TR
><TR
><TD
>&#13;      <EM
>Change Columns:</EM
>

      change the bug attributes which appear in the list.</TD
></TR
><TR
><TD
>&#13;      <EM
>Change several bugs at once:</EM
>

      If your account is sufficiently empowered, you can make the same
      change to all the bugs in the list - for example, changing their
      assignee.</TD
></TR
><TR
><TD
>&#13;      <EM
>Send mail to bug assignees:</EM
>

      Sends mail to the assignees of all bugs on the list.</TD
></TR
><TR
><TD
>&#13;      <EM
>Edit Search:</EM
>

      If you didn't get exactly the results you were looking for, you can
      return to the Query page through this link and make small revisions
      to the query you just made so you get more accurate results.</TD
></TR
><TR
><TD
>&#13;      <EM
>Remember Search As:</EM
>

      You can give a search a name and remember it; a link will appear
      in your page footer giving you quick access to run it again later.
      </TD
></TR
></TBODY
></TABLE
><P
></P
>
    </P
><P
>&#13;      If you would like to access the bug list from another program 
      it is often useful to have the list returned in something other
      than HTML. By adding the ctype=type parameter into the bug list URL
      you can specify several alternate formats. The supported formats
      are: Comma Separated Values (ctype=csv), iCalendar (ctype=ics),
      RDF Site Summary (RSS) 1.0 (ctype=rss), ECMAScript, also known
      as JavaScript (ctype=js), and finally Resource Description Framework
      RDF/XML (ctype=rdf).
    </P
></DIV
><DIV
CLASS="section"
><HR><H2
CLASS="section"
><A
NAME="bugreports"
>6.7. Filing Bugs</A
></H2
><P
>Years of bug writing experience has been distilled for your
    reading pleasure into the 
    <A
HREF="http://landfill.bugzilla.org/bugzilla-tip/page.cgi?id=bug-writing.html"
TARGET="_top"
>&#13;    Bug Writing Guidelines</A
>. 
    While some of the advice is Mozilla-specific, the basic principles of
    reporting Reproducible, Specific bugs, isolating the Product you are
    using, the Version of the Product, the Component which failed, the
    Hardware Platform, and Operating System you were using at the time of
    the failure go a long way toward ensuring accurate, responsible fixes
    for the bug that bit you.</P
><P
>The procedure for filing a test bug is as follows:</P
><P
></P
><OL
TYPE="1"
><LI
><P
>Go to 
        <A
HREF="http://landfill.bugzilla.org/bugzilla-tip/"
TARGET="_top"
>&#13;        Landfill</A
>
        in your browser and click 
        <A
HREF="http://landfill.bugzilla.org/bugzilla-tip/enter_bug.cgi"
TARGET="_top"
>&#13;        Enter a new bug report</A
>.
        </P
></LI
><LI
><P
>Select a product - any one will do.</P
></LI
><LI
><P
>Fill in the fields. Bugzilla should have made reasonable
        guesses, based upon your browser, for the "Platform" and "OS"
        drop-down boxes. If they are wrong, change them.</P
></LI
><LI
><P
>Select "Commit" and send in your bug report.</P
></LI
></OL
><P
>Try to make sure that everything said in the summary is also 
      said in the first comment. Summaries are often updated and this will
      ensure your original information is easily accessible.
      </P
><P
>&#13;      You do not need to put "any" or similar strings in the URL field.
      If there is no specific URL associated with the bug, leave this 
      field blank.
      </P
><P
>If you feel a bug you filed was incorrectly marked as a
      DUPLICATE of another, please question it in your bug, not      
      the bug it was duped to. Feel free to CC the person who duped it 
      if they are not already CCed.
      </P
></DIV
><DIV
CLASS="section"
><HR><H2
CLASS="section"
><A
NAME="patchviewer"
>6.8. Patch Viewer</A
></H2
><P
>Viewing and reviewing patches in Bugzilla is often difficult due to
    lack of context, improper format and the inherent readability issues that
    raw patches present.  Patch Viewer is an enhancement to Bugzilla designed
    to fix that by offering increased context, linking to sections, and
    integrating with Bonsai, LXR and CVS.</P
><P
>Patch viewer allows you to:</P
><P
></P
><TABLE
BORDER="0"
><TBODY
><TR
><TD
>View patches in color, with side-by-side view rather than trying
      to interpret the contents of the patch.</TD
></TR
><TR
><TD
>See the difference between two patches.</TD
></TR
><TR
><TD
>Get more context in a patch.</TD
></TR
><TR
><TD
>Collapse and expand sections of a patch for easy
      reading.</TD
></TR
><TR
><TD
>Link to a particular section of a patch for discussion or
      review</TD
></TR
><TR
><TD
>Go to Bonsai or LXR to see more context, blame, and
      cross-references for the part of the patch you are looking at</TD
></TR
><TR
><TD
>Create a rawtext unified format diff out of any patch, no
      matter what format it came from</TD
></TR
></TBODY
></TABLE
><P
></P
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="patchviewer_view"
>6.8.1. Viewing Patches in Patch Viewer</A
></H3
><P
>The main way to view a patch in patch viewer is to click on the
      "Diff" link next to a patch in the Attachments list on a bug. You may
      also do this within the edit window by clicking the "View Attachment As
      Diff" button in the Edit Attachment screen.</P
></DIV
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="patchviewer_diff"
>6.8.2. Seeing the Difference Between Two Patches</A
></H3
><P
>To see the difference between two patches, you must first view the
      newer patch in Patch Viewer.  Then select the older patch from the
      dropdown at the top of the page ("Differences between [dropdown] and
      this patch") and click the "Diff" button. This will show you what
      is new or changed in the newer patch.</P
></DIV
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="patchviewer_context"
>6.8.3. Getting More Context in a Patch</A
></H3
><P
>To get more context in a patch, you put a number in the textbox at
      the top of Patch Viewer ("Patch / File / [textbox]") and hit enter.
      This will give you that many lines of context before and after each
      change. Alternatively, you can click on the "File" link there and it
      will show each change in the full context of the file. This feature only
      works against files that were diffed using "cvs diff".</P
></DIV
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="patchviewer_collapse"
>6.8.4. Collapsing and Expanding Sections of a Patch</A
></H3
><P
>To view only a certain set of files in a patch (for example, if a
      patch is absolutely huge and you want to only review part of it at a
      time), you can click the "(+)" and "(-)" links next to each file (to
      expand it or collapse it). If you want to collapse all files or expand
      all files, you can click the "Collapse All" and "Expand All" links at the
      top of the page.</P
></DIV
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="patchviewer_link"
>6.8.5. Linking to a Section of a Patch</A
></H3
><P
>To link to a section of a patch (for example, if you want to be
      able to give someone a URL to show them which part you are talking
      about) you simply click the "Link Here" link on the section header. The
      resulting URL can be copied and used in discussion. (Copy Link
      Location in Mozilla works as well.)</P
></DIV
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="patchviewer_bonsai_lxr"
>6.8.6. Going to Bonsai and LXR</A
></H3
><P
>To go to Bonsai to get blame for the lines you are interested in,
      you can click the "Lines XX-YY" link on the section header you are
      interested in. This works even if the patch is against an old
      version of the file, since Bonsai stores all versions of the file.</P
><P
>To go to LXR, you click on the filename on the file header
      (unfortunately, since LXR only does the most recent version, line
      numbers are likely to rot).</P
></DIV
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="patchviewer_unified_diff"
>6.8.7. Creating a Unified Diff</A
></H3
><P
>If the patch is not in a format that you like, you can turn it
      into a unified diff format by clicking the "Raw Unified" link at the top
      of the page.</P
></DIV
></DIV
><DIV
CLASS="section"
><HR><H2
CLASS="section"
><A
NAME="hintsandtips"
>6.9. Hints and Tips</A
></H2
><P
>This section distills some Bugzilla tips and best practices
    that have been developed.</P
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="AEN2377"
>6.9.1. Autolinkification</A
></H3
><P
>Bugzilla comments are plain text - so typing &#60;U&#62; will
      produce less-than, U, greater-than rather than underlined text.
      However, Bugzilla will automatically make hyperlinks out of certain
      sorts of text in comments. For example, the text 
      "http://www.bugzilla.org" will be turned into a link:
      <A
HREF="http://www.bugzilla.org"
TARGET="_top"
>http://www.bugzilla.org</A
>.
      Other strings which get linkified in the obvious manner are:
      <P
></P
><TABLE
BORDER="0"
><TBODY
><TR
><TD
>bug 12345</TD
></TR
><TR
><TD
>comment 7</TD
></TR
><TR
><TD
>bug 23456, comment 53</TD
></TR
><TR
><TD
>attachment 4321</TD
></TR
><TR
><TD
>mailto:george@example.com</TD
></TR
><TR
><TD
>george@example.com</TD
></TR
><TR
><TD
>ftp://ftp.mozilla.org</TD
></TR
><TR
><TD
>Most other sorts of URL</TD
></TR
></TBODY
></TABLE
><P
></P
>
      </P
><P
>A corollary here is that if you type a bug number in a comment,
      you should put the word "bug" before it, so it gets autolinkified
      for the convenience of others.
      </P
></DIV
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="quicksearch"
>6.9.2. Quicksearch</A
></H3
><P
>Quicksearch is a single-text-box query tool which uses
      metacharacters to indicate what is to be searched. For example, typing
      "<TT
CLASS="filename"
>foo|bar</TT
>" 
      into Quicksearch would search for "foo" or "bar" in the 
      summary and status whiteboard of a bug; adding 
      "<TT
CLASS="filename"
>:BazProduct</TT
>" would
      search only in that product.
      </P
><P
>You'll find the Quicksearch box on Bugzilla's
      front page, along with a 
      <A
HREF="../../quicksearch.html"
TARGET="_top"
>Help</A
> 
      link which details how to use it.</P
></DIV
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="commenting"
>6.9.3. Comments</A
></H3
><P
>If you are changing the fields on a bug, only comment if
      either you have something pertinent to say, or Bugzilla requires it.
      Otherwise, you may spam people unnecessarily with bug mail.
      To take an example: a user can set up their account to filter out messages
      where someone just adds themselves to the CC field of a bug
      (which happens a lot.) If you come along, add yourself to the CC field,
      and add a comment saying "Adding self to CC", then that person
      gets a pointless piece of mail they would otherwise have avoided.
      </P
><P
>&#13;      Don't use sigs in comments. Signing your name ("Bill") is acceptable,
      if you do it out of habit, but full mail/news-style
      four line ASCII art creations are not.
      </P
></DIV
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="attachments"
>6.9.4. Attachments</A
></H3
><P
>&#13;      Use attachments, rather than comments, for large chunks of ASCII data,
      such as trace, debugging output files, or log files. That way, it doesn't
      bloat the bug for everyone who wants to read it, and cause people to
      receive fat, useless mails.
      </P
><P
>Trim screenshots. There's no need to show the whole screen if
      you are pointing out a single-pixel problem.
      </P
><P
>Don't attach simple test cases (e.g. one HTML file, one 
      CSS file and an image) as a ZIP file. Instead, upload them in 
      reverse order and edit the referring file so that they point to the
      attached files. This way, the test case works immediately 
      out of the bug.
      </P
><P
>Bugzilla stores and uses a Content-Type for each attachment 
      (e.g. text/html). To download an attachment as a different 
      Content-Type (e.g. application/xhtml+xml), you can override this 
      using a 'content-type' parameter on the URL, e.g.
      <TT
CLASS="filename"
>&#38;content-type=text/plain</TT
>.
      </P
><P
>&#13;        If you have a really large attachment, something that does not need to
        be recorded forever (as most attachments are), you can mark your
        attachment as a Big File, Assuming the administrator of the
        installation has enabled this feature.  Big Files are stored directly on
        disk instead of in the database, and can be deleted when it is no longer
        needed.  The maximum size of a Big File is normally larger than the
        maximum size of a regular attachment.
      </P
></DIV
></DIV
><DIV
CLASS="section"
><HR><H2
CLASS="section"
><A
NAME="userpreferences"
>6.10. User Preferences</A
></H2
><P
>Once you have logged in, you can customise various aspects of 
    Bugzilla via the "Edit prefs" link in the page footer.
    The preferences are split into three tabs:</P
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="accountsettings"
>6.10.1. Account Settings</A
></H3
><P
>On this tab, you can change your basic account information,
      including your password, email address and real name. For security
      reasons, in order to change anything on this page you must type your 
      <EM
>current</EM
>
      password into the 
      <SPAN
CLASS="QUOTE"
>"Password"</SPAN
>
      field at the top of the page. 
      If you attempt to change your email address, a confirmation
      email is sent to both the old and new addresses, with a link to use to
      confirm the change. This helps to prevent account hijacking.</P
></DIV
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="emailsettings"
>6.10.2. Email Settings</A
></H3
><P
>&#13;        This tab controls the amount of email Bugzilla sends you.
      </P
><P
>&#13;        The first item on this page is marked <SPAN
CLASS="QUOTE"
>"Users to watch"</SPAN
>.
        When you enter one or more comma-delineated user accounts (usually email
        addresses) into the text entry box, you will receive a copy of all the
        bugmail those users are sent (security settings permitting).
        This powerful functionality enables seamless transitions as developers
        change projects or users go on holiday.
      </P
><DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;          The ability to watch other users may not be available in all
          Bugzilla installations. If you don't see this feature, and feel
          that you need it, speak to your administrator.
        </P
></TD
></TR
></TABLE
></DIV
><P
>&#13;        In general, users have almost complete control over how much (or
        how little) email Bugzilla sends them. If you want to receive the
        maximum amount of email possible, click the <SPAN
CLASS="QUOTE"
>"Enable All 
        Mail"</SPAN
> button. If you don't want to receive any email from
        Bugzilla at all, click the <SPAN
CLASS="QUOTE"
>"Disable All Mail"</SPAN
> button.
      </P
><DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;          Your Bugzilla administrator can stop a user from receiving
          bugmail by adding the user's name to the 
          <TT
CLASS="filename"
>data/nomail</TT
> file. This is a drastic step
          best taken only for disabled accounts, as it overrides the 
          the user's individual mail preferences.
        </P
></TD
></TR
></TABLE
></DIV
><P
>&#13;        If you'd like to set your bugmail to something besides
        'Completely ON' and 'Completely OFF', the
        <SPAN
CLASS="QUOTE"
>"Field/recipient specific options"</SPAN
> table
        allows you to do just that. The rows of the table
        define events that can happen to a bug -- things like
        attachments being added, new comments being made, the
        priority changing, etc. The columns in the table define
        your relationship with the bug:
      </P
><P
></P
><UL
COMPACT="COMPACT"
><LI
><P
>&#13;            Reporter - Where you are the person who initially
            reported the bug. Your name/account appears in the
            <SPAN
CLASS="QUOTE"
>"Reporter:"</SPAN
> field.
          </P
></LI
><LI
><P
>&#13;            Assignee - Where you are the person who has been
            designated as the one responsible for the bug. Your
            name/account appears in the <SPAN
CLASS="QUOTE"
>"Assigned To:"</SPAN
>
            field of the bug.
          </P
></LI
><LI
><P
>&#13;            QA Contact - You are one of the designated
            QA Contacts for the bug. Your account appears in the 
            <SPAN
CLASS="QUOTE"
>"QA Contact:"</SPAN
> text-box of the bug.
          </P
></LI
><LI
><P
>&#13;            CC - You are on the list CC List for the bug.
            Your account appears in the <SPAN
CLASS="QUOTE"
>"CC:"</SPAN
> text box
            of the bug.
          </P
></LI
><LI
><P
>&#13;            Voter - You have placed one or more votes for the bug.
            Your account appears only if someone clicks on the 
            <SPAN
CLASS="QUOTE"
>"Show votes for this bug"</SPAN
> link on the bug.
          </P
></LI
></UL
><DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;          Some columns may not be visible for your installation, depending
          on your site's configuration.
        </P
></TD
></TR
></TABLE
></DIV
><P
>&#13;        To fine-tune your bugmail, decide the events for which you want
        to receive bugmail; then decide if you want to receive it all
        the time (enable the checkbox for every column), or only when
        you have a certain relationship with a bug (enable the checkbox
        only for those columns). For example: if you didn't want to
        receive mail when someone added themselves to the CC list, you
        could uncheck all the boxes in the <SPAN
CLASS="QUOTE"
>"CC Field Changes"</SPAN
>
        line. As another example, if you never wanted to receive email
        on bugs you reported unless the bug was resolved, you would
        un-check all boxes in the <SPAN
CLASS="QUOTE"
>"Reporter"</SPAN
> column
        except for the one on the <SPAN
CLASS="QUOTE"
>"The bug is resolved or
        verified"</SPAN
> row.
      </P
><DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;          Bugzilla adds the <SPAN
CLASS="QUOTE"
>"X-Bugzilla-Reason"</SPAN
> header to
          all bugmail it sends, describing the recipient's relationship
          (AssignedTo, Reporter, QAContact, CC, or Voter) to the bug.
          This header can be used to do further client-side filtering.
        </P
></TD
></TR
></TABLE
></DIV
><P
>&#13;        Two items not in the table (<SPAN
CLASS="QUOTE"
>"Email me when someone
        asks me to set a flag"</SPAN
> and <SPAN
CLASS="QUOTE"
>"Email me when someone
        sets a flag I asked for"</SPAN
>) define how you want to
        receive bugmail with regards to flags. Their use is quite
        straightforward; enable the checkboxes if you want Bugzilla to
        send you mail under either of the above conditions.
      </P
><P
>&#13;        By default, Bugzilla sends out email regardless of who made the
        change... even if you were the one responsible for generating
        the email in the first place. If you don't care to receive bugmail
        from your own changes, check the box marked <SPAN
CLASS="QUOTE"
>"Only email me
        reports of changes made by other people"</SPAN
>.
      </P
></DIV
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="permissionsettings"
>6.10.3. Permissions</A
></H3
><P
>This is a purely informative page which outlines your current
      permissions on this installation of Bugzilla - what product groups you
      are in, and whether you can edit bugs or perform various administration
      functions.</P
></DIV
></DIV
><DIV
CLASS="section"
><HR><H2
CLASS="section"
><A
NAME="reporting"
>6.11. Reports and Charts</A
></H2
><P
>As well as the standard buglist, Bugzilla has two more ways of
    viewing sets of bugs. These are the reports (which give different
    views of the current state of the database) and charts (which plot
    the changes in particular sets of bugs over time.)</P
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="reports"
>6.11.1. Reports</A
></H3
><P
>&#13;        A report is a view of the current state of the bug database.
      </P
><P
>&#13;        You can run either an HTML-table-based report, or a graphical
        line/pie/bar-chart-based one. The two have different pages to
        define them, but are close cousins - once you've defined and
        viewed a report, you can switch between any of the different
        views of the data at will.
      </P
><P
>&#13;        Both report types are based on the idea of defining a set of bugs
        using the standard search interface, and then choosing some
        aspect of that set to plot on the horizontal and/or vertical axes.
        You can also get a form of 3-dimensional report by choosing to have
        multiple images or tables.
      </P
><P
>&#13;        So, for example, you could use the search form to choose "all
        bugs in the WorldControl product", and then plot their severity
        against their component to see which component had had the largest
        number of bad bugs reported against it. 
      </P
><P
>&#13;        Once you've defined your parameters and hit "Generate Report",
        you can switch between HTML, CSV, Bar, Line and Pie. (Note: Pie
        is only available if you didn't define a vertical axis, as pie
        charts don't have one.) The other controls are fairly self-explanatory;
        you can change the size of the image if you find text is overwriting
        other text, or the bars are too thin to see.
      </P
></DIV
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="charts"
>6.11.2. Charts</A
></H3
><P
>&#13;        A chart is a view of the state of the bug database over time.
      </P
><P
>&#13;        Bugzilla currently has two charting systems - Old Charts and New 
        Charts. Old Charts have been part of Bugzilla for a long time; they
        chart each status and resolution for each product, and that's all.
        They are deprecated, and going away soon - we won't say any more 
        about them.
        New Charts are the future - they allow you to chart anything you
        can define as a search.
      </P
><DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;          Both charting forms require the administrator to set up the
          data-gathering script. If you can't see any charts, ask them whether
          they have done so.
        </P
></TD
></TR
></TABLE
></DIV
><P
>&#13;        An individual line on a chart is called a data set.
        All data sets are organised into categories and subcategories. The 
        data sets that Bugzilla defines automatically use the Product name 
        as a Category and Component names as Subcategories, but there is no 
        need for you to follow that naming scheme with your own charts if 
        you don't want to.
      </P
><P
>&#13;        Data sets may be public or private. Everyone sees public data sets in
        the list, but only their creator sees private data sets. Only 
        administrators can make data sets public.
        No two data sets, even two private ones, can have the same set of 
        category, subcategory and name. So if you are creating private data 
        sets, one idea is to have the Category be your username.
      </P
><DIV
CLASS="section"
><HR><H4
CLASS="section"
><A
NAME="AEN2484"
>6.11.2.1. Creating Charts</A
></H4
><P
>&#13;          You create a chart by selecting a number of data sets from the
          list, and pressing Add To List for each. In the List Of Data Sets
          To Plot, you can define the label that data set will have in the
          chart's legend, and also ask Bugzilla to Sum a number of data sets 
          (e.g. you could Sum data sets representing RESOLVED, VERIFIED and 
          CLOSED in a particular product to get a data set representing all 
          the resolved bugs in that product.)
        </P
><P
>&#13;          If you've erroneously added a data set to the list, select it
          using the checkbox and click Remove. Once you add more than one 
          data set, a "Grand Total" line
          automatically appears at the bottom of the list. If you don't want
          this, simply remove it as you would remove any other line.
        </P
><P
>&#13;          You may also choose to plot only over a certain date range, and
          to cumulate the results - that is, to plot each one using the 
          previous one as a baseline, so the top line gives a sum of all 
          the data sets. It's easier to try than to explain :-)
        </P
><P
>&#13;          Once a data set is in the list, one can also perform certain 
          actions on it. For example, one can edit the
          data set's parameters (name, frequency etc.) if it's one you
          created or if you are an administrator.
        </P
><P
>&#13;           Once you are happy, click Chart This List to see the chart.
        </P
></DIV
><DIV
CLASS="section"
><HR><H4
CLASS="section"
><A
NAME="AEN2491"
>6.11.2.2. Creating New Data Sets</A
></H4
><P
>&#13;          You may also create new data sets of your own. To do this,
          click the "create a new data set" link on the Create Chart page.
          This takes you to a search-like interface where you can define
          the search that Bugzilla will plot. At the bottom of the page,
          you choose the category, sub-category and name of your new
          data set. 
        </P
><P
>&#13;          If you have sufficient permissions, you can make the data set public,
          and reduce the frequency of data collection to less than the default
          seven days.
        </P
></DIV
></DIV
></DIV
><DIV
CLASS="section"
><HR><H2
CLASS="section"
><A
NAME="flags"
>6.12. Flags</A
></H2
><P
>&#13;      A flag is a kind of status that can be set on bugs or attachments
      to indicate that the bugs/attachments are in a certain state.
      Each installation can define its own set of flags that can be set
      on bugs or attachments.
    </P
><P
>&#13;      If your installation has defined a flag, you can set or unset that flag,
      and if your administrator has enabled requesting of flags, you can submit
      a request for another user to set the flag.
    </P
><P
>&#13;      To set a flag, select either "+" or "-" from the drop-down menu next to
      the name of the flag in the "Flags" list.  The meaning of these values are
      flag-specific and thus cannot be described in this documentation,
      but by way of example, setting a flag named "review" to "+" may indicate
      that the bug/attachment has passed review, while setting it to "-"
      may indicate that the bug/attachment has failed review.
    </P
><P
>&#13;      To unset a flag, click its drop-down menu and select the blank value.
    </P
><P
>&#13;      If your administrator has enabled requests for a flag, request a flag
      by selecting "?" from the drop-down menu and then entering the username
      of the user you want to set the flag in the text field next to the menu.
    </P
><P
>&#13;      A set flag appears in bug reports and on "edit attachment" pages with the
      abbreviated username of the user who set the flag prepended to the
      flag name. For example, if Jack sets a "review" flag to "+", it appears
      as Jack: review [ + ]
    </P
><P
>&#13;      A requested flag appears with the user who requested the flag prepended
      to the flag name and the user who has been requested to set the flag
      appended to the flag name within parentheses.  For example, if Jack
      asks Jill for review, it appears as Jack: review [ ? ] (Jill).
    </P
><P
>&#13;      You can browse through open requests made of you and by you by selecting
      'My Requests' from the footer. You can also look at open requests limited
      by other requesters, requestees, products, components, and flag names from
      this page. Note that you can use '-' for requestee to specify flags with
      'no requestee' set.
    </P
></DIV
><DIV
CLASS="section"
><HR><H2
CLASS="section"
><A
NAME="whining"
>6.13. Whining</A
></H2
><P
>&#13;      Whining is a feature in Bugzilla that can regularly annoy users at 
      specified times.  Using this feature, users can execute saved searches 
      at specific times (i.e. the 15th of the month at midnight) or at 
      regular intervals (i.e. every 15 minutes on Sundays).  The results of the
      searches are sent to the user, either as a single email or as one email 
      per bug, along with some descriptive text.
    </P
><DIV
CLASS="warning"
><P
></P
><TABLE
CLASS="warning"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/warning.gif"
HSPACE="5"
ALT="Warning"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;        Throughout this section it will be assumed that all users are members 
        of the bz_canusewhines group, membership in which is required in order 
        to use the Whining system.  You can easily make all users members of 
        the bz_canusewhines group by setting the User RegExp to ".*" (without 
        the quotes).
      </P
><P
>&#13;        Also worth noting is the bz_canusewhineatothers group.  Members of this
        group can create whines for any user or group in Bugzilla using a 
        extended form of the whining interface.  Features only available to 
        members of the bz_canusewhineatothers group will be noted in the 
        appropriate places.
      </P
></TD
></TR
></TABLE
></DIV
><DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;        For whining to work, a special Perl script must be executed at regular
        intervals.  More information on this is available in 
        <A
HREF="#installation-whining"
>Section 2.3.4</A
>.
      </P
></TD
></TR
></TABLE
></DIV
><DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;        This section does not cover the whineatnews.pl script.  See
        <A
HREF="#installation-whining-cron"
>Section 2.3.3</A
> for more information on 
        The Whining Cron.
      </P
></TD
></TR
></TABLE
></DIV
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="whining-overview"
>6.13.1. The Event</A
></H3
><P
>&#13;        The whining system defines an "Event" as one or more queries being 
        executed at regular intervals, with the results of said queries (if
        there are any) being emailed to the user.  Events are created by 
        clicking on the "Add new event" button.
      </P
><P
>&#13;        Once a new event is created, the first thing to set is the "Email 
        subject line".  The contents of this field will be used in the subject
        line of every email generated by this event.  In addition to setting a 
        subject, space is provided to enter some descriptive text that will be 
        included at the top of each message (to help you in understanding why 
        you received the email in the first place).
      </P
><P
>&#13;        The next step is to specify when the Event is to be run (the Schedule) 
        and what searches are to be performed (the Queries).
      </P
></DIV
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="whining-schedule"
>6.13.2. Whining Schedule</A
></H3
><P
>&#13;         Each whining event is associated with zero or more schedules.  A 
         schedule is used to specify when the query (specified below) is to be
         run.  A new event starts out with no schedules (which means it will 
         never run, as it is not scheduled to run).  To add a schedule, press
         the "Add a new schedule" button.
      </P
><P
>&#13;         Each schedule includes an interval, which you use to tell Bugzilla 
         when the event should be run.  An event can be run on certain days of
         the week, certain days of the month, during weekdays (defined as 
         Monday through Friday), or every day.
      </P
><DIV
CLASS="warning"
><P
></P
><TABLE
CLASS="warning"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/warning.gif"
HSPACE="5"
ALT="Warning"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;          Be careful if you set your event to run on the 29th, 30th, or 31st of
          the month, as your event may not run exactly when expected.  If you 
          want your event to run on the last day of the month, select "Last day
          of the month" as the interval.
        </P
></TD
></TR
></TABLE
></DIV
><P
>&#13;        Once you have specified the day(s) on which the event is to be run, you
        should now specify the time at which the event is to be run.  You can 
        have the event run at a certain hour on the specified day(s), or 
        every hour, half-hour, or quarter-hour on the specified day(s).
      </P
><P
>&#13;        If a single schedule does not execute an event as many times as you 
        would want, you can create another schedule for the same event.  For 
        example, if you want to run an event on days whose numbers are
        divisible by seven, you would need to add four schedules to the event,
        setting the schedules to run on the 7th, 14th, 21st, and 28th (one day 
        per schedule) at whatever time (or times) you choose.
      </P
><DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;          If you are a member of the bz_canusewhineatothers group, then you
          will be presented with another option: "Mail to".  Using this you 
          can control who will receive the emails generated by this event.  You
          can choose to send the emails to a single user (identified by email 
          address) or a single group (identified by group name).  To send to 
          multiple users or groups, create a new schedule for each additional 
          user/group.
        </P
></TD
></TR
></TABLE
></DIV
></DIV
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="whining-query"
>6.13.3. Whining Queries</A
></H3
><P
>&#13;        Each whining event is associated with zero or more queries.  A query is
        a saved search that is executed on the schedule specified (see above).
        You start out with zero queries attached to the event (which means that
        the event will not run, as there will never be any results to return).
        To add a query, press the "Add a new query" button.
      </P
><P
>&#13;        The first field to examine in your new query is the Sort field.  Queries
        are executed, and results returned, in the order specified by the Sort 
        field.  Queries with lower Sort values will run before queries with 
        higher Sort values.
      </P
><P
>&#13;        The next field to examine is the Search field.  This is where you 
        choose the actual search that is to be run.  Instead of defining search
        parameters here, you are asked to choose from the list of saved 
        searches (the same list that appears at the bottom of every Bugzilla 
        page).  You are only allowed to choose from searches that you have 
        saved yourself (the default saved search, "My Bugs", is not a valid 
        choice).  If you do not have any saved searches, you can take this 
        opportunity to create one (see <A
HREF="#list"
>Section 6.6</A
>).
      </P
><DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;          When running queries, the whining system acts as if you are the user
          executing the query.  This means that the whining system will ignore
          bugs that match your query, but that you can not access.
        </P
></TD
></TR
></TABLE
></DIV
><P
>&#13;        Once you have chosen the saved search to be executed, give the query a 
        descriptive title.  This title will appear in the email, above the 
        results of the query.  If you choose "One message per bug", the query 
        title will appear at the top of each email that contains a bug matching
        your query.
      </P
><P
>&#13;        Finally, decide if the results of the query should be sent in a single
        email, or if each bug should appear in its own email.
      </P
><DIV
CLASS="warning"
><P
></P
><TABLE
CLASS="warning"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/warning.gif"
HSPACE="5"
ALT="Warning"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;          Think carefully before checking the "One message per bug" box.  If
          you create a query that matches thousands of bugs, you will receive 
          thousands of emails!
        </P
></TD
></TR
></TABLE
></DIV
></DIV
><DIV
CLASS="section"
><HR><H3
CLASS="section"
><A
NAME="AEN2544"
>6.13.4. Saving Your Changes</A
></H3
><P
>&#13;        Once you have defined at least one schedule, and created at least one 
        query, go ahead and "Update/Commit".  This will save your Event and make
        it available for immediate execution.
      </P
><DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;          If you ever feel like deleting your event, you may do so using the 
          "Remove Event" button in the upper-right corner of each Event.  You 
          can also modify an existing event, so long as you "Update/Commit" 
          after completing your modifications.
        </P
></TD
></TR
></TABLE
></DIV
></DIV
></DIV
></DIV
><DIV
CLASS="appendix"
><HR><H1
><A
NAME="faq"
></A
>Appendix A. The Bugzilla FAQ</H1
><P
>&#13;    This FAQ includes questions not covered elsewhere in the Guide.
  </P
><DIV
CLASS="qandaset"
><DL
><DT
>1. <A
HREF="#faq-general"
>General Questions</A
></DT
><DD
><DL
><DT
>A.1.1. <A
HREF="#faq-general-license"
>&#13;            What license is Bugzilla distributed under?
          </A
></DT
><DT
>A.1.2. <A
HREF="#faq-general-support"
>&#13;            How do I get commercial support for Bugzilla?
          </A
></DT
><DT
>A.1.3. <A
HREF="#faq-general-companies"
>&#13;            What major companies or projects are currently using Bugzilla
            for bug-tracking?
          </A
></DT
><DT
>A.1.4. <A
HREF="#faq-general-maintainers"
>&#13;            Who maintains Bugzilla?
          </A
></DT
><DT
>A.1.5. <A
HREF="#faq-general-compare"
>&#13;            How does Bugzilla stack up against other bug-tracking databases?
          </A
></DT
><DT
>A.1.6. <A
HREF="#faq-general-bzmissing"
>&#13;            Why doesn't Bugzilla offer this or that feature or compatibility
            with this other tracking software?
          </A
></DT
><DT
>A.1.7. <A
HREF="#faq-general-mysql"
>&#13;            Why MySQL?  I'm interested in seeing Bugzilla run on
            PostgreSQL/Sybase/Oracle/Msql/MSSQL.
          </A
></DT
><DT
>A.1.8. <A
HREF="#faq-general-bonsaitools"
>&#13;            What is <TT
CLASS="filename"
>/usr/bonsaitools/bin/perl</TT
>?
          </A
></DT
><DT
>A.1.9. <A
HREF="#faq-general-perlpath"
>&#13;            My perl is located at <TT
CLASS="filename"
>/usr/local/bin/perl</TT
>
            and not <TT
CLASS="filename"
>/usr/bin/perl</TT
>. Is there an easy
            to change that in all the files that have this hard-coded?
          </A
></DT
><DT
>A.1.10. <A
HREF="#faq-general-cookie"
>&#13;            Is there an easy way to change the Bugzilla cookie name?
          </A
></DT
><DT
>A.1.11. <A
HREF="#faq-mod-perl"
>&#13;            Does bugzilla run under <TT
CLASS="filename"
>mod_perl</TT
>?
          </A
></DT
></DL
></DD
><DT
>2. <A
HREF="#faq-phb"
>Managerial Questions</A
></DT
><DD
><DL
><DT
>A.2.1. <A
HREF="#faq-phb-client"
>&#13;            Is Bugzilla web-based, or do you have to have specific software or
            a specific operating system on your machine?
          </A
></DT
><DT
>A.2.2. <A
HREF="#faq-phb-priorities"
>&#13;            Does Bugzilla allow us to define our own priorities and levels?
            Do we have complete freedom to change the labels of fields and
            format of them, and the choice of acceptable values?
          </A
></DT
><DT
>A.2.3. <A
HREF="#faq-phb-reporting"
>&#13;            Does Bugzilla provide any reporting features, metrics, graphs,
            etc? You know, the type of stuff that management likes to see. :)
          </A
></DT
><DT
>A.2.4. <A
HREF="#faq-phb-email"
>&#13;            Is there email notification? If so, what do you see
            when you get an email?
          </A
></DT
><DT
>A.2.5. <A
HREF="#faq-phb-emailapp"
>&#13;            Do users have to have any particular
            type of email application?
          </A
></DT
><DT
>A.2.6. <A
HREF="#faq-phb-data"
>&#13;            Does Bugzilla allow data to be imported and exported? If I had
            outsiders write up a bug report using a MS Word bug template,
            could that template be imported into <SPAN
CLASS="QUOTE"
>"matching"</SPAN
>
            fields? If I wanted to take the results of a query and export
            that data to MS Excel, could I do that?
          </A
></DT
><DT
>A.2.7. <A
HREF="#faq-phb-l10n"
>&#13;            Has anyone converted Bugzilla to another language to be
            used in other countries? Is it localizable?
          </A
></DT
><DT
>A.2.8. <A
HREF="#faq-phb-reports"
>&#13;            Can a user create and save reports?
            Can they do this in Word format? Excel format?
          </A
></DT
><DT
>A.2.9. <A
HREF="#faq-phb-backup"
>&#13;            Are there any backup features provided?
          </A
></DT
><DT
>A.2.10. <A
HREF="#faq-phb-maintenance"
>&#13;            What type of human resources are needed to be on staff to install
            and maintain Bugzilla? Specifically, what type of skills does the
            person need to have? I need to find out what types of individuals
            would we need to hire and how much would that cost if we were to
            go with Bugzilla vs. buying an <SPAN
CLASS="QUOTE"
>"out-of-the-box"</SPAN
>
            solution.
          </A
></DT
><DT
>A.2.11. <A
HREF="#faq-phb-installtime"
>&#13;            What time frame are we looking at if we decide to hire people
            to install and maintain the Bugzilla? Is this something that
            takes hours or days to install and a couple of hours per week
            to maintain and customize, or is this a multi-week install process,
            plus a full time job for 1 person, 2 people, etc?
          </A
></DT
><DT
>A.2.12. <A
HREF="#faq-phb-cost"
>&#13;            Is there any licensing fee or other fees for using Bugzilla? Any
            out-of-pocket cost other than the bodies needed as identified above?
          </A
></DT
><DT
>A.2.13. <A
HREF="#faq-phb-renameBugs"
>&#13;            We don't like referring to problems as 'bugs'. Can we change that?
          </A
></DT
></DL
></DD
><DT
>3. <A
HREF="#faq-admin"
>Administrative Questions</A
></DT
><DD
><DL
><DT
>A.3.1. <A
HREF="#faq-admin-midair"
>&#13;            Does Bugzilla provide record locking when there is simultaneous
            access to the same bug? Does the second person get a notice
            that the bug is in use or how are they notified?
          </A
></DT
><DT
>A.3.2. <A
HREF="#faq-admin-livebackup"
>&#13;            Can users be on the system while a backup is in progress?
          </A
></DT
><DT
>A.3.3. <A
HREF="#faq-admin-cvsupdate"
>&#13;            How can I update the code and the database using CVS?
          </A
></DT
><DT
>A.3.4. <A
HREF="#faq-admin-enable-unconfirmed"
>&#13;            How do I make it so that bugs can have an UNCONFIRMED status?
          </A
></DT
><DT
>A.3.5. <A
HREF="#faq-admin-moving"
>&#13;            How do I move a Bugzilla installation from one machine to another?
          </A
></DT
></DL
></DD
><DT
>4. <A
HREF="#faq-security"
>Bugzilla Security</A
></DT
><DD
><DL
><DT
>A.4.1. <A
HREF="#faq-security-mysql"
>&#13;            How do I completely disable MySQL security if it's giving
            me problems? (I've followed the instructions in the installation
            section of this guide...)
          </A
></DT
><DT
>A.4.2. <A
HREF="#faq-security-knownproblems"
>&#13;            Are there any security problems with Bugzilla?
          </A
></DT
></DL
></DD
><DT
>5. <A
HREF="#faq-email"
>Bugzilla Email</A
></DT
><DD
><DL
><DT
>A.5.1. <A
HREF="#faq-email-nomail"
>&#13;            I have a user who doesn't want to receive any more email
            from Bugzilla. How do I stop it entirely for this user?
          </A
></DT
><DT
>A.5.2. <A
HREF="#faq-email-testing"
>&#13;            I'm evaluating/testing Bugzilla, and don't want it to send email
            to anyone but me. How do I do it?
          </A
></DT
><DT
>A.5.3. <A
HREF="#faq-email-whine"
>&#13;            I want whineatnews.pl to whine at something other than new and
            reopened bugs. How do I do it?
          </A
></DT
><DT
>A.5.4. <A
HREF="#faq-email-mailif"
>&#13;            How do I set up the email interface to submit/change bugs via email?
          </A
></DT
><DT
>A.5.5. <A
HREF="#faq-email-sendmailnow"
>&#13;            Email takes FOREVER to reach me from Bugzilla -- it's
            extremely slow. What gives?
          </A
></DT
><DT
>A.5.6. <A
HREF="#faq-email-nonreceived"
>&#13;             How come email from Bugzilla changes never reaches me?
          </A
></DT
></DL
></DD
><DT
>6. <A
HREF="#faq-db"
>Bugzilla Database</A
></DT
><DD
><DL
><DT
>A.6.1. <A
HREF="#faq-db-corrupted"
>&#13;            I think my database might be corrupted, or contain
            invalid entries. What do I do?
          </A
></DT
><DT
>A.6.2. <A
HREF="#faq-db-manualedit"
>&#13;            I want to manually edit some entries in my database. How?
          </A
></DT
><DT
>A.6.3. <A
HREF="#faq-db-permissions"
>&#13;            I think I've set up MySQL permissions correctly, but Bugzilla still
            can't connect.
          </A
></DT
><DT
>A.6.4. <A
HREF="#faq-db-synchronize"
>&#13;            How do I synchronize bug information among multiple
            different Bugzilla databases?
          </A
></DT
></DL
></DD
><DT
>7. <A
HREF="#faq-nt"
>Bugzilla and Win32</A
></DT
><DD
><DL
><DT
>A.7.1. <A
HREF="#faq-nt-easiest"
>&#13;            What is the easiest way to run Bugzilla on Win32 (Win98+/NT/2K)?
          </A
></DT
><DT
>A.7.2. <A
HREF="#faq-nt-bundle"
>&#13;            Is there a "Bundle::Bugzilla" equivalent for Win32?
          </A
></DT
><DT
>A.7.3. <A
HREF="#faq-nt-mappings"
>&#13;            CGI's are failing with a <SPAN
CLASS="QUOTE"
>"something.cgi is not a valid
            Windows NT application"</SPAN
> error. Why?
          </A
></DT
><DT
>A.7.4. <A
HREF="#faq-nt-dbi"
>&#13;            I'm having trouble with the perl modules for NT not being
            able to talk to the database.
          </A
></DT
></DL
></DD
><DT
>8. <A
HREF="#faq-use"
>Bugzilla Usage</A
></DT
><DD
><DL
><DT
>A.8.1. <A
HREF="#faq-use-changeaddress"
>&#13;            How do I change my user name (email address) in Bugzilla?
          </A
></DT
><DT
>A.8.2. <A
HREF="#faq-use-query"
>&#13;            The query page is very confusing.
            Isn't there a simpler way to query?
          </A
></DT
><DT
>A.8.3. <A
HREF="#faq-use-accept"
>&#13;            I'm confused by the behavior of the <SPAN
CLASS="QUOTE"
>"Accept"</SPAN
>
            button in the Show Bug form. Why doesn't it assign the bug
            to me when I accept it?
          </A
></DT
><DT
>A.8.4. <A
HREF="#faq-use-attachment"
>&#13;            I can't upload anything into the database via the
            <SPAN
CLASS="QUOTE"
>"Create Attachment"</SPAN
> link. What am I doing wrong?
          </A
></DT
><DT
>A.8.5. <A
HREF="#faq-use-keyword"
>&#13;            How do I change a keyword in Bugzilla, once some bugs are using it?
          </A
></DT
><DT
>A.8.6. <A
HREF="#faq-use-close"
>&#13;            Why can't I close bugs from the <SPAN
CLASS="QUOTE"
>"Change Several Bugs
            at Once"</SPAN
> page?
          </A
></DT
></DL
></DD
><DT
>9. <A
HREF="#faq-hacking"
>Bugzilla Hacking</A
></DT
><DD
><DL
><DT
>A.9.1. <A
HREF="#faq-hacking-templatestyle"
>&#13;            What kind of style should I use for templatization?
          </A
></DT
><DT
>A.9.2. <A
HREF="#faq-hacking-bugzillabugs"
>&#13;            What bugs are in Bugzilla right now?
          </A
></DT
><DT
>A.9.3. <A
HREF="#faq-hacking-priority"
>&#13;            How can I change the default priority to a null value?
            For instance, have the default priority be <SPAN
CLASS="QUOTE"
>"---"</SPAN
>
            instead of <SPAN
CLASS="QUOTE"
>"P2"</SPAN
>?
          </A
></DT
><DT
>A.9.4. <A
HREF="#faq-hacking-patches"
>&#13;            What's the best way to submit patches?  What guidelines
            should I follow?
          </A
></DT
></DL
></DD
></DL
><DIV
CLASS="qandadiv"
><H3
><A
NAME="faq-general"
></A
>1. General Questions</H3
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="faq-general-license"
></A
><B
>A.1.1. </B
>
            What license is Bugzilla distributed under?
          </P
></DIV
><DIV
CLASS="answer"
><P
><B
> </B
>
            Bugzilla is covered by the Mozilla Public License.
            See details at <A
HREF="http://www.mozilla.org/MPL/"
TARGET="_top"
>http://www.mozilla.org/MPL/</A
>.
          </P
></DIV
></DIV
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="faq-general-support"
></A
><B
>A.1.2. </B
>
            How do I get commercial support for Bugzilla?
          </P
></DIV
><DIV
CLASS="answer"
><P
><B
> </B
>
            <A
HREF="http://www.bugzilla.org/support/consulting.html"
TARGET="_top"
>http://www.bugzilla.org/support/consulting.html</A
>
            is a list of companies and individuals who have asked us to
            list them as consultants for Bugzilla.
          </P
><P
>&#13;            There are several experienced
            Bugzilla hackers on the mailing list/newsgroup who are willing
            to make themselves available for generous compensation.
            Try sending a message to the mailing list asking for a volunteer.
          </P
></DIV
></DIV
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="faq-general-companies"
></A
><B
>A.1.3. </B
>
            What major companies or projects are currently using Bugzilla
            for bug-tracking?
          </P
></DIV
><DIV
CLASS="answer"
><P
><B
> </B
>
            There are <EM
>dozens</EM
> of major companies with public
            Bugzilla sites to track bugs in their products. We have a fairly
            complete list available on our website at
            <A
HREF="http://bugzilla.org/installation-list/"
TARGET="_top"
>http://bugzilla.org/installation-list/</A
>. If you
            have an installation of Bugzilla and would like to be added to the
            list, whether it's a public install or not, simply e-mail
            Gerv <CODE
CLASS="email"
>&#60;<A
HREF="mailto:gerv@mozilla.org"
>gerv@mozilla.org</A
>&#62;</CODE
>.
          </P
></DIV
></DIV
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="faq-general-maintainers"
></A
><B
>A.1.4. </B
>
            Who maintains Bugzilla?
          </P
></DIV
><DIV
CLASS="answer"
><P
><B
> </B
>
            A <A
HREF="http://www.bugzilla.org/developers/profiles.html"
TARGET="_top"
>core
            team</A
>, led by Dave Miller (justdave@bugzilla.org).
          </P
></DIV
></DIV
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="faq-general-compare"
></A
><B
>A.1.5. </B
>
            How does Bugzilla stack up against other bug-tracking databases?
          </P
></DIV
><DIV
CLASS="answer"
><P
><B
> </B
>
            We can't find any head-to-head comparisons of Bugzilla against
            other defect-tracking software. If you know of one, please get
            in touch. In the experience of Matthew Barnson (the original
            author of this FAQ), though, Bugzilla offers superior
            performance on commodity hardware, better price (free!), more
            developer-friendly features (such as stored queries, email
            integration, and platform independence), improved scalability,
            greater flexibility, and superior ease-of-use when compared
            to commercial bug-tracking software.
          </P
><P
>&#13;            If you happen to be a vendor for commercial bug-tracking
            software, and would like to submit a list of advantages your
            product has over Bugzilla, simply send it to 
            <CODE
CLASS="email"
>&#60;<A
HREF="mailto:documentation@bugzilla.org"
>documentation@bugzilla.org</A
>&#62;</CODE
> and we'd be happy to
            include the comparison in our documentation.
          </P
></DIV
></DIV
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="faq-general-bzmissing"
></A
><B
>A.1.6. </B
>
            Why doesn't Bugzilla offer this or that feature or compatibility
            with this other tracking software?
          </P
></DIV
><DIV
CLASS="answer"
><P
><B
> </B
>
            It may be that the support has not been built yet, or that you
            have not yet found it. While Bugzilla makes strides in usability,
            customizability, scalability, and user interface with each release,
            that doesn't mean it can't still use improvement!
          </P
><P
>&#13;            The best way to make an enhancement request is to <A
HREF="http://bugzilla.mozilla.org/enter_bug.cgi?product=Bugzilla"
TARGET="_top"
>file
            a bug at bugzilla.mozilla.org</A
> and set the Severity
            to 'enhancement'. Your 'request for enhancement' (RFE) will
            start out in the UNCONFIRMED state, and will stay there until
            someone with the ability to COMFIRM the bug reviews it.
            If that person feels it to be a good request that fits in with
            Bugzilla's overall direction, the status will be changed to
            NEW; if not, they will probably explain why and set the bug
            to RESOLVED/WONTFIX. If someone else has made the same (or
            almost the same) request before, your request will be marked
            RESOLVED/DUPLICATE, and a pointer to the previous RFE will be
            added.
          </P
><P
>&#13;            Even if your RFE gets approved, that doesn't mean it's going
            to make it right into the next release; there are a limited
            number of developers, and a whole lot of RFEs... some of
            which are <EM
>quite</EM
> complex. If you're a
            code-hacking sort of person, you can help the project along
            by making a patch yourself that supports the functionality
            you require. If you have never contributed anything to
            Bugzilla before, please be sure to read the 
            <A
HREF="http://www.bugzilla.org/docs/developer.html"
TARGET="_top"
>Developers' Guide</A
>
            and
            <A
HREF="http://www.bugzilla.org/docs/contributor.html"
TARGET="_top"
>Contributors' Guide</A
>
            before going ahead.
          </P
></DIV
></DIV
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="faq-general-mysql"
></A
><B
>A.1.7. </B
>
            Why MySQL?  I'm interested in seeing Bugzilla run on
            PostgreSQL/Sybase/Oracle/Msql/MSSQL.
          </P
></DIV
><DIV
CLASS="answer"
><P
><B
> </B
>
            MySQL was originally chosen because it is free, easy to install,
            and was available for the hardware Netscape intended to run it on.
          </P
><P
>&#13;            There is currently work in progress to make Bugzilla work on
            PostgreSQL; track the progress of this initiative in <A
HREF="http://bugzilla.mozilla.org/show_bug.cgi?id=98304"
TARGET="_top"
>bug 98304</A
>.
          </P
><P
>&#13;            Sybase support is no longer being worked on.  Even if it eventually
            happens, it's VERY unlikely to work without the end-user-company
            having to stick a few developers on making several manual changes.
            Sybase is just NOT very standards-compliant (despite all the hype),
            and it turned out that way too much had to be changed to make it
            work -- like moving half of the application logic into stored
            procedures to get any kind of decent performance out of it.
            <A
HREF="http://bugzilla.mozilla.org/show_bug.cgi?id=173130"
TARGET="_top"
>Bug
            173130</A
> is the relevant bug.
          </P
><P
>&#13;            Red Hat once ran a version of Bugzilla that worked on Oracle, 
            but that was long, long ago; that version (Bugzilla 2.8) is
            now obsolete, insecure, and totally unsupported. Red Hat's
            current Bugzilla (based on Bugzilla 2.17.1) uses PostgreSQL,
            and work is being done to merge those changes into the main
            distribution. (See above.) At this time we know of no recent
            ports of Bugzilla to Oracle. (In our honest opinion, Bugzilla
            doesn't need what Oracle offers.)
          </P
><P
>&#13;            <A
HREF="http://bugzilla.mozilla.org/show_bug.cgi?id=237862"
TARGET="_top"
>Bug
            237862</A
> is a good bug to read through if you'd like to see
            what progress is being made on general database compatibility.
          </P
></DIV
></DIV
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="faq-general-bonsaitools"
></A
><B
>A.1.8. </B
>
            What is <TT
CLASS="filename"
>/usr/bonsaitools/bin/perl</TT
>?
          </P
></DIV
><DIV
CLASS="answer"
><P
><B
> </B
>
            Bugzilla used to have the path to perl on the shebang line set
            to <TT
CLASS="filename"
>/usr/bonsaitools/bin/perl</TT
> because when
            Terry first started writing the code for mozilla.org he needed a
            version of Perl and other tools that were completely under his
            control. This location was abandoned for the 2.18 release in favor
            of the more sensible <TT
CLASS="filename"
>/usr/bin/perl</TT
>. If you
            installed an older verion of Bugzilla and created the symlink we
            suggested, you can remove it now (provided that you don't have
            anything else, such as Bonsai, using it and you don't intend to
            reinstall an older version of Bugzilla).
          </P
></DIV
></DIV
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="faq-general-perlpath"
></A
><B
>A.1.9. </B
>
            My perl is located at <TT
CLASS="filename"
>/usr/local/bin/perl</TT
>
            and not <TT
CLASS="filename"
>/usr/bin/perl</TT
>. Is there an easy
            to change that in all the files that have this hard-coded?
          </P
></DIV
><DIV
CLASS="answer"
><P
><B
> </B
>
            The easiest way to get around this is to create a link from
            one to the other:
            <B
CLASS="command"
>ln -s /usr/local/bin/perl /usr/bin/perl</B
>.
            If that's not an option for you, the following bit of perl
            magic will change all the shebang lines (that is to say,
            the line at the top of each file that starts with '#!' 
            and contains the path) to something else:
          </P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;perl -pi -e 's@#\!/usr/bin/perl@#\!/usr/local/bin/perl@' *cgi *pl
          </PRE
></FONT
></TD
></TR
></TABLE
><P
>&#13;            Sadly, this command-line won't work on Windows unless you
            also have Cygwin. However, MySQL comes with a binary called
            <B
CLASS="command"
>replace</B
> which can do the job:
          </P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;C:\mysql\bin\replace "#!/usr/bin/perl" "#!C:\perl\bin\perl" -- *.cgi *.pl
          </PRE
></FONT
></TD
></TR
></TABLE
><DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;              If your perl path is something else again, just follow the
              above examples and replace
              <TT
CLASS="filename"
>/usr/local/bin/perl</TT
> with your own perl path.
            </P
></TD
></TR
></TABLE
></DIV
><P
>&#13;            Once you've modified all your files, you'll also need to modify the
            <TT
CLASS="filename"
>t/002goodperl.t</TT
> test, as it tests that all
            shebang lines are equal to <TT
CLASS="filename"
>/usr/bin/perl</TT
>.
            (For more information on the test suite, please check out the 
            appropriate section in the <A
HREF="http://www.bugzilla.org/docs/developer.html#testsuite"
TARGET="_top"
>Developers'
            Guide</A
>.) Having done this, run the test itself:
            <TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;perl runtests.pl 2 --verbose
            </PRE
></FONT
></TD
></TR
></TABLE
>
            to ensure that you've modified all the relevant files.
          </P
><P
>&#13;            If using Apache on Windows, you can avoid the whole problem
            by setting the <A
HREF="http://httpd.apache.org/docs-2.0/mod/core.html#scriptinterpretersource"
TARGET="_top"
>&#13;            ScriptInterpreterSource</A
> directive to 'Registry'.
            (If using Apache 2 or higher, set it to 'Registry-Strict'.)
            ScriptInterperterSource requires a registry entry
            <SPAN
CLASS="QUOTE"
>"HKEY_CLASSES_ROOT\.cgi\Shell\ExecCGI\Command"</SPAN
> to
            associate .cgi files with your perl executable. If one does
            not already exist, create it with a default value of
           <SPAN
CLASS="QUOTE"
>"&#60;full path to perl&#62; -T"</SPAN
>, e.g.
           <SPAN
CLASS="QUOTE"
>"C:\Perl\bin\perl.exe -T"</SPAN
>.
          </P
></DIV
></DIV
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="faq-general-cookie"
></A
><B
>A.1.10. </B
>
            Is there an easy way to change the Bugzilla cookie name?
          </P
></DIV
><DIV
CLASS="answer"
><P
><B
> </B
>
            At present, no.
          </P
></DIV
></DIV
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="faq-mod-perl"
></A
><B
>A.1.11. </B
>
            Does bugzilla run under <TT
CLASS="filename"
>mod_perl</TT
>?
          </P
></DIV
><DIV
CLASS="answer"
><P
><B
> </B
>
            At present, no. Work is slowly taking place to remove global
            variables, use $cgi, and use DBI. These are all necessary for
            mod_perl (as well as being good for other reasons). Visit 
            <A
HREF="https://bugzilla.mozilla.org/show_bug.cgi?id=87406"
TARGET="_top"
>&#13;            bug 87406</A
> to view the discussion and progress.
          </P
></DIV
></DIV
></DIV
><DIV
CLASS="qandadiv"
><H3
><A
NAME="faq-phb"
></A
>2. Managerial Questions</H3
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="faq-phb-client"
></A
><B
>A.2.1. </B
>
            Is Bugzilla web-based, or do you have to have specific software or
            a specific operating system on your machine?
          </P
></DIV
><DIV
CLASS="answer"
><P
><B
> </B
>
            It is web and e-mail based.
          </P
></DIV
></DIV
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="faq-phb-priorities"
></A
><B
>A.2.2. </B
>
            Does Bugzilla allow us to define our own priorities and levels?
            Do we have complete freedom to change the labels of fields and
            format of them, and the choice of acceptable values?
          </P
></DIV
><DIV
CLASS="answer"
><P
><B
> </B
>
            Yes. However, modifying some fields, notably those related to bug
            progression states, also require adjusting the program logic to
            compensate for the change.
          </P
><P
>&#13;            There is no GUI for adding fields to Bugzilla at this
            time. You can follow development of this feature in 
            <A
HREF="http://bugzilla.mozilla.org/show_bug.cgi?id=91037"
TARGET="_top"
>bug 91037</A
>
          </P
></DIV
></DIV
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="faq-phb-reporting"
></A
><B
>A.2.3. </B
>
            Does Bugzilla provide any reporting features, metrics, graphs,
            etc? You know, the type of stuff that management likes to see. :)
          </P
></DIV
><DIV
CLASS="answer"
><P
><B
> </B
>
            Yes. Look at <A
HREF="http://bugzilla.mozilla.org/report.cgi"
TARGET="_top"
>http://bugzilla.mozilla.org/report.cgi</A
>
            for samples of what Bugzilla can do in reporting and graphing.
            Fuller documentation is provided in <A
HREF="#reporting"
>Section 6.11</A
>.
          </P
><P
>&#13;            If you can not get the reports you want from the included reporting
            scripts, it is possible to hook up a professional reporting package
            such as Crystal Reports using ODBC. If you choose to do this,
            beware that giving direct access to the database does contain some
            security implications. Even if you give read-only access to the
            bugs database it will bypass the secure bugs features of Bugzilla.
          </P
></DIV
></DIV
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="faq-phb-email"
></A
><B
>A.2.4. </B
>
            Is there email notification? If so, what do you see
            when you get an email?
          </P
></DIV
><DIV
CLASS="answer"
><P
><B
> </B
>
            Email notification is user-configurable. By default, the bug id
            and summary of the bug report accompany each email notification,
            along with a list of the changes made.
          </P
></DIV
></DIV
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="faq-phb-emailapp"
></A
><B
>A.2.5. </B
>
            Do users have to have any particular
            type of email application?
          </P
></DIV
><DIV
CLASS="answer"
><P
><B
> </B
>
            Bugzilla email is sent in plain text, the most compatible
            mail format on the planet.
            <DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;                If you decide to use the bugzilla_email integration features
                to allow Bugzilla to record responses to mail with the
                associated bug, you may need to caution your users to set
                their mailer to <SPAN
CLASS="QUOTE"
>"respond to messages in the format in
                which they were sent"</SPAN
>. For security reasons Bugzilla
                ignores HTML tags in comments, and if a user sends HTML-based
                email into Bugzilla the resulting comment looks downright awful.
              </P
></TD
></TR
></TABLE
></DIV
>
          </P
></DIV
></DIV
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="faq-phb-data"
></A
><B
>A.2.6. </B
>
            Does Bugzilla allow data to be imported and exported? If I had
            outsiders write up a bug report using a MS Word bug template,
            could that template be imported into <SPAN
CLASS="QUOTE"
>"matching"</SPAN
>
            fields? If I wanted to take the results of a query and export
            that data to MS Excel, could I do that?
          </P
></DIV
><DIV
CLASS="answer"
><P
><B
> </B
>
            Bugzilla can output buglists as HTML (the default), CSV or RDF.
            The link for CSV can be found at the bottom of the buglist in HTML
            format. This CSV format can easily be imported into MS Excel or
            other spreadsheet applications.
          </P
><P
>&#13;            To use the RDF format of the buglist it is necessary to append a
            <SAMP
CLASS="computeroutput"
>&#38;ctype=rdf</SAMP
> to the URL. RDF
            is meant to be machine readable and thus it is assumed that the
            URL would be generated programmatically so there is no user visible
            link to this format.
          </P
><P
>&#13;            Currently the only script included with Bugzilla that can import
            data is <TT
CLASS="filename"
>importxml.pl</TT
> which is intended to be
            used for importing the data generated by the XML ctype of
            <TT
CLASS="filename"
>show_bug.cgi</TT
> in association with bug moving.
            Any other use is left as an exercise for the user.
          </P
><P
>&#13;            There are also scripts included in the <TT
CLASS="filename"
>contrib/</TT
>
            directory for using e-mail to import information into Bugzilla,
            but these scripts are not currently supported and included for
            educational purposes.
          </P
></DIV
></DIV
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="faq-phb-l10n"
></A
><B
>A.2.7. </B
>
            Has anyone converted Bugzilla to another language to be
            used in other countries? Is it localizable?
          </P
></DIV
><DIV
CLASS="answer"
><P
><B
> </B
>
            Yes. For more information including available translated templates,
            see <A
HREF="http://www.bugzilla.org/download.html#localizations"
TARGET="_top"
>http://www.bugzilla.org/download.html#localizations</A
>.
            Some admin interfaces have been templatized (for easy localization)
            but many of them are still available in English only. Also, there
            may be issues with the charset not being declared. See <A
HREF="http://bugzilla.mozilla.org/show_bug.cgi?id=126266"
TARGET="_top"
>bug 126226</A
>
            for more information.
          </P
></DIV
></DIV
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="faq-phb-reports"
></A
><B
>A.2.8. </B
>
            Can a user create and save reports?
            Can they do this in Word format? Excel format?
          </P
></DIV
><DIV
CLASS="answer"
><P
><B
> </B
>
            Yes. No. Yes (using the CSV format).
          </P
></DIV
></DIV
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="faq-phb-backup"
></A
><B
>A.2.9. </B
>
            Are there any backup features provided?
          </P
></DIV
><DIV
CLASS="answer"
><P
><B
> </B
>
            MySQL, the database back-end for Bugzilla, allows hot-backup
            of data. You can find strategies for dealing with backup
            considerations at <A
HREF="http://www.mysql.com/doc/B/a/Backup.html"
TARGET="_top"
>http://www.mysql.com/doc/B/a/Backup.html</A
>.
          </P
></DIV
></DIV
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="faq-phb-maintenance"
></A
><B
>A.2.10. </B
>
            What type of human resources are needed to be on staff to install
            and maintain Bugzilla? Specifically, what type of skills does the
            person need to have? I need to find out what types of individuals
            would we need to hire and how much would that cost if we were to
            go with Bugzilla vs. buying an <SPAN
CLASS="QUOTE"
>"out-of-the-box"</SPAN
>
            solution.
          </P
></DIV
><DIV
CLASS="answer"
><P
><B
> </B
>
            If Bugzilla is set up correctly from the start, continuing
            maintenance needs are minimal and can be done easily using
            the web interface.
          </P
><P
>&#13;            Commercial Bug-tracking software typically costs somewhere
            upwards of $20,000 or more for 5-10 floating licenses. Bugzilla
            consultation is available from skilled members of the newsgroup.
            Simple questions are answered there and then.
          </P
></DIV
></DIV
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="faq-phb-installtime"
></A
><B
>A.2.11. </B
>
            What time frame are we looking at if we decide to hire people
            to install and maintain the Bugzilla? Is this something that
            takes hours or days to install and a couple of hours per week
            to maintain and customize, or is this a multi-week install process,
            plus a full time job for 1 person, 2 people, etc?
          </P
></DIV
><DIV
CLASS="answer"
><P
><B
> </B
>
            It all depends on your level of commitment. Someone with much
            Bugzilla experience can get you up and running in less than a day,
            and your Bugzilla install can run untended for years. If your
            Bugzilla strategy is critical to your business workflow, hire
            somebody to who has reasonable Perl skills, and a familiarity
            with the operating system on which Bugzilla will be running,
            and have them handle your process management, bug-tracking
            maintenance, and local customization.
          </P
></DIV
></DIV
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="faq-phb-cost"
></A
><B
>A.2.12. </B
>
            Is there any licensing fee or other fees for using Bugzilla? Any
            out-of-pocket cost other than the bodies needed as identified above?
          </P
></DIV
><DIV
CLASS="answer"
><P
><B
> </B
>
            No. Bugzilla, Perl, the Template Toolkit, and all other support
            software needed to make Bugzilla work can be downloaded for free.
            MySQL -- the database used by Bugzilla -- is also open-source, but
            they ask that if you find their product valuable, you purchase a
            support contract from them that suits your needs.
          </P
></DIV
></DIV
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="faq-phb-renameBugs"
></A
><B
>A.2.13. </B
>
            We don't like referring to problems as 'bugs'. Can we change that?
          </P
></DIV
><DIV
CLASS="answer"
><P
><B
> </B
>
            Yes! As of Bugzilla 2.18, it is a simple matter to change the
            word 'bug' into whatever word/phrase is used by your organization.
            See the documentation on Customization for more details,
            specifically <A
HREF="#template-specific"
>Section 5.1.5</A
>.
          </P
></DIV
></DIV
></DIV
><DIV
CLASS="qandadiv"
><H3
><A
NAME="faq-admin"
></A
>3. Administrative Questions</H3
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="faq-admin-midair"
></A
><B
>A.3.1. </B
>
            Does Bugzilla provide record locking when there is simultaneous
            access to the same bug? Does the second person get a notice
            that the bug is in use or how are they notified?
          </P
></DIV
><DIV
CLASS="answer"
><P
><B
> </B
>
            Bugzilla does not lock records. It provides mid-air collision
            detection -- which means that it warns a user when a commit is
            about to conflict with commits recently made by another user,
            and offers the second user a choice of options to deal with
            the conflict.
          </P
></DIV
></DIV
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="faq-admin-livebackup"
></A
><B
>A.3.2. </B
>
            Can users be on the system while a backup is in progress?
          </P
></DIV
><DIV
CLASS="answer"
><P
><B
> </B
>
            Yes, but commits to the database must wait until the tables
            are unlocked. Bugzilla databases are typically very small,
            and backups routinely take less than a minute. If your database
            is larger, you may want to look into alternate backup
            techniques, such as database replication, or backing up from
            a read-only mirror. (Read up on these in the MySQL docs
            on the MySQL site.)
          </P
></DIV
></DIV
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="faq-admin-cvsupdate"
></A
><B
>A.3.3. </B
>
            How can I update the code and the database using CVS?
          </P
></DIV
><DIV
CLASS="answer"
><P
><B
> </B
>
            <P
></P
><OL
TYPE="1"
><LI
><P
>&#13;                  Make a backup of both your Bugzilla directory and the
                  database. For the Bugzilla directory this is as easy as
                  doing <B
CLASS="command"
>cp -rp bugzilla bugzilla.bak</B
>.
                  For the database, there's a number of options - see the
                  MySQL docs and pick the one that fits you best (the easiest
                  is to just make a physical copy of the database on the disk,
                  but you have to have the database server shut down to do
                  that without risking dataloss).
                </P
></LI
><LI
><P
>&#13;                  Make the Bugzilla directory your current directory.
                </P
></LI
><LI
><P
>&#13;                  Use <B
CLASS="command"
>cvs -q update -AdP</B
> if you want to
                  update to the tip or
                  <B
CLASS="command"
>cvs -q update -dP -rTAGNAME</B
>
                  if you want a specific version (in that case you'll have to
                  replace TAGNAME with a CVS tag name such as BUGZILLA-2_16_5).
                </P
><P
>&#13;                  If you've made no local changes, this should be very clean.
                  If you have made local changes, then watch the cvs output
                  for C results. If you get any lines that start with a C
                  it means there  were conflicts between your local changes
                  and what's in CVS. You'll need to fix those manually before
                  continuing.
                </P
></LI
><LI
><P
>&#13;                  After resolving any conflicts that the cvs update operation
                  generated, running <B
CLASS="command"
>./checksetup.pl</B
> will
                  take care of updating the database for you as well as any
                  other changes required for the new version to operate.
                </P
><DIV
CLASS="warning"
><P
></P
><TABLE
CLASS="warning"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/warning.gif"
HSPACE="5"
ALT="Warning"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;                    Once you run checksetup.pl, the only way to go back is
                    to restore the database backups. You can't
                    <SPAN
CLASS="QUOTE"
>"downgrade"</SPAN
> the system cleanly under most
                    circumstances.
                  </P
></TD
></TR
></TABLE
></DIV
></LI
></OL
>
          </P
><P
>&#13;            See also the instructions in <A
HREF="#upgrade-cvs"
>Section 3.11.2.1</A
>.
          </P
></DIV
></DIV
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="faq-admin-enable-unconfirmed"
></A
><B
>A.3.4. </B
>
            How do I make it so that bugs can have an UNCONFIRMED status?
          </P
></DIV
><DIV
CLASS="answer"
><P
><B
> </B
>
            To use the UNCONFIRMED status, you must have the 'usevotes'
            parameter set to <SPAN
CLASS="QUOTE"
>"On"</SPAN
>. You must then visit the
            <TT
CLASS="filename"
>editproducts.cgi</TT
> page and set the <SPAN
CLASS="QUOTE"
>"
            Number of votes a bug in this product needs to automatically
            get out of the UNCONFIRMED state"</SPAN
> to be a non-zero number.
            (You will have to do this for each product that wants to use
            the UNCONFIRMED state.) If you do not actually want users to be
            able to vote for bugs entered against this product, leave the
            <SPAN
CLASS="QUOTE"
>"Maximum votes per person"</SPAN
> value at '0'.
          </P
><P
>&#13;            There is work being done to decouple the UNCONFIRMED state from
            the 'usevotes' parameter for future versions of Bugzilla.
            Follow the discussion and progress at <A
HREF="https://bugzilla.mozilla.org/show_bug.cgi?id=162060"
TARGET="_top"
>bug
            162060</A
>.
          </P
></DIV
></DIV
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="faq-admin-moving"
></A
><B
>A.3.5. </B
>
            How do I move a Bugzilla installation from one machine to another?
          </P
></DIV
><DIV
CLASS="answer"
><P
><B
> </B
>
            Use mysqldump to make a backup of the bugs database. For a
            typical Bugzilla setup, such a command might look like this:
            <TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;/usr/bin/mysqldump -u(username) -p(password) --database bugs &#62; bugzilla-backup.txt
            </PRE
></FONT
></TD
></TR
></TABLE
>
            See the <A
HREF="http://dev.mysql.com/doc/mysql/en/mysqldump.html"
TARGET="_top"
>&#13;            mysqldump documentation</A
> for more information on using 
            the tool, including how to restore your copy onto the destination
            machine.
          </P
><DIV
CLASS="warning"
><P
></P
><TABLE
CLASS="warning"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/warning.gif"
HSPACE="5"
ALT="Warning"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;              Depending on the size of your database, and the power of your
              machine, the mysqldump command could be running long enough
              that the password would be visible to someone using the
              <B
CLASS="command"
>ps</B
> command. If you are on a multi-user
              machine, and this is a concern to you, create an entry in
              the file <TT
CLASS="filename"
>~/.my.cnf</TT
> that looks like this:
              <TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;[mysqldump]
user=bugs
password=mypassword
              </PRE
></FONT
></TD
></TR
></TABLE
>
              and then leave the 'user' and 'password' params out of the
              command line.
            </P
></TD
></TR
></TABLE
></DIV
><P
>&#13;            On your new machine, follow the instructions found in <A
HREF="#installing-bugzilla"
>Chapter 2</A
> as far as setting up the physical
            environment of the new machine with perl, webserver, modules, etc. 
            Having done that, you can either: copy your entire Bugzilla
            directory from the old machine to a new one (if you want to keep
            your existing code and modifications), or download a newer version
            (if you are planning to upgrade at the same time). Even if you are
            upgrading to clean code, you will still want to bring over the 
            <TT
CLASS="filename"
>localconfig</TT
> file, and the 
            <TT
CLASS="filename"
>data</TT
> directory from the
            old machine, as they contain configuration information that you 
            probably won't want to re-create.
          </P
><DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;              If the location or port number of your SQL server changed
              as part of the move, you'll need to update the appropriate
              variables in localconfig before taking the next step.
            </P
></TD
></TR
></TABLE
></DIV
><P
>&#13;            Once you have your code in place, and your database has
            been restored from the backup you made in step 1, run
            <B
CLASS="command"
>checksetup.pl</B
>. This will upgrade your
            database (if necessary), rebuild your templates, etc.
          </P
></DIV
></DIV
></DIV
><DIV
CLASS="qandadiv"
><H3
><A
NAME="faq-security"
></A
>4. Bugzilla Security</H3
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="faq-security-mysql"
></A
><B
>A.4.1. </B
>
            How do I completely disable MySQL security if it's giving
            me problems? (I've followed the instructions in the installation
            section of this guide...)
          </P
></DIV
><DIV
CLASS="answer"
><P
><B
> </B
>
            Run MySQL like this: <B
CLASS="command"
>mysqld --skip-grant-tables</B
>.
            Please remember that <EM
>this makes MySQL as secure as
            taping a $100 to the floor of a football stadium bathroom for
            safekeeping.</EM
> 
          </P
><DIV
CLASS="warning"
><P
></P
><TABLE
CLASS="warning"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/warning.gif"
HSPACE="5"
ALT="Warning"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;              This can't be stressed enough. Doing this is a bad idea.
              Please consult <A
HREF="#security-mysql"
>Section 4.2</A
> of this guide
              and the MySQL documentation for better solutions.
            </P
></TD
></TR
></TABLE
></DIV
></DIV
></DIV
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="faq-security-knownproblems"
></A
><B
>A.4.2. </B
>
            Are there any security problems with Bugzilla?
          </P
></DIV
><DIV
CLASS="answer"
><P
><B
> </B
>
            The Bugzilla code has undergone a reasonably complete security
            audit, and user-facing CGIs run under Perl's taint mode. However, 
            it is recommended that you closely examine permissions on your
            Bugzilla installation, and follow the recommended security
            guidelines found in The Bugzilla Guide.
          </P
></DIV
></DIV
></DIV
><DIV
CLASS="qandadiv"
><H3
><A
NAME="faq-email"
></A
>5. Bugzilla Email</H3
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="faq-email-nomail"
></A
><B
>A.5.1. </B
>
            I have a user who doesn't want to receive any more email
            from Bugzilla. How do I stop it entirely for this user?
          </P
></DIV
><DIV
CLASS="answer"
><P
><B
> </B
>
            The user can stop Bugzilla from sending any mail by unchecking
            all boxes on the 'Edit prefs' -&#62; 'Email settings' page.
            (As of 2.18,this is made easier by the addition of a 'Disable
            All Mail' button.) Alternately, you can add their email address
            to the <TT
CLASS="filename"
>data/nomail</TT
> file (one email address
            per line). This will override their personal preferences, and
            they will never be sent mail again.
          </P
></DIV
></DIV
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="faq-email-testing"
></A
><B
>A.5.2. </B
>
            I'm evaluating/testing Bugzilla, and don't want it to send email
            to anyone but me. How do I do it?
          </P
></DIV
><DIV
CLASS="answer"
><P
><B
> </B
>
            To disable email, set the
            <VAR
CLASS="option"
>mail_delivery_method</VAR
> parameter to
            <VAR
CLASS="literal"
>none</VAR
> (2.20 and later), or
            <TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>$enableSendMail</PRE
></FONT
></TD
></TR
></TABLE
> parameter to '0'
            in either <TT
CLASS="filename"
>BugMail.pm</TT
> (2.18 and later) or 
            <TT
CLASS="filename"
>processmail</TT
> (up to 2.16.x).
          </P
><DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;              Up to 2.16.x, changing
              <TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>$enableSendMail</PRE
></FONT
></TD
></TR
></TABLE
>
              will only affect bugmail; email related to password changes,
              email address changes, bug imports, flag changes, etc. will
              still be sent out. As of the final release of 2.18, however,
              the above step will disable <EM
>all</EM
> mail
              sent from Bugzilla for any purpose.
            </P
></TD
></TR
></TABLE
></DIV
><P
>&#13;            To have bugmail (and only bugmail) redirected to you instead of
            its intended recipients, leave
            <TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>$enableSendMail</PRE
></FONT
></TD
></TR
></TABLE
> alone;
            instead, edit the <SPAN
CLASS="QUOTE"
>"newchangedmail"</SPAN
> parameter
            as follows:
          </P
><P
></P
><UL
><LI
><P
>&#13;                Replace <SPAN
CLASS="QUOTE"
>"To:"</SPAN
> with <SPAN
CLASS="QUOTE"
>"X-Real-To:"</SPAN
>
              </P
></LI
><LI
><P
>&#13;                Replace <SPAN
CLASS="QUOTE"
>"Cc:"</SPAN
> with <SPAN
CLASS="QUOTE"
>"X-Real-CC:"</SPAN
>
              </P
></LI
><LI
><P
>&#13;                Add a <SPAN
CLASS="QUOTE"
>"To: %lt;your_email_address&#62;"</SPAN
>
              </P
></LI
></UL
></DIV
></DIV
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="faq-email-whine"
></A
><B
>A.5.3. </B
>
            I want whineatnews.pl to whine at something other than new and
            reopened bugs. How do I do it?
          </P
></DIV
><DIV
CLASS="answer"
><P
><B
> </B
>
            For older versions of Bugzilla, you may be able to apply 
            Klaas Freitag's patch for <SPAN
CLASS="QUOTE"
>"whineatassigned"</SPAN
>,
            which can be found in
            <A
HREF="http://bugzilla.mozilla.org/show_bug.cgi?id=6679"
TARGET="_top"
>bug
            6679</A
>. Note that this patch was made in 2000, so it may take
            some work to apply cleanly to any releases of Bugzilla newer than
            that, but you can use it as a starting point.
          </P
><P
>&#13;            An updated (and much-expanded) version of this functionality is
            due to be released as part of Bugzilla 2.20; see 
            <A
HREF="http://bugzilla.mozilla.org/show_bug.cgi?id=185090"
TARGET="_top"
>bug
            185090</A
> for the discussion, and for more up-to-date patches
            if you just can't wait.
          </P
></DIV
></DIV
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="faq-email-mailif"
></A
><B
>A.5.4. </B
>
            How do I set up the email interface to submit/change bugs via email?
          </P
></DIV
><DIV
CLASS="answer"
><P
><B
> </B
>
            You can find an updated README.mailif file in the contrib/ directory
            of your Bugzilla distribution that walks you through the setup.
          </P
></DIV
></DIV
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="faq-email-sendmailnow"
></A
><B
>A.5.5. </B
>
            Email takes FOREVER to reach me from Bugzilla -- it's
            extremely slow. What gives?
          </P
></DIV
><DIV
CLASS="answer"
><P
><B
> </B
>
            If you are using <SPAN
CLASS="application"
>sendmail</SPAN
>, try
            enabling <VAR
CLASS="option"
>sendmailnow</VAR
> in
            <TT
CLASS="filename"
>editparams.cgi</TT
>. For earlier versions of
            <SPAN
CLASS="application"
>sendmail</SPAN
>, one could achieve
            significant performance improvement in the UI (at the cost of
            delaying the sending of mail) by setting this parameter to
            <VAR
CLASS="literal"
>off</VAR
>. Sites with
            <SPAN
CLASS="application"
>sendmail</SPAN
> version 8.12 (or higher)
            should leave this <VAR
CLASS="literal"
>on</VAR
>, as they will not see
            any performance benefit.
          </P
><P
>&#13;            If you are using an alternate
            <A
HREF="#gloss-mta"
><I
CLASS="glossterm"
>MTA</I
></A
>, make sure the
            options given in <TT
CLASS="filename"
>Bugzilla/BugMail.pm</TT
>
            and any other place where <SPAN
CLASS="application"
>sendmail</SPAN
>
            is called are correct for your MTA.
          </P
></DIV
></DIV
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="faq-email-nonreceived"
></A
><B
>A.5.6. </B
>
             How come email from Bugzilla changes never reaches me?
          </P
></DIV
><DIV
CLASS="answer"
><P
><B
> </B
>
            Double-check that you have not turned off email in your user
            preferences. Confirm that Bugzilla is able to send email by
            visiting the <SPAN
CLASS="QUOTE"
>"Log In"</SPAN
> link of your Bugzilla
            installation and clicking the <SPAN
CLASS="QUOTE"
>"Submit Request"</SPAN
>
            button after entering your email address.
          </P
><P
>&#13;            If you never receive mail from Bugzilla, chances are you do
            not have sendmail in "/usr/lib/sendmail". Ensure sendmail
            lives in, or is symlinked to, "/usr/lib/sendmail".
          </P
><P
>&#13;            If you are using an MTA other than
            <SPAN
CLASS="application"
>sendmail</SPAN
> the
            <VAR
CLASS="option"
>sendmailnow</VAR
> param must be set to
            <VAR
CLASS="literal"
>on</VAR
> or no mail will be sent.
          </P
></DIV
></DIV
></DIV
><DIV
CLASS="qandadiv"
><H3
><A
NAME="faq-db"
></A
>6. Bugzilla Database</H3
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="faq-db-corrupted"
></A
><B
>A.6.1. </B
>
            I think my database might be corrupted, or contain
            invalid entries. What do I do?
          </P
></DIV
><DIV
CLASS="answer"
><P
><B
> </B
>
            Run the <SPAN
CLASS="QUOTE"
>"sanity check"</SPAN
> utility
            (<TT
CLASS="filename"
>sanitycheck.cgi</TT
>) from your web browser
            to see! If it finishes without errors, you're
            <EM
>probably</EM
> OK. If it doesn't come back
            OK (i.e. any red letters), there are certain things
            Bugzilla can recover from and certain things it can't. If
            it can't auto-recover, I hope you're familiar with
            mysqladmin commands or have installed another way to
            manage your database. Sanity Check, although it is a good
            basic check on your database integrity, by no means is a
            substitute for competent database administration and
            avoiding deletion of data. It is not exhaustive, and was
            created to do a basic check for the most common problems
            in Bugzilla databases.
          </P
></DIV
></DIV
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="faq-db-manualedit"
></A
><B
>A.6.2. </B
>
            I want to manually edit some entries in my database. How?
          </P
></DIV
><DIV
CLASS="answer"
><P
><B
> </B
>
            There is no facility in Bugzilla itself to do this. It's also
            generally not a smart thing to do if you don't know exactly what
            you're doing. If you understand SQL, though, you can use the
            <B
CLASS="command"
>mysql</B
> command line utility to manually insert,
            delete and modify table information. There are also more intuitive
            GUI clients available. Personal favorites of the Bugzilla team
            are <A
HREF="http://www.phpmyadmin.net/"
TARGET="_top"
>phpMyAdmin</A
>
            and <A
HREF="http://www.mysql.com/products/mysqlcc/"
TARGET="_top"
>MySQL
            Control Center</A
>.
          </P
><P
>&#13;            Remember, backups are your friend. Everyone makes mistakes, and
            it's nice to have a safety net in case you mess something up.
            Consider using <B
CLASS="command"
>mysqldump</B
> to make a duplicate
            of your database before altering it manually.
          </P
></DIV
></DIV
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="faq-db-permissions"
></A
><B
>A.6.3. </B
>
            I think I've set up MySQL permissions correctly, but Bugzilla still
            can't connect.
          </P
></DIV
><DIV
CLASS="answer"
><P
><B
> </B
>
            Try running MySQL from its binary:
            <B
CLASS="command"
>mysqld --skip-grant-tables</B
>.
            This will allow you to completely rule out grant tables as the
            cause of your frustration. If this Bugzilla is able to connect
            at this point then you need to check that you have granted proper
            permission to the user password combo defined in
            <TT
CLASS="filename"
>localconfig</TT
>.
          </P
><DIV
CLASS="warning"
><P
></P
><TABLE
CLASS="warning"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/warning.gif"
HSPACE="5"
ALT="Warning"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;              Running MySQL with this command line option is very insecure and
              should only be done when not connected to the external network
              as a troubleshooting step.
            </P
></TD
></TR
></TABLE
></DIV
></DIV
></DIV
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="faq-db-synchronize"
></A
><B
>A.6.4. </B
>
            How do I synchronize bug information among multiple
            different Bugzilla databases?
          </P
></DIV
><DIV
CLASS="answer"
><P
><B
> </B
>
            Well, you can synchronize or you can move bugs.
            Synchronization will only work one way -- you can create
            a read-only copy of the database at one site, and have it
            regularly updated at intervals from the main database.
          </P
><P
>&#13;            MySQL has some synchronization features built-in to the
            latest releases. It would be great if someone looked into
            the possibilities there and provided a report to the
            newsgroup on how to effectively synchronize two Bugzilla
            installations.
          </P
><P
>&#13;            If you simply need to transfer bugs from one Bugzilla to another,
            checkout the <SPAN
CLASS="QUOTE"
>"move.pl"</SPAN
> script in the Bugzilla
            distribution.
          </P
></DIV
></DIV
></DIV
><DIV
CLASS="qandadiv"
><H3
><A
NAME="faq-nt"
></A
>7. Bugzilla and Win32</H3
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="faq-nt-easiest"
></A
><B
>A.7.1. </B
>
            What is the easiest way to run Bugzilla on Win32 (Win98+/NT/2K)?
          </P
></DIV
><DIV
CLASS="answer"
><P
><B
> </B
>
            Remove Windows. Install Linux. Install Bugzilla.
            The boss will never know the difference. B^)
          </P
><P
>&#13;            Seriously though, making Bugzilla work easily with Windows
            was one of the major goals of the 2.18 milestone. If the
            necessary components are in place (perl, a webserver, an MTA, etc.)
            then installation of Bugzilla on a Windows box should be no more
            difficult than on any other platform. As with any installation,
            we recommend that you carefully and completely follow the
            installation instructions in <A
HREF="#os-win32"
>Section 2.4.1</A
>.
          </P
><P
>&#13;            While doing so, don't forget to check out the very excellent guide
            to <A
HREF="http://www.bugzilla.org/docs/win32install.html"
TARGET="_top"
>&#13;            Installing Bugzilla on Microsoft Windows</A
> written by
            Byron Jones. Thanks, Byron!
          </P
></DIV
></DIV
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="faq-nt-bundle"
></A
><B
>A.7.2. </B
>
            Is there a "Bundle::Bugzilla" equivalent for Win32?
          </P
></DIV
><DIV
CLASS="answer"
><P
><B
> </B
>
            Not currently. Bundle::Bugzilla enormously simplifies Bugzilla
            installation on UNIX systems. If someone can volunteer to
            create a suitable PPM bundle for Win32, it would be appreciated.
          </P
></DIV
></DIV
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="faq-nt-mappings"
></A
><B
>A.7.3. </B
>
            CGI's are failing with a <SPAN
CLASS="QUOTE"
>"something.cgi is not a valid
            Windows NT application"</SPAN
> error. Why?
          </P
></DIV
><DIV
CLASS="answer"
><P
><B
> </B
>
            Depending on what Web server you are using, you will have to
            configure the Web server to treat *.cgi files as CGI scripts.
            In IIS, you do this by adding *.cgi to the App Mappings with
            the &#60;path&#62;\perl.exe %s %s as the executable.
          </P
><P
>&#13;            Microsoft has some advice on this matter, as well:
            <A
NAME="AEN2969"
></A
><BLOCKQUOTE
CLASS="BLOCKQUOTE"
><P
>&#13;                <SPAN
CLASS="QUOTE"
>"Set application mappings. In the ISM, map the extension
                for the script file(s) to the executable for the script
                interpreter. For example, you might map the extension .py to
                Python.exe, the executable for the Python script interpreter.
                Note For the ActiveState Perl script interpreter, the extension
                '.pl' is associated with PerlIS.dll by default. If you want
                to change the association of .pl to perl.exe, you need to
                change the application mapping. In the mapping, you must add
                two percent (%) characters to the end of the pathname for
                perl.exe, as shown in this example: 
                <B
CLASS="command"
>c:\perl\bin\perl.exe %s %s</B
>"</SPAN
>
              </P
></BLOCKQUOTE
>
          </P
></DIV
></DIV
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="faq-nt-dbi"
></A
><B
>A.7.4. </B
>
            I'm having trouble with the perl modules for NT not being
            able to talk to the database.
          </P
></DIV
><DIV
CLASS="answer"
><P
><B
> </B
>
            Your modules may be outdated or inaccurate. Try:
            <P
></P
><OL
TYPE="1"
><LI
><P
>&#13;                  Hitting http://www.activestate.com/ActivePerl
                </P
></LI
><LI
><P
>&#13;                  Download ActivePerl
                </P
></LI
><LI
><P
>&#13;                  Go to your prompt
                </P
></LI
><LI
><P
>&#13;                  Type 'ppm'
                </P
></LI
><LI
><P
>&#13;                  <SAMP
CLASS="prompt"
>PPM&#62;</SAMP
> <B
CLASS="command"
>install DBI DBD-mysql GD</B
>
                </P
></LI
></OL
>
            I reckon TimeDate and Data::Dumper come with the activeperl.
            You can check the ActiveState site for packages for installation
            through PPM. <A
HREF="http://www.activestate.com/Packages/"
TARGET="_top"
>http://www.activestate.com/Packages/</A
>.
          </P
></DIV
></DIV
></DIV
><DIV
CLASS="qandadiv"
><H3
><A
NAME="faq-use"
></A
>8. Bugzilla Usage</H3
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="faq-use-changeaddress"
></A
><B
>A.8.1. </B
>
            How do I change my user name (email address) in Bugzilla?
          </P
></DIV
><DIV
CLASS="answer"
><P
><B
> </B
>
            New in 2.16 - go to the Account section of the Preferences. You
            will be emailed at both addresses for confirmation.
          </P
></DIV
></DIV
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="faq-use-query"
></A
><B
>A.8.2. </B
>
            The query page is very confusing.
            Isn't there a simpler way to query?
          </P
></DIV
><DIV
CLASS="answer"
><P
><B
> </B
>
            The interface was simplified by a UI designer for 2.16. Further
            suggestions for improvement are welcome, but we won't sacrifice
            power for simplicity.
          </P
><P
>&#13;            As of 2.18, there is also a 'simpler' search available. At the top
            of the search page are two links; <SPAN
CLASS="QUOTE"
>"Advanced Search"</SPAN
>
            will take you to the familiar full-power/full-complexity search
            page. The <SPAN
CLASS="QUOTE"
>"Find a Specific Bug"</SPAN
> link will take you
            to a much-simplified page where you can pick a product and
            status (open,closed, or both), then enter words that appear in
            the bug you want to find. This search will scour the 'Summary'
            and 'Comment' fields, and return a list of bugs sorted so that
            the bugs with the most hits/matches are nearer to the top.
          </P
><DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;              Matches in the Summary will 'trump' matches in comments,
              and bugs with summary-matches will be placed higher in
              the buglist --  even if a lower-ranked bug has more matches
              in the comments section.
            </P
></TD
></TR
></TABLE
></DIV
><P
>&#13;            Bugzilla uses a cookie to remember which version of the page
            you visited last, and brings that page up when you next do a
            search. The default page for new users (or after an upgrade)
            is the 'simple' search.
          </P
></DIV
></DIV
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="faq-use-accept"
></A
><B
>A.8.3. </B
>
            I'm confused by the behavior of the <SPAN
CLASS="QUOTE"
>"Accept"</SPAN
>
            button in the Show Bug form. Why doesn't it assign the bug
            to me when I accept it?
          </P
></DIV
><DIV
CLASS="answer"
><P
><B
> </B
>
            The current behavior is acceptable to bugzilla.mozilla.org and
            most users. If you want to change this behavior, though, you
            have your choice of patches: 
            <P
></P
><TABLE
BORDER="0"
><TBODY
><TR
><TD
>&#13;                <A
HREF="http://bugzilla.mozilla.org/show_bug.cgi?id=35195"
TARGET="_top"
>Bug 35195</A
>
                seeks to add an <SPAN
CLASS="QUOTE"
>"...and accept the bug"</SPAN
> checkbox
                to the UI. It has two patches attached to it: 
                <A
HREF="http://bugzilla.mozilla.org/showattachment.cgi?attach_id=8029"
TARGET="_top"
>attachment 8029</A
>
                was originally created for Bugzilla 2.12, while 
                <A
HREF="http://bugzilla.mozilla.org/showattachment.cgi?attach_id=91372"
TARGET="_top"
>attachment 91372</A
>
                is an updated version for Bugzilla 2.16
              </TD
></TR
><TR
><TD
>&#13;                <A
HREF="http://bugzilla.mozilla.org/show_bug.cgi?id=37613"
TARGET="_top"
>Bug
                37613</A
> also provides two patches (against Bugzilla
                2.12): one to add a 'Take Bug' option, and the other to
                automatically reassign the bug on 'Accept'. 
              </TD
></TR
></TBODY
></TABLE
><P
></P
>
            These patches are all somewhat dated now, and cannot be applied
            directly, but they are simple enough to provide a guide on how
            Bugzilla can be customized and updated to suit your needs.
          </P
></DIV
></DIV
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="faq-use-attachment"
></A
><B
>A.8.4. </B
>
            I can't upload anything into the database via the
            <SPAN
CLASS="QUOTE"
>"Create Attachment"</SPAN
> link. What am I doing wrong?
          </P
></DIV
><DIV
CLASS="answer"
><P
><B
> </B
>
            The most likely cause is a very old browser or a browser that is
            incompatible with file upload via POST. Download the latest version
            of your favourite browser to handle uploads correctly.
          </P
></DIV
></DIV
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="faq-use-keyword"
></A
><B
>A.8.5. </B
>
            How do I change a keyword in Bugzilla, once some bugs are using it?
          </P
></DIV
><DIV
CLASS="answer"
><P
><B
> </B
>
            In the Bugzilla administrator UI, edit the keyword and
            it will let you replace the old keyword name with a new one.
            This will cause a problem with the keyword cache; run
            <B
CLASS="command"
>sanitycheck.cgi</B
> to fix it.
          </P
></DIV
></DIV
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="faq-use-close"
></A
><B
>A.8.6. </B
>
            Why can't I close bugs from the <SPAN
CLASS="QUOTE"
>"Change Several Bugs
            at Once"</SPAN
> page?
          </P
></DIV
><DIV
CLASS="answer"
><P
><B
> </B
>
            Simple answer; you can.
          </P
><P
>&#13;            The logic behind the page checks every bug in the list to
            determine legal state changes, and then only shows you controls
            to do things that could apply to <EM
>every</EM
> bug
            on the list. The reason for this is that if you try to do something
            illegal to a bug, the whole process will grind to a halt, and all
            changes after the failed one will <EM
>also</EM
> fail.
            Since that isn't a good outcome, the page doesn't even present
            you with the option.
          </P
><P
>&#13;            In practical terms, that means that in order to mark
            multiple bugs as CLOSED, then every bug on the page has to be
            either RESOLVED or VERIFIED already; if this is not the case,
            then the option to close the bugs will not appear on the page.
          </P
><P
>&#13;            The rationale is that if you pick one of the bugs that's not
            VERIFIED and try to CLOSE it, the bug change will fail
            miserably (thus killing any changes in the list after it
            while doing the bulk change) so it doesn't even give you the
            choice.
          </P
></DIV
></DIV
></DIV
><DIV
CLASS="qandadiv"
><H3
><A
NAME="faq-hacking"
></A
>9. Bugzilla Hacking</H3
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="faq-hacking-templatestyle"
></A
><B
>A.9.1. </B
>
            What kind of style should I use for templatization?
          </P
></DIV
><DIV
CLASS="answer"
><P
><B
> </B
>
            Gerv and Myk suggest a 2-space indent, with embedded code sections on
            their own line, in line with outer tags. Like this:</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;&#60;fred&#62;
[% IF foo %]
  &#60;bar&#62;
  [% FOREACH x = barney %]
    &#60;tr&#62;
      &#60;td&#62;
        [% x %]
      &#60;/td&#62;
    &#60;tr&#62;
  [% END %]
[% END %]
&#60;/fred&#62;
</PRE
></FONT
></TD
></TR
></TABLE
><P
> Myk also recommends you turn on PRE_CHOMP in the template
        initialization to prevent bloating of HTML with unnecessary whitespace.
        </P
><P
>Please note that many have differing opinions on this subject,
        and the existing templates in Bugzilla espouse both this and a 4-space
        style. Either is acceptable; the above is preferred.</P
></DIV
></DIV
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="faq-hacking-bugzillabugs"
></A
><B
>A.9.2. </B
>
            What bugs are in Bugzilla right now?
          </P
></DIV
><DIV
CLASS="answer"
><P
><B
> </B
>
            Try <A
HREF="http://bugzilla.mozilla.org/buglist.cgi?bug_status=NEW&#38;bug_status=ASSIGNED&#38;bug_status=REOPENED&#38;product=Bugzilla"
TARGET="_top"
>&#13;            this link</A
> to view current bugs or requests for
            enhancement for Bugzilla.
          </P
><P
>&#13;            You can view bugs marked for 2.20.2 release
            <A
HREF="http://bugzilla.mozilla.org/buglist.cgi?product=Bugzilla&#38;target_milestone=Bugzilla+&#38;bz-nextver;"
TARGET="_top"
>here</A
>.
            This list includes bugs for the 2.20.2 release that have already
            been fixed and checked into CVS. Please consult the
            <A
HREF="http://www.bugzilla.org/"
TARGET="_top"
>&#13;            Bugzilla Project Page</A
> for details on how to
            check current sources out of CVS so you can have these
            bug fixes early!
          </P
></DIV
></DIV
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="faq-hacking-priority"
></A
><B
>A.9.3. </B
>
            How can I change the default priority to a null value?
            For instance, have the default priority be <SPAN
CLASS="QUOTE"
>"---"</SPAN
>
            instead of <SPAN
CLASS="QUOTE"
>"P2"</SPAN
>?
          </P
></DIV
><DIV
CLASS="answer"
><P
><B
> </B
>
            This is well-documented in <A
HREF="http://bugzilla.mozilla.org/show_bug.cgi?id=49862"
TARGET="_top"
>bug
            49862</A
>. Ultimately, it's as easy as adding the
            <SPAN
CLASS="QUOTE"
>"---"</SPAN
> priority field to your localconfig file
            in the appropriate area, re-running checksetup.pl, and then
            changing the default priority in your browser using
            <B
CLASS="command"
>editparams.cgi</B
>. 
          </P
></DIV
></DIV
><DIV
CLASS="qandaentry"
><DIV
CLASS="question"
><P
><A
NAME="faq-hacking-patches"
></A
><B
>A.9.4. </B
>
            What's the best way to submit patches?  What guidelines
            should I follow?
          </P
></DIV
><DIV
CLASS="answer"
><P
><B
> </B
><P
></P
><OL
TYPE="1"
><LI
><P
>&#13;                  Enter a bug into bugzilla.mozilla.org for the <SPAN
CLASS="QUOTE"
>"<A
HREF="http://bugzilla.mozilla.org/enter_bug.cgi?product=Bugzilla"
TARGET="_top"
>Bugzilla</A
>"</SPAN
>
                  product.
                </P
></LI
><LI
><P
>&#13;                  Upload your patch as a unified diff (having used <SPAN
CLASS="QUOTE"
>"diff
                  -u"</SPAN
> against the <EM
>current sources</EM
>
                  checked out of CVS), or new source file by clicking
                  <SPAN
CLASS="QUOTE"
>"Create a new attachment"</SPAN
> link on the bug
                  page you've just created, and include any descriptions of
                  database changes you may make, into the bug ID you submitted
                  in step #1. Be sure and click the <SPAN
CLASS="QUOTE"
>"Patch"</SPAN
> checkbox
                  to indicate the text you are sending is a patch!
                </P
></LI
><LI
><P
>&#13;                  Announce your patch and the associated URL
                  (http://bugzilla.mozilla.org/show_bug.cgi?id=XXXXXX)
                  for discussion in the newsgroup
                  (netscape.public.mozilla.webtools). You'll get a
                  really good, fairly immediate reaction to the
                  implications of your patch, which will also give us
                  an idea how well-received the change would be.
                </P
></LI
><LI
><P
>&#13;                  If it passes muster with minimal modification, the
                  person to whom the bug is assigned in Bugzilla is
                  responsible for seeing the patch is checked into CVS.
                </P
></LI
><LI
><P
>&#13;                  Bask in the glory of the fact that you helped write
                  the most successful open-source bug-tracking software
                  on the planet :)
                </P
></LI
></OL
></P
></DIV
></DIV
></DIV
></DIV
></DIV
><DIV
CLASS="appendix"
><HR><H1
><A
NAME="troubleshooting"
></A
>Appendix B. Troubleshooting</H1
><P
>This section gives solutions to common Bugzilla installation
  problems. If none of the section headings seems to match your
  problem, read the general advice.
  </P
><DIV
CLASS="section"
><HR><H2
CLASS="section"
><A
NAME="general-advice"
>B.1. General Advice</A
></H2
><P
>If you can't get <TT
CLASS="filename"
>checksetup.pl</TT
> to run to 
    completion, it normally explains what's wrong and how to fix it.
    If you can't work it out, or if it's being uncommunicative, post 
    the errors in the 
    <A
HREF="news://news.mozilla.org/netscape.public.mozilla.webtools"
TARGET="_top"
>netscape.public.mozilla.webtools</A
>
    newsgroup.
    </P
><P
>If you have made it all the way through
    <A
HREF="#installation"
>Section 2.1</A
> (Installation) and
    <A
HREF="#configuration"
>Section 2.2</A
> (Configuration) but accessing the Bugzilla
    URL doesn't work, the first thing to do is to check your webserver error
    log. For Apache, this is often located at
    <TT
CLASS="filename"
>/etc/logs/httpd/error_log</TT
>. The error messages
    you see may be self-explanatory enough to enable you to diagnose and
    fix the problem. If not, see below for some commonly-encountered 
    errors. If that doesn't help, post the errors to the newsgroup.
    </P
><P
>&#13;      Bugzilla can also log all user-based errors (and many code-based errors)
      that occur, without polluting the web server error log.  To enable
      Bugzilla error logging, create a file that Bugzilla can write to, named
      <TT
CLASS="filename"
>errorlog</TT
>, in the Bugzilla <TT
CLASS="filename"
>data</TT
>
      directory.  Errors will be logged as they occur, and will include the type
      of the error, the IP address and username (if available) of the user who
      triggered the error, and the values of all environment variables; if a
      form was being submitted, the data in the form will also be included.
      To disable error logging, delete or rename the
      <TT
CLASS="filename"
>errorlog</TT
> file.
    </P
></DIV
><DIV
CLASS="section"
><HR><H2
CLASS="section"
><A
NAME="trbl-testserver"
>B.2. The Apache webserver is not serving Bugzilla pages</A
></H2
><P
>After you have run <B
CLASS="command"
>checksetup.pl</B
> twice,
    run <B
CLASS="command"
>testserver.pl http://yoursite.yourdomain/yoururl</B
>
    to confirm that your webserver is configured properly for
    Bugzilla.
    </P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;<SAMP
CLASS="prompt"
>bash$</SAMP
> ./testserver.pl http://landfill.bugzilla.org/bugzilla-tip
TEST-OK Webserver is running under group id in $webservergroup.
TEST-OK Got ant picture.
TEST-OK Webserver is executing CGIs.
TEST-OK Webserver is preventing fetch of http://landfill.bugzilla.org/bugzilla-tip/localconfig.
</PRE
></FONT
></TD
></TR
></TABLE
></DIV
><DIV
CLASS="section"
><HR><H2
CLASS="section"
><A
NAME="trbl-perlmodule"
>B.3. I installed a Perl module, but 
      <TT
CLASS="filename"
>checksetup.pl</TT
> claims it's not installed!</A
></H2
><P
>This could be caused by one of two things:</P
><P
></P
><OL
TYPE="1"
><LI
><P
>You have two versions of Perl on your machine. You are installing
        modules into one, and Bugzilla is using the other. Rerun the CPAN
        commands (or manual compile) using the full path to Perl from the 
        top of <TT
CLASS="filename"
>checksetup.pl</TT
>. This will make sure you 
        are installing the modules in the right place.
        </P
></LI
><LI
><P
>The permissions on your library directories are set incorrectly.
	They must, at the very least, be readable by the webserver user or
	group. It is recommended that they be world readable.
        </P
></LI
></OL
></DIV
><DIV
CLASS="section"
><HR><H2
CLASS="section"
><A
NAME="trbl-bundleBugzilla"
>B.4. Bundle::Bugzilla makes me upgrade to Perl 5.6.1</A
></H2
><P
>Try executing <B
CLASS="command"
>perl -MCPAN -e 'install CPAN'</B
>
    and then continuing.
    </P
><P
>Certain older versions of the CPAN toolset were somewhat naive about
    how to upgrade Perl modules. When a couple of modules got rolled into the
    core Perl distribution for 5.6.1, CPAN thought that the best way to get
    those modules up to date was to haul down the Perl distribution itself and
    build it. Needless to say, this has caused headaches for just about
    everybody. Upgrading to a newer version of CPAN with the
    commandline above should fix things.
    </P
></DIV
><DIV
CLASS="section"
><HR><H2
CLASS="section"
><A
NAME="trbl-dbdSponge"
>B.5. DBD::Sponge::db prepare failed</A
></H2
><P
>The following error message may appear due to a bug in DBD::mysql
    (over which the Bugzilla team have no control):
    </P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
> DBD::Sponge::db prepare failed: Cannot determine NUM_OF_FIELDS at D:/Perl/site/lib/DBD/mysql.pm line 248.
  SV = NULL(0x0) at 0x20fc444
  REFCNT = 1
  FLAGS = (PADBUSY,PADMY)
</PRE
></FONT
></TD
></TR
></TABLE
><P
>To fix this, go to 
    <TT
CLASS="filename"
>&#60;path-to-perl&#62;/lib/DBD/sponge.pm</TT
> 
    in your Perl installation and replace
    </P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
> my $numFields;
 if ($attribs-&#62;{'NUM_OF_FIELDS'}) {
     $numFields = $attribs-&#62;{'NUM_OF_FIELDS'};
 } elsif ($attribs-&#62;{'NAME'}) {
     $numFields = @{$attribs-&#62;{NAME}};
</PRE
></FONT
></TD
></TR
></TABLE
><P
>with</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
> my $numFields;
 if ($attribs-&#62;{'NUM_OF_FIELDS'}) {
     $numFields = $attribs-&#62;{'NUM_OF_FIELDS'};
 } elsif ($attribs-&#62;{'NAMES'}) {
     $numFields = @{$attribs-&#62;{NAMES}};
</PRE
></FONT
></TD
></TR
></TABLE
><P
>(note the S added to NAME.)</P
></DIV
><DIV
CLASS="section"
><HR><H2
CLASS="section"
><A
NAME="paranoid-security"
>B.6. cannot chdir(/var/spool/mqueue)</A
></H2
><P
>If you are installing Bugzilla on SuSE Linux, or some other
    distributions with <SPAN
CLASS="QUOTE"
>"paranoid"</SPAN
> security options, it is
    possible that the checksetup.pl script may fail with the error: 
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>cannot chdir(/var/spool/mqueue): Permission denied
</PRE
></FONT
></TD
></TR
></TABLE
>
    </P
><P
>This is because your <TT
CLASS="filename"
>/var/spool/mqueue</TT
>
    directory has a mode of <SAMP
CLASS="computeroutput"
>drwx------</SAMP
>.
    Type <B
CLASS="command"
>chmod 755 <TT
CLASS="filename"
>/var/spool/mqueue</TT
></B
>
    as root to fix this problem. This will allow any process running on your
    machine the ability to <EM
>read</EM
> the
    <TT
CLASS="filename"
>/var/spool/mqueue</TT
> directory.
    </P
></DIV
><DIV
CLASS="section"
><HR><H2
CLASS="section"
><A
NAME="trouble-filetemp"
>B.7. Your vendor has not defined Fcntl macro O_NOINHERIT</A
></H2
><P
>This is caused by a bug in the version of
    <SPAN
CLASS="productname"
>File::Temp</SPAN
> that is distributed with perl
    5.6.0. Many minor variations of this error have been reported:
    </P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>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.</PRE
></FONT
></TD
></TR
></TABLE
><P
>Numerous people have reported that upgrading to version 5.6.1
    or higher solved the problem for them. A less involved fix is to apply
    the following patch, which is also
    available as a <A
HREF="../xml/filetemp.patch"
TARGET="_top"
>patch file</A
>.
    </P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>--- 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 = &#38;$func();
     1;
   };
@@ -226,6 +227,7 @@
     # eg CGI::Carp
     local $SIG{__DIE__} = sub {};
     local $SIG{__WARN__} = sub {};
+    local *CORE::GLOBAL::die = sub {};
     $bit = &#38;$func();
     1;
   };</PRE
></FONT
></TD
></TR
></TABLE
></DIV
><DIV
CLASS="section"
><HR><H2
CLASS="section"
><A
NAME="trbl-relogin-everyone"
>B.8. Everybody is constantly being forced to relogin</A
></H2
><P
>The most-likely cause is that the <SPAN
CLASS="QUOTE"
>"cookiepath"</SPAN
> parameter
  is not set correctly in the Bugzilla configuration.  You can change this (if
  you're a Bugzilla administrator) from the editparams.cgi page via the web.
  </P
><P
>The value of the cookiepath parameter should be the actual directory
  containing your Bugzilla installation, <EM
>as seen by the end-user's
  web browser</EM
>. Leading and trailing slashes are mandatory. You can
  also set the cookiepath to any directory which is a parent of the Bugzilla
  directory (such as '/', the root directory). But you can't put something
  that isn't at least a partial match or it won't work. What you're actually
  doing is restricting the end-user's browser to sending the cookies back only
  to that directory.
  </P
><P
>How do you know if you want your specific Bugzilla directory or the
  whole site?
  </P
><P
>If you have only one Bugzilla running on the server, and you don't
  mind having other applications on the same server with it being able to see
  the cookies (you might be doing this on purpose if you have other things on
  your site that share authentication with Bugzilla), then you'll want to have
  the cookiepath set to "/", or to a sufficiently-high enough directory that
  all of the involved apps can see the cookies.
  </P
><DIV
CLASS="example"
><A
NAME="trbl-relogin-everyone-share"
></A
><P
><B
>Example B-1. Examples of urlbase/cookiepath pairs for sharing login cookies</B
></P
><A
NAME="AEN3176"
></A
><BLOCKQUOTE
CLASS="BLOCKQUOTE"
><P
CLASS="literallayout"
><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;urlbase&nbsp;is&nbsp;<A
HREF="http://bugzilla.mozilla.org/"
TARGET="_top"
>http://bugzilla.mozilla.org/</A
><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cookiepath&nbsp;is&nbsp;/<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;urlbase&nbsp;is&nbsp;<A
HREF="http://tools.mysite.tld/bugzilla/"
TARGET="_top"
>http://tools.mysite.tld/bugzilla/</A
><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;but&nbsp;you&nbsp;have&nbsp;http://tools.mysite.tld/someotherapp/&nbsp;which&nbsp;shares<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;authentication&nbsp;with&nbsp;your&nbsp;Bugzilla<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cookiepath&nbsp;is&nbsp;/<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</P
></BLOCKQUOTE
></DIV
><P
>On the other hand, if you have more than one Bugzilla running on the
   server (some people do - we do on landfill) then you need to have the
   cookiepath restricted enough so that the different Bugzillas don't
   confuse their cookies with one another.
   </P
><DIV
CLASS="example"
><A
NAME="trbl-relogin-everyone-restrict"
></A
><P
><B
>Example B-2. Examples of urlbase/cookiepath pairs to restrict the login cookie</B
></P
><A
NAME="AEN3183"
></A
><BLOCKQUOTE
CLASS="BLOCKQUOTE"
><P
CLASS="literallayout"
><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;urlbase&nbsp;is&nbsp;<A
HREF="http://landfill.bugzilla.org/bugzilla-tip/"
TARGET="_top"
>http://landfill.bugzilla.org/bugzilla-tip/</A
><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cookiepath&nbsp;is&nbsp;/bugzilla-tip/<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;urlbase&nbsp;is&nbsp;<A
HREF="http://landfill.bugzilla.org/bugzilla-2.16-branch/"
TARGET="_top"
>http://landfill.bugzilla.org/bugzilla-2.16-branch/</A
><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cookiepath&nbsp;is&nbsp;/bugzilla-2.16-branch/<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</P
></BLOCKQUOTE
></DIV
><P
>If you had cookiepath set to <SPAN
CLASS="QUOTE"
>"/"</SPAN
> at any point in the
    past and need to set it to something more restrictive
    (i.e. <SPAN
CLASS="QUOTE"
>"/bugzilla/"</SPAN
>), you can safely do this without
    requiring users to delete their Bugzilla-related cookies in their
    browser (this is true starting with Bugzilla 2.18 and Bugzilla 2.16.5).
    </P
></DIV
><DIV
CLASS="section"
><HR><H2
CLASS="section"
><A
NAME="AEN3190"
>B.9. Some users are constantly being forced to relogin</A
></H2
><P
>First, make sure cookies are enabled in the user's browser.
    </P
><P
>If that doesn't fix the problem, it may be that the user's ISP
     implements a rotating proxy server. This causes the user's effective IP
     address (the address which the Bugzilla server perceives him coming from)
     to change periodically. Since Bugzilla cookies are tied to a specific IP
     address, each time the effective address changes, the user will have to
     log in again.
     </P
><P
>If you are using 2.18 (or later), there is a
     parameter called <SPAN
CLASS="QUOTE"
>"loginnetmask"</SPAN
>, which you can use to set
     the number of bits of the user's IP address to require to be matched when
     authenticating the cookies. If you set this to something less than 32,
     then the user will be given a checkbox for <SPAN
CLASS="QUOTE"
>"Restrict this login to
     my IP address"</SPAN
> on the login screen, which defaults to checked. If
     they leave the box checked, Bugzilla will behave the same as it did
     before, requiring an exact match on their IP address to remain logged in.
     If they uncheck the box, then only the left side of their IP address (up
     to the number of bits you specified in the parameter) has to match to
     remain logged in.
     </P
></DIV
><DIV
CLASS="section"
><HR><H2
CLASS="section"
><A
NAME="trbl-index"
>B.10. <TT
CLASS="filename"
>index.cgi</TT
> doesn't show up unless specified in the URL</A
></H2
><P
>&#13;      You probably need to set up your web server in such a way that it
      will serve the index.cgi page as an index page.
    </P
><P
>&#13;      If you are using Apache, you can do this by adding 
      <TT
CLASS="filename"
>index.cgi</TT
> to the end of the 
      <SAMP
CLASS="computeroutput"
>DirectoryIndex</SAMP
> line
      as mentioned in <A
HREF="#http-apache"
>Section 2.2.4.1</A
>.
    </P
></DIV
><DIV
CLASS="section"
><HR><H2
CLASS="section"
><A
NAME="trbl-passwd-encryption"
>B.11. checksetup.pl reports "Client does not support authentication protocol
      requested by server..."</A
></H2
><P
>&#13;      This error is occurring because you are using the new password
      encryption that comes with MySQL 4.1, while your
      <TT
CLASS="filename"
>DBD::mysql</TT
> module was compiled against an
      older version of MySQL. If you recompile <TT
CLASS="filename"
>DBD::mysql</TT
>
      against the current MySQL libraries (or just obtain a newer version
      of this module) then the error may go away.
    </P
><P
>&#13;      If that does not fix the problem, or if you cannot recompile the
      existing module (e.g. you're running Windows) and/or don't want to
      replace it (e.g. you want to keep using a packaged version), then a
      workaround is available from the MySQL docs:
      <A
HREF="http://dev.mysql.com/doc/mysql/en/Old_client.html"
TARGET="_top"
>http://dev.mysql.com/doc/mysql/en/Old_client.html</A
>
    </P
></DIV
></DIV
><DIV
CLASS="appendix"
><HR><H1
><A
NAME="patches"
></A
>Appendix C. Contrib</H1
><P
>&#13;    There are a number of unofficial Bugzilla add-ons in the 
    <TT
CLASS="filename"
>$BUGZILLA_ROOT/contrib/</TT
>
    directory. This section documents them.
  </P
><DIV
CLASS="section"
><HR><H2
CLASS="section"
><A
NAME="cmdline"
>C.1. Command-line Search Interface</A
></H2
><P
>&#13;      There are a suite of Unix utilities for searching Bugzilla from the 
      command line. They live in the 
      <TT
CLASS="filename"
>contrib/cmdline</TT
> directory.
      There are three files - <TT
CLASS="filename"
>query.conf</TT
>,
      <TT
CLASS="filename"
>buglist</TT
> and <TT
CLASS="filename"
>bugs</TT
>.
    </P
><DIV
CLASS="warning"
><P
></P
><TABLE
CLASS="warning"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/warning.gif"
HSPACE="5"
ALT="Warning"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;        These files pre-date the templatisation work done as part of the
        2.16 release, and have not been updated.
      </P
></TD
></TR
></TABLE
></DIV
><P
>&#13;      <TT
CLASS="filename"
>query.conf</TT
> contains the mapping from
      options to field names and comparison types. Quoted option names
      are <SPAN
CLASS="QUOTE"
>"grepped"</SPAN
> for, so it should be easy to edit this
      file. Comments (#) have no effect; you must make sure these lines
      do not contain any quoted <SPAN
CLASS="QUOTE"
>"option"</SPAN
>.
    </P
><P
>&#13;      <TT
CLASS="filename"
>buglist</TT
> is a shell script that submits a
      Bugzilla query and writes the resulting HTML page to stdout.
      It supports both short options, (such as <SPAN
CLASS="QUOTE"
>"-Afoo"</SPAN
>
      or <SPAN
CLASS="QUOTE"
>"-Rbar"</SPAN
>) and long options (such
      as <SPAN
CLASS="QUOTE"
>"--assignedto=foo"</SPAN
> or <SPAN
CLASS="QUOTE"
>"--reporter=bar"</SPAN
>).
      If the first character of an option is not <SPAN
CLASS="QUOTE"
>"-"</SPAN
>, it is
      treated as if it were prefixed with <SPAN
CLASS="QUOTE"
>"--default="</SPAN
>.
    </P
><P
>&#13;      The column list is taken from the COLUMNLIST environment variable.
      This is equivalent to the <SPAN
CLASS="QUOTE"
>"Change Columns"</SPAN
> option
      that is available when you list bugs in buglist.cgi. If you have
      already used Bugzilla, grep for COLUMNLIST in your cookies file
      to see your current COLUMNLIST setting.
    </P
><P
>&#13;      <TT
CLASS="filename"
>bugs</TT
> is a simple shell script which calls
      <TT
CLASS="filename"
>buglist</TT
> and extracts the
      bug numbers from the output. Adding the prefix
      <SPAN
CLASS="QUOTE"
>"http://bugzilla.mozilla.org/buglist.cgi?bug_id="</SPAN
>
      turns the bug list into a working link if any bugs are found.
      Counting bugs is easy. Pipe the results through 
      <B
CLASS="command"
>sed -e 's/,/ /g' | wc | awk '{printf $2 "\n"}'</B
>
    </P
><P
>&#13;      Akkana Peck says she has good results piping 
      <TT
CLASS="filename"
>buglist</TT
> output through 
      <B
CLASS="command"
>w3m -T text/html -dump</B
>
    </P
></DIV
><DIV
CLASS="section"
><HR><H2
CLASS="section"
><A
NAME="cmdline-bugmail"
>C.2. Command-line 'Send Unsent Bug-mail' tool</A
></H2
><P
>&#13;      Within the <TT
CLASS="filename"
>contrib</TT
> directory
      exists a utility with the descriptive (if compact) name
      of <TT
CLASS="filename"
>sendunsentbugmail.pl</TT
>. The purpose of this
      script is, simply, to send out any bug-related mail that should
      have been sent by now, but for one reason or another has not.
    </P
><P
>&#13;      To accomplish this task, <TT
CLASS="filename"
>sendunsentbugmail.pl</TT
> uses
      the same mechanism as the <TT
CLASS="filename"
>sanitycheck.cgi</TT
> script; it
      it scans through the entire database looking for bugs with changes that
      were made more than 30 minutes ago, but where there is no record of
      anyone related to that bug having been sent mail. Having compiled a list,
      it then uses the standard rules to determine who gets mail, and sends it
      out.
    </P
><P
>&#13;      As the script runs, it indicates the bug for which it is currently
      sending mail; when it has finished, it gives a numerical count of how
      many mails were sent and how many people were excluded. (Individual
      user names are not recorded or displayed.) If the script produces
      no output, that means no unsent mail was detected.
    </P
><P
>&#13;      <EM
>Usage</EM
>: move the sendunsentbugmail.pl script
      up into the main directory, ensure it has execute permission, and run it
      from the command line (or from a cron job) with no parameters.
    </P
></DIV
></DIV
><DIV
CLASS="appendix"
><HR><H1
><A
NAME="install-perlmodules-manual"
></A
>Appendix D. Manual Installation of Perl Modules</H1
><DIV
CLASS="section"
><H2
CLASS="section"
><A
NAME="modules-manual-instructions"
>D.1. Instructions</A
></H2
><P
>&#13;      If you need to install Perl modules manually, here's how it's done.
      Download the module using the link given in the next section, and then
      apply this magic incantation, as root:
    </P
><P
>  
      <TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="screen"
><SAMP
CLASS="prompt"
>bash#</SAMP
> tar -xzvf &#60;module&#62;.tar.gz
<SAMP
CLASS="prompt"
>bash#</SAMP
> cd &#60;module&#62;
<SAMP
CLASS="prompt"
>bash#</SAMP
> perl Makefile.PL
<SAMP
CLASS="prompt"
>bash#</SAMP
> make
<SAMP
CLASS="prompt"
>bash#</SAMP
> make test
<SAMP
CLASS="prompt"
>bash#</SAMP
> make install</PRE
></FONT
></TD
></TR
></TABLE
>
    </P
><DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;        In order to compile source code under Windows you will need to obtain
        a 'make' utility.  The <B
CLASS="command"
>nmake</B
> utility provided with
        Microsoft Visual C++ may be used.  As an alternative, there is a
        utility called <B
CLASS="command"
>dmake</B
> available from CPAN which is
        written entirely in Perl. The majority of the links given below, however,
        are to pre-compiled versions of the modules, which can be installed
        on Windows simply by issuing the following command once you have
        downloaded the PPD file (which may be packaged within a ZIP file):
      </P
><P
>&#13;        <TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="screen"
>&#13;          <SAMP
CLASS="prompt"
>&#62;</SAMP
> ppm install &#60;filename.ppd&#62;
        </PRE
></FONT
></TD
></TR
></TABLE
>
      </P
></TD
></TR
></TABLE
></DIV
></DIV
><DIV
CLASS="section"
><HR><H2
CLASS="section"
><A
NAME="modules-manual-download"
>D.2. Download Locations</A
></H2
><DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;        Running Bugzilla on Windows requires the use of ActiveState
        Perl 5.8.1 or higher. Some modules already exist in the core
        distribution of ActiveState Perl so no PPM link is given.
        (This is noted where it occurs.)
      </P
></TD
></TR
></TABLE
></DIV
><P
>&#13;      AppConfig:
      <P
CLASS="literallayout"
><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CPAN&nbsp;Download&nbsp;Page:&nbsp;<A
HREF="http://search.cpan.org/src/ABW/AppConfig-1.56/lib/AppConfig.pm"
TARGET="_top"
>http://search.cpan.org/src/ABW/AppConfig-1.56/lib/AppConfig.pm</A
><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PPM&nbsp;Download&nbsp;Link:&nbsp;<A
HREF="http://landfill.bugzilla.org/ppm/AppConfig.ppd"
TARGET="_top"
>http://landfill.bugzilla.org/ppm/AppConfig.ppd</A
><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Documentation:&nbsp;<A
HREF="http://search.cpan.org/~abw/AppConfig-1.56/lib/AppConfig.pm"
TARGET="_top"
>http://search.cpan.org/~abw/AppConfig-1.56/lib/AppConfig.pm</A
><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</P
>
    </P
><P
>&#13;      CGI:
      <P
CLASS="literallayout"
><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CPAN&nbsp;Download&nbsp;Page:&nbsp;<A
HREF="http://search.cpan.org/dist/CGI.pm/"
TARGET="_top"
>http://search.cpan.org/dist/CGI.pm/</A
><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PPM&nbsp;Download&nbsp;Link:&nbsp;Part&nbsp;of&nbsp;core&nbsp;distribution.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Documentation:&nbsp;<A
HREF="http://www.perldoc.com/perl5.8.0/lib/CGI.html"
TARGET="_top"
>http://www.perldoc.com/perl5.8.0/lib/CGI.html</A
><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</P
>
    </P
><P
>&#13;      Data-Dumper:
      <P
CLASS="literallayout"
><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CPAN&nbsp;Download&nbsp;Page:&nbsp;<A
HREF="http://search.cpan.org/src/ILYAM/Data-Dumper-2.121/Dumper.pm"
TARGET="_top"
>http://search.cpan.org/src/ILYAM/Data-Dumper-2.121/Dumper.pm</A
><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PPM&nbsp;Download&nbsp;Page:&nbsp;Part&nbsp;of&nbsp;core&nbsp;distribution.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Documentation:&nbsp;<A
HREF="http://search.cpan.org/~ilyam/Data-Dumper-2.121/Dumper.pm"
TARGET="_top"
>http://search.cpan.org/~ilyam/Data-Dumper-2.121/Dumper.pm</A
><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</P
>
    </P
><P
>&#13;      Date::Format (part of TimeDate):
      <P
CLASS="literallayout"
><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CPAN&nbsp;Download&nbsp;Page:&nbsp;<A
HREF="http://search.cpan.org/dist/TimeDate/"
TARGET="_top"
>http://search.cpan.org/dist/TimeDate/</A
><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PPM&nbsp;Download&nbsp;Link:&nbsp;<A
HREF="http://landfill.bugzilla.org/ppm/TimeDate.ppd"
TARGET="_top"
>http://landfill.bugzilla.org/ppm/TimeDate.ppd</A
><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Documentation:&nbsp;<A
HREF="http://search.cpan.org/dist/TimeDate/lib/Date/Format.pm"
TARGET="_top"
>http://search.cpan.org/dist/TimeDate/lib/Date/Format.pm</A
><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</P
>
    </P
><P
>&#13;      DBI:
      <P
CLASS="literallayout"
><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CPAN&nbsp;Download&nbsp;Page:&nbsp;<A
HREF="http://search.cpan.org/dist/DBI/"
TARGET="_top"
>http://search.cpan.org/dist/DBI/</A
><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PPM&nbsp;Download&nbsp;Link:&nbsp;<A
HREF="http://landfill.bugzilla.org/ppm/DBI.ppd"
TARGET="_top"
>http://landfill.bugzilla.org/ppm/DBI.ppd</A
><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Documentation:&nbsp;<A
HREF="http://dbi.perl.org/docs/"
TARGET="_top"
>http://dbi.perl.org/docs/</A
><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</P
>
    </P
><P
>&#13;      DBD::mysql:
      <P
CLASS="literallayout"
><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CPAN&nbsp;Download&nbsp;Page:&nbsp;<A
HREF="http://search.cpan.org/dist/DBD-mysql/"
TARGET="_top"
>http://search.cpan.org/dist/DBD-mysql/</A
><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PPM&nbsp;Download&nbsp;Link:&nbsp;<A
HREF="http://landfill.bugzilla.org/ppm/DBD-mysql.ppd"
TARGET="_top"
>http://landfill.bugzilla.org/ppm/DBD-mysql.ppd</A
><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Documentation:&nbsp;<A
HREF="http://search.cpan.org/dist/DBD-mysql/lib/DBD/mysql.pm"
TARGET="_top"
>http://search.cpan.org/dist/DBD-mysql/lib/DBD/mysql.pm</A
><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</P
>
    </P
><P
>&#13;      File::Spec:
      <P
CLASS="literallayout"
><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CPAN&nbsp;Download&nbsp;Page:&nbsp;<A
HREF="http://search.cpan.org/dist/File-Spec/"
TARGET="_top"
>http://search.cpan.org/dist/File-Spec/</A
><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PPM&nbsp;Download&nbsp;Page:&nbsp;Part&nbsp;of&nbsp;core&nbsp;distribution.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Documentation:&nbsp;<A
HREF="http://www.perldoc.com/perl5.8.0/lib/File/Spec.html"
TARGET="_top"
>http://www.perldoc.com/perl5.8.0/lib/File/Spec.html</A
><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</P
>
    </P
><P
>&#13;      File::Temp:
      <P
CLASS="literallayout"
><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CPAN&nbsp;Download&nbsp;Page:&nbsp;<A
HREF="http://search.cpan.org/dist/File-Temp/"
TARGET="_top"
>http://search.cpan.org/dist/File-Temp/</A
><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PPM&nbsp;Download&nbsp;Page:&nbsp;Part&nbsp;of&nbsp;core&nbsp;distribution.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Documentation:&nbsp;<A
HREF="http://www.perldoc.com/perl5.8.0/lib/File/Temp.html"
TARGET="_top"
>http://www.perldoc.com/perl5.8.0/lib/File/Temp.html</A
><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</P
>
    </P
><P
>&#13;      Template-Toolkit:
      <P
CLASS="literallayout"
><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CPAN&nbsp;Download&nbsp;Page:&nbsp;<A
HREF="http://search.cpan.org/dist/Template-Toolkit/"
TARGET="_top"
>http://search.cpan.org/dist/Template-Toolkit/</A
><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PPM&nbsp;Download&nbsp;Link:&nbsp;<A
HREF="http://landfill.bugzilla.org/ppm/Template-Toolkit.ppd"
TARGET="_top"
>http://landfill.bugzilla.org/ppm/Template-Toolkit.ppd</A
><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Documentation:&nbsp;<A
HREF="http://www.template-toolkit.org/docs.html"
TARGET="_top"
>http://www.template-toolkit.org/docs.html</A
><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</P
>
    </P
><P
>&#13;       Text::Wrap:
      <P
CLASS="literallayout"
><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CPAN&nbsp;Download&nbsp;Page:&nbsp;<A
HREF="http://search.cpan.org/dist/Text-Tabs+Wrap/"
TARGET="_top"
>http://search.cpan.org/dist/Text-Tabs+Wrap/</A
><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PPM&nbsp;Download&nbsp;Link:&nbsp;Part&nbsp;of&nbsp;core&nbsp;distribution.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Documentation:&nbsp;<A
HREF="http://www.perldoc.com/perl5.8.0/lib/Text/Wrap.html"
TARGET="_top"
>http://www.perldoc.com/perl5.8.0/lib/Text/Wrap.html</A
><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</P
>
    </P
><P
>&#13;      GD:
      <P
CLASS="literallayout"
><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CPAN&nbsp;Download&nbsp;Page:&nbsp;<A
HREF="http://search.cpan.org/dist/GD/"
TARGET="_top"
>http://search.cpan.org/dist/GD/</A
><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PPM&nbsp;Download&nbsp;Link:&nbsp;<A
HREF="http://landfill.bugzilla.org/ppm/GD.ppd"
TARGET="_top"
>http://landfill.bugzilla.org/ppm/GD.ppd</A
><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Documentation:&nbsp;<A
HREF="http://stein.cshl.org/WWW/software/GD/"
TARGET="_top"
>http://stein.cshl.org/WWW/software/GD/</A
><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</P
>
    </P
></DIV
><DIV
CLASS="section"
><HR><H2
CLASS="section"
><A
NAME="modules-manual-optional"
>D.3. Optional Modules</A
></H2
><P
>&#13;      Chart::Base:
      <P
CLASS="literallayout"
><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CPAN&nbsp;Download&nbsp;Page:&nbsp;<A
HREF="http://search.cpan.org/dist/Chart/"
TARGET="_top"
>http://search.cpan.org/dist/Chart/</A
><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PPM&nbsp;Download&nbsp;Page:&nbsp;<A
HREF="http://landfill.bugzilla.org/ppm/Chart.ppd"
TARGET="_top"
>http://landfill.bugzilla.org/ppm/Chart.ppd</A
><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Documentation:&nbsp;<A
HREF="http://search.cpan.org/src/CHARTGRP/Chart-2.3/doc/Documentation.pdf"
TARGET="_top"
>http://search.cpan.org/src/CHARTGRP/Chart-2.3/doc/Documentation.pdf</A
><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</P
>
    </P
><P
>&#13;      GD::Graph:
      <P
CLASS="literallayout"
><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CPAN&nbsp;Download&nbsp;Page:&nbsp;<A
HREF="http://search.cpan.org/dist/GDGraph/"
TARGET="_top"
>http://search.cpan.org/dist/GDGraph/</A
><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PPM&nbsp;Download&nbsp;Link:&nbsp;<A
HREF="http://landfill.bugzilla.org/ppm/GDGraph.ppd"
TARGET="_top"
>http://landfill.bugzilla.org/ppm/GDGraph.ppd</A
><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Documentation:&nbsp;<A
HREF="http://search.cpan.org/dist/GDGraph/Graph.pm"
TARGET="_top"
>http://search.cpan.org/dist/GDGraph/Graph.pm</A
><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</P
>
    </P
><P
>&#13;      GD::Text::Align (part of GD::Text::Util):
      <P
CLASS="literallayout"
><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CPAN&nbsp;Download&nbsp;Page:&nbsp;<A
HREF="http://search.cpan.org/dist/GDTextUtil/"
TARGET="_top"
>http://search.cpan.org/dist/GDTextUtil/</A
><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PPM&nbsp;Download&nbsp;Page:&nbsp;<A
HREF="http://landfill.bugzilla.org/ppm/GDTextUtil.ppd"
TARGET="_top"
>http://landfill.bugzilla.org/ppm/GDTextUtil.ppd</A
><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Documentation:&nbsp;<A
HREF="http://search.cpan.org/dist/GDTextUtil/Text/Align.pm"
TARGET="_top"
>http://search.cpan.org/dist/GDTextUtil/Text/Align.pm</A
><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</P
>
    </P
><P
>&#13;      MIME::Parser (part of MIME-tools):
      <P
CLASS="literallayout"
><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CPAN&nbsp;Download&nbsp;Page:&nbsp;<A
HREF="http://search.cpan.org/dist/MIME-tools/"
TARGET="_top"
>http://search.cpan.org/dist/MIME-tools/</A
><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PPM&nbsp;Download&nbsp;Link:&nbsp;<A
HREF="http://ppm.activestate.com/PPMPackages/zips/8xx-builds-only/Windows/MIME-tools-5.411a.zip"
TARGET="_top"
>http://ppm.activestate.com/PPMPackages/zips/8xx-builds-only/Windows/MIME-tools-5.411a.zip</A
><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Documentation:&nbsp;<A
HREF="http://search.cpan.org/dist/MIME-tools/lib/MIME/Parser.pm"
TARGET="_top"
>http://search.cpan.org/dist/MIME-tools/lib/MIME/Parser.pm</A
><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</P
>
    </P
><P
>&#13;      XML::Parser:
      <P
CLASS="literallayout"
><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CPAN&nbsp;Download&nbsp;Page:&nbsp;<A
HREF="http://search.cpan.org/dist/XML-Parser/"
TARGET="_top"
>http://search.cpan.org/dist/XML-Parser/</A
><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PPM&nbsp;Download&nbsp;Link:&nbsp;Part&nbsp;of&nbsp;core&nbsp;distribution.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Documentation:&nbsp;<A
HREF="http://www.perldoc.com/perl5.6.1/lib/XML/Parser.html"
TARGET="_top"
>http://www.perldoc.com/perl5.6.1/lib/XML/Parser.html</A
><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</P
>
    </P
><P
>&#13;      PatchReader:
      <P
CLASS="literallayout"
><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CPAN&nbsp;Download&nbsp;Page:&nbsp;<A
HREF="http://search.cpan.org/author/JKEISER/PatchReader/"
TARGET="_top"
>http://search.cpan.org/author/JKEISER/PatchReader/</A
><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PPM&nbsp;Download&nbsp;Link:&nbsp;<A
HREF="http://landfill.bugzilla.org/ppm/PatchReader.ppd"
TARGET="_top"
>http://landfill.bugzilla.org/ppm/PatchReader.ppd</A
><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Documentation:&nbsp;<A
HREF="http://www.johnkeiser.com/mozilla/Patch_Viewer.html"
TARGET="_top"
>http://www.johnkeiser.com/mozilla/Patch_Viewer.html</A
><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</P
>
    </P
></DIV
></DIV
><DIV
CLASS="appendix"
><HR><H1
><A
NAME="gfdl"
></A
>Appendix E. GNU Free Documentation License</H1
><P
>Version 1.1, March 2000</P
><A
NAME="AEN3366"
></A
><BLOCKQUOTE
CLASS="BLOCKQUOTE"
><P
>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.</P
></BLOCKQUOTE
><DIV
CLASS="section"
><HR><H2
CLASS="section"
><A
NAME="gfdl-0"
>0. Preamble</A
></H2
><P
>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.</P
><P
>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.</P
><P
>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.</P
></DIV
><DIV
CLASS="section"
><HR><H2
CLASS="section"
><A
NAME="gfdl-1"
>1. Applicability and Definition</A
></H2
><P
>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".</P
><P
>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.</P
><P
>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.</P
><P
>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.</P
><P
>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.</P
><P
>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
    drawing 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".</P
><P
>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.</P
><P
>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.</P
></DIV
><DIV
CLASS="section"
><HR><H2
CLASS="section"
><A
NAME="gfdl-2"
>2. Verbatim Copying</A
></H2
><P
>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.</P
><P
>You may also lend copies, under the same conditions stated above,
    and you may publicly display copies.</P
></DIV
><DIV
CLASS="section"
><HR><H2
CLASS="section"
><A
NAME="gfdl-3"
>3. Copying in Quantity</A
></H2
><P
>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.</P
><P
>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.</P
><P
>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 publicly-accessible 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.</P
><P
>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.</P
></DIV
><DIV
CLASS="section"
><HR><H2
CLASS="section"
><A
NAME="gfdl-4"
>4. Modifications</A
></H2
><P
>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:</P
><P
></P
><OL
TYPE="A"
><LI
><P
>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.</P
></LI
><LI
><P
>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).</P
></LI
><LI
><P
>State on the Title page the name of the publisher of the
        Modified Version, as the publisher.</P
></LI
><LI
><P
>Preserve all the copyright notices of the Document.</P
></LI
><LI
><P
>Add an appropriate copyright notice for your modifications
        adjacent to the other copyright notices.</P
></LI
><LI
><P
>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.</P
></LI
><LI
><P
>Preserve in that license notice the full lists of Invariant
        Sections and required Cover Texts given in the Document's license
        notice.</P
></LI
><LI
><P
>Include an unaltered copy of this License.</P
></LI
><LI
><P
>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.</P
></LI
><LI
><P
>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.</P
></LI
><LI
><P
>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.</P
></LI
><LI
><P
>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.</P
></LI
><LI
><P
>Delete any section entitled "Endorsements". Such a section may
        not be included in the Modified Version.</P
></LI
><LI
><P
>Do not retitle any existing section as "Endorsements" or to
        conflict in title with any Invariant Section.</P
></LI
></OL
><P
>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 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.</P
><P
>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.</P
><P
>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.</P
><P
>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.</P
></DIV
><DIV
CLASS="section"
><HR><H2
CLASS="section"
><A
NAME="gfdl-5"
>5. Combining Documents</A
></H2
><P
>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.</P
><P
>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.</P
><P
>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."</P
></DIV
><DIV
CLASS="section"
><HR><H2
CLASS="section"
><A
NAME="gfdl-6"
>6. Collections of Documents</A
></H2
><P
>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.</P
><P
>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.</P
></DIV
><DIV
CLASS="section"
><HR><H2
CLASS="section"
><A
NAME="gfdl-7"
>7. Aggregation with Independent Works</A
></H2
><P
>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, 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.</P
><P
>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.</P
></DIV
><DIV
CLASS="section"
><HR><H2
CLASS="section"
><A
NAME="gfdl-8"
>8. Translation</A
></H2
><P
>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.</P
></DIV
><DIV
CLASS="section"
><HR><H2
CLASS="section"
><A
NAME="gfdl-9"
>9. Termination</A
></H2
><P
>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.</P
></DIV
><DIV
CLASS="section"
><HR><H2
CLASS="section"
><A
NAME="gfdl-10"
>10. Future Revisions of this License</A
></H2
><P
>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 
    <A
HREF="http://www.gnu.org/copyleft/"
TARGET="_top"
>http://www.gnu.org/copyleft/</A
>.</P
><P
>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.</P
></DIV
><DIV
CLASS="section"
><HR><H2
CLASS="section"
><A
NAME="gfdl-howto"
>How to use this License for your documents</A
></H2
><P
>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:</P
><A
NAME="AEN3456"
></A
><BLOCKQUOTE
CLASS="BLOCKQUOTE"
><P
>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 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".</P
></BLOCKQUOTE
><P
>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.</P
><P
>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.</P
></DIV
></DIV
><DIV
CLASS="GLOSSARY"
><H1
><A
NAME="glossary"
></A
>Glossary</H1
><DIV
CLASS="glossdiv"
><H1
CLASS="glossdiv"
><A
NAME="AEN3461"
>0-9, high ascii</A
></H1
><DL
><DT
><A
NAME="gloss-htaccess"
></A
><B
>.htaccess</B
></DT
><DD
><P
>Apache web server, and other NCSA-compliant web servers,
        observe the convention of using files in directories called 
        <TT
CLASS="filename"
>.htaccess</TT
>

        to restrict access to certain files. In Bugzilla, they are used
        to keep secret files which would otherwise
        compromise your installation - e.g. the 
        <TT
CLASS="filename"
>localconfig</TT
>
        file contains the password to your database.
        curious.</P
></DD
></DL
></DIV
><DIV
CLASS="glossdiv"
><H1
CLASS="glossdiv"
><A
NAME="gloss-a"
>A</A
></H1
><DL
><DT
><A
NAME="gloss-apache"
></A
><B
>Apache</B
></DT
><DD
><P
>In this context, Apache is the web server most commonly used
        for serving up Bugzilla 
        pages. Contrary to popular belief, the apache web server has nothing
        to do with the ancient and noble Native American tribe, but instead
        derived its name from the fact that it was 
        <SPAN
CLASS="QUOTE"
>"a patchy"</SPAN
>
        version of the original 
        <ACRONYM
CLASS="acronym"
>NCSA</ACRONYM
>
        world-wide-web server.</P
><P
></P
><DIV
CLASS="variablelist"
><P
><B
>Useful Directives when configuring Bugzilla</B
></P
><DL
><DT
><SAMP
CLASS="computeroutput"
><A
HREF="http://httpd.apache.org/docs-2.0/mod/core.html#addhandler"
TARGET="_top"
>AddHandler</A
></SAMP
></DT
><DD
><P
>Tell Apache that it's OK to run CGI scripts.</P
></DD
><DT
><SAMP
CLASS="computeroutput"
><A
HREF="http://httpd.apache.org/docs-2.0/mod/core.html#allowoverride"
TARGET="_top"
>AllowOverride</A
></SAMP
>, <SAMP
CLASS="computeroutput"
><A
HREF="http://httpd.apache.org/docs-2.0/mod/core.html#options"
TARGET="_top"
>Options</A
></SAMP
></DT
><DD
><P
>These directives are used to tell Apache many things about
              the directory they apply to. For Bugzilla's purposes, we need
              them to allow script execution and <TT
CLASS="filename"
>.htaccess</TT
>
              overrides.
              </P
></DD
><DT
><SAMP
CLASS="computeroutput"
><A
HREF="http://httpd.apache.org/docs-2.0/mod/mod_dir.html#directoryindex"
TARGET="_top"
>DirectoryIndex</A
></SAMP
></DT
><DD
><P
>Used to tell Apache what files are indexes. If you can
              not add <TT
CLASS="filename"
>index.cgi</TT
> to the list of valid files,
              you'll need to set <SAMP
CLASS="computeroutput"
>$index_html</SAMP
> to
              1 in <TT
CLASS="filename"
>localconfig</TT
> so
              <B
CLASS="command"
>./checksetup.pl</B
> will create an
              <TT
CLASS="filename"
>index.html</TT
> that redirects to
              <TT
CLASS="filename"
>index.cgi</TT
>.
              </P
></DD
><DT
><SAMP
CLASS="computeroutput"
><A
HREF="http://httpd.apache.org/docs-2.0/mod/core.html#scriptinterpretersource"
TARGET="_top"
>ScriptInterpreterSource</A
></SAMP
></DT
><DD
><P
>Used when running Apache on windows so the shebang line
              doesn't have to be changed in every Bugzilla script.
              </P
></DD
></DL
></DIV
><P
>For more information about how to configure Apache for Bugzilla,
        see <A
HREF="#http-apache"
>Section 2.2.4.1</A
>.
        </P
></DD
></DL
></DIV
><DIV
CLASS="glossdiv"
><H1
CLASS="glossdiv"
><A
NAME="gloss-b"
>B</A
></H1
><DL
><DT
><B
>Bug</B
></DT
><DD
><P
>A 
        <SPAN
CLASS="QUOTE"
>"bug"</SPAN
>

        in Bugzilla refers to an issue entered into the database which has an
        associated number, assignments, comments, etc. Some also refer to a 
        <SPAN
CLASS="QUOTE"
>"tickets"</SPAN
>
        or 
        <SPAN
CLASS="QUOTE"
>"issues"</SPAN
>; 
        in the context of Bugzilla, they are synonymous.</P
></DD
><DT
><B
>Bug Number</B
></DT
><DD
><P
>Each Bugzilla bug is assigned a number that uniquely identifies
        that bug. The bug associated with a bug number can be pulled up via a
        query, or easily from the very front page by typing the number in the
        "Find" box.</P
></DD
><DT
><A
NAME="gloss-bugzilla"
></A
><B
>Bugzilla</B
></DT
><DD
><P
>Bugzilla is the world-leading free software bug tracking system.
        </P
></DD
></DL
></DIV
><DIV
CLASS="glossdiv"
><H1
CLASS="glossdiv"
><A
NAME="gloss-c"
>C</A
></H1
><DL
><DT
><A
NAME="gloss-cgi"
></A
><B
>Common Gateway Interface</B
></DT
> (CGI)<DD
><P
><ACRONYM
CLASS="acronym"
>CGI</ACRONYM
> is an acronym for Common Gateway Interface. This is
        a standard for interfacing an external application with a web server. Bugzilla
        is an example of a <ACRONYM
CLASS="acronym"
>CGI</ACRONYM
> application.
        </P
></DD
><DT
><A
NAME="gloss-component"
></A
><B
>Component</B
></DT
><DD
><P
>A Component is a subsection of a Product. It should be a narrow
        category, tailored to your organization. All Products must contain at
        least one Component (and, as a matter of fact, creating a Product
        with no Components will create an error in Bugzilla).</P
></DD
><DT
><A
NAME="gloss-cpan"
></A
><B
>Comprehensive Perl Archive Network</B
></DT
> (CPAN)<DD
><P
>&#13;        <ACRONYM
CLASS="acronym"
>CPAN</ACRONYM
>

        stands for the 
        <SPAN
CLASS="QUOTE"
>"Comprehensive Perl Archive Network"</SPAN
>. 
        CPAN maintains a large number of extremely useful 
        <I
CLASS="glossterm"
>Perl</I
>
        modules - encapsulated chunks of code for performing a
        particular task.</P
></DD
><DT
><A
NAME="gloss-contrib"
></A
><B
><TT
CLASS="filename"
>contrib</TT
></B
></DT
><DD
><P
>The <TT
CLASS="filename"
>contrib</TT
> directory is
        a location to put scripts that have been contributed to Bugzilla but
        are not a part of the official distribution. These scripts are written
        by third parties and may be in languages other than perl. For those
        that are in perl, there may be additional modules or other requirements
        than those of the offical distribution.
        <DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>Scripts in the <TT
CLASS="filename"
>contrib</TT
>
          directory are not offically supported by the Bugzilla team and may
          break in between versions.
          </P
></TD
></TR
></TABLE
></DIV
>
        </P
></DD
></DL
></DIV
><DIV
CLASS="glossdiv"
><H1
CLASS="glossdiv"
><A
NAME="gloss-d"
>D</A
></H1
><DL
><DT
><A
NAME="gloss-daemon"
></A
><B
>daemon</B
></DT
><DD
><P
>A daemon is a computer program which runs in the background. In
        general, most daemons are started at boot time via System V init
        scripts, or through RC scripts on BSD-based systems. 
        <I
CLASS="glossterm"
>mysqld</I
>, 
        the MySQL server, and 
        <I
CLASS="glossterm"
>apache</I
>, 
        a web server, are generally run as daemons.</P
></DD
><DT
><A
NAME="gloss-dos"
></A
><B
>DOS Attack</B
></DT
><DD
><P
>A DOS, or Denial of Service attack, is when a user attempts to
        deny access to a web server by repeatadly accessing a page or sending
        malformed requests to a webserver. This can be effectively prevented
        by using <TT
CLASS="filename"
>mod_throttle</TT
> as described in
        <A
HREF="#security-webserver-mod-throttle"
>Section 4.3.2</A
>. A D-DOS, or
        Distributed Denial of Service attack, is when these requests come
        from multiple sources at the same time. Unfortunately, these are much
        more difficult to defend against.
        </P
></DD
></DL
></DIV
><DIV
CLASS="glossdiv"
><H1
CLASS="glossdiv"
><A
NAME="gloss-g"
>G</A
></H1
><DL
><DT
><A
NAME="gloss-groups"
></A
><B
>Groups</B
></DT
><DD
><P
>The word 
        <SPAN
CLASS="QUOTE"
>"Groups"</SPAN
>

        has a very special meaning to Bugzilla. Bugzilla's main security
        mechanism comes by placing users in groups, and assigning those
        groups certain privileges to view bugs in particular
        <I
CLASS="glossterm"
>Products</I
>
        in the 
        <I
CLASS="glossterm"
>Bugzilla</I
>
        database.</P
></DD
></DL
></DIV
><DIV
CLASS="glossdiv"
><H1
CLASS="glossdiv"
><A
NAME="gloss-j"
>J</A
></H1
><DL
><DT
><A
NAME="gloss-javascript"
></A
><B
>JavaScript</B
></DT
><DD
><P
>JavaScript is cool, we should talk about it.
        </P
></DD
></DL
></DIV
><DIV
CLASS="glossdiv"
><H1
CLASS="glossdiv"
><A
NAME="gloss-m"
>M</A
></H1
><DL
><DT
><A
NAME="gloss-mta"
></A
><B
>Message Transport Agent</B
></DT
> (MTA)<DD
><P
>A Message Transport Agent is used to control the flow of email
        on a system. The <A
HREF="http://search.cpan.org/dist/MailTools/Mail/Mailer.pm"
TARGET="_top"
>Mail::Mailer</A
>
        Perl module, which Bugzilla uses to send email, can be configured to
        use many different underlying implementations for actually sending the
        mail using the <VAR
CLASS="option"
>mail_delivery_method</VAR
> parameter.
        Implementations other than <VAR
CLASS="literal"
>sendmail</VAR
> require that the
        <VAR
CLASS="option"
>sendmailnow</VAR
> param be set to <VAR
CLASS="literal"
>on</VAR
>.
        </P
></DD
><DT
><A
NAME="gloss-mysql"
></A
><B
>MySQL</B
></DT
><DD
><P
>MySQL is currently the required
        <A
HREF="#gloss-rdbms"
><I
CLASS="glossterm"
>RDBMS</I
></A
> for Bugzilla. MySQL
        can be downloaded from <A
HREF="http://www.mysql.com"
TARGET="_top"
>http://www.mysql.com</A
>. While you
        should familiarize yourself with all of the documentation, some high
        points are:
        </P
><P
></P
><DIV
CLASS="variablelist"
><DL
><DT
><A
HREF="http://www.mysql.com/doc/en/Backup.html"
TARGET="_top"
>Backup</A
></DT
><DD
><P
>Methods for backing up your Bugzilla database.
              </P
></DD
><DT
><A
HREF="http://www.mysql.com/doc/en/Option_files.html"
TARGET="_top"
>Option Files</A
></DT
><DD
><P
>Information about how to configure MySQL using
              <TT
CLASS="filename"
>my.cnf</TT
>.
              </P
></DD
><DT
><A
HREF="http://www.mysql.com/doc/en/Privilege_system.html"
TARGET="_top"
>Privilege System</A
></DT
><DD
><P
>Much more detailed information about the suggestions in
              <A
HREF="#security-mysql"
>Section 4.2</A
>.
              </P
></DD
></DL
></DIV
></DD
></DL
></DIV
><DIV
CLASS="glossdiv"
><H1
CLASS="glossdiv"
><A
NAME="gloss-p"
>P</A
></H1
><DL
><DT
><A
NAME="gloss-ppm"
></A
><B
>Perl Package Manager</B
></DT
> (PPM)<DD
><P
><A
HREF="http://aspn.activestate.com/ASPN/Downloads/ActivePerl/PPM/"
TARGET="_top"
>http://aspn.activestate.com/ASPN/Downloads/ActivePerl/PPM/</A
>
        </P
></DD
><DT
><B
>Product</B
></DT
><DD
><P
>A Product is a broad category of types of bugs, normally
        representing a single piece of software or entity. In general,
        there are several Components to a Product. A Product may define a
        group (used for security) for all bugs entered into
        its Components.</P
></DD
><DT
><B
>Perl</B
></DT
><DD
><P
>First written by Larry Wall, Perl is a remarkable program
        language. It has the benefits of the flexibility of an interpreted
        scripting language (such as shell script), combined with the speed
        and power of a compiled language, such as C. 
        <I
CLASS="glossterm"
>Bugzilla</I
>

        is maintained in Perl.</P
></DD
></DL
></DIV
><DIV
CLASS="glossdiv"
><H1
CLASS="glossdiv"
><A
NAME="gloss-q"
>Q</A
></H1
><DL
><DT
><B
>QA</B
></DT
><DD
><P
>&#13;        <SPAN
CLASS="QUOTE"
>"QA"</SPAN
>, 
        <SPAN
CLASS="QUOTE"
>"Q/A"</SPAN
>, and 
        <SPAN
CLASS="QUOTE"
>"Q.A."</SPAN
>
        are short for 
        <SPAN
CLASS="QUOTE"
>"Quality Assurance"</SPAN
>. 
        In most large software development organizations, there is a team
        devoted to ensuring the product meets minimum standards before
        shipping. This team will also generally want to track the progress of
        bugs over their life cycle, thus the need for the 
        <SPAN
CLASS="QUOTE"
>"QA Contact"</SPAN
>

        field in a bug.</P
></DD
></DL
></DIV
><DIV
CLASS="glossdiv"
><H1
CLASS="glossdiv"
><A
NAME="gloss-r"
>R</A
></H1
><DL
><DT
><A
NAME="gloss-rdbms"
></A
><B
>Relational DataBase Managment System</B
></DT
> (RDBMS)<DD
><P
>A relational database management system is a database system
        that stores information in tables that are related to each other.
        </P
></DD
><DT
><A
NAME="gloss-regexp"
></A
><B
>Regular Expression</B
></DT
> (regexp)<DD
><P
>A regular expression is an expression used for pattern matching.
              <A
HREF="http://perldoc.com/perl5.6/pod/perlre.html#Regular-Expressions"
TARGET="_top"
>Documentation</A
>
        </P
></DD
></DL
></DIV
><DIV
CLASS="glossdiv"
><H1
CLASS="glossdiv"
><A
NAME="gloss-s"
>S</A
></H1
><DL
><DT
><A
NAME="gloss-service"
></A
><B
>Service</B
></DT
><DD
><P
>In Windows NT environment, a boot-time background application
        is refered to as a service. These are generally managed through the
        control pannel while logged in as an account with
        <SPAN
CLASS="QUOTE"
>"Administrator"</SPAN
> level capabilities. For more
        information, consult your Windows manual or the MSKB.
        </P
></DD
><DT
><B
>&#13;        <ACRONYM
CLASS="acronym"
>SGML</ACRONYM
>
      </B
></DT
><DD
><P
>&#13;        <ACRONYM
CLASS="acronym"
>SGML</ACRONYM
>

        stands for 
        <SPAN
CLASS="QUOTE"
>"Standard Generalized Markup Language"</SPAN
>. 
        Created in the 1980's to provide an extensible means to maintain
        documentation based upon content instead of presentation, 
        <ACRONYM
CLASS="acronym"
>SGML</ACRONYM
>

        has withstood the test of time as a robust, powerful language. 
        <I
CLASS="glossterm"
>&#13;          <ACRONYM
CLASS="acronym"
>XML</ACRONYM
>
        </I
>

        is the 
        <SPAN
CLASS="QUOTE"
>"baby brother"</SPAN
>

        of SGML; any valid 
        <ACRONYM
CLASS="acronym"
>XML</ACRONYM
>

        document it, by definition, a valid 
        <ACRONYM
CLASS="acronym"
>SGML</ACRONYM
>

        document. The document you are reading is written and maintained in 
        <ACRONYM
CLASS="acronym"
>SGML</ACRONYM
>, 
        and is also valid 
        <ACRONYM
CLASS="acronym"
>XML</ACRONYM
>

        if you modify the Document Type Definition.</P
></DD
></DL
></DIV
><DIV
CLASS="glossdiv"
><H1
CLASS="glossdiv"
><A
NAME="gloss-t"
>T</A
></H1
><DL
><DT
><A
NAME="gloss-target-milestone"
></A
><B
>Target Milestone</B
></DT
><DD
><P
>Target Milestones are Product goals. They are configurable on a
        per-Product basis. Most software development houses have a concept of
        
        <SPAN
CLASS="QUOTE"
>"milestones"</SPAN
>

        where the people funding a project expect certain functionality on
        certain dates. Bugzilla facilitates meeting these milestones by
        giving you the ability to declare by which milestone a bug will be
        fixed, or an enhancement will be implemented.</P
></DD
><DT
><A
NAME="gloss-tcl"
></A
><B
>Tool Command Language</B
></DT
> (TCL)<DD
><P
>TCL is an open source scripting language available for Windows,
        Macintosh, and Unix based systems. Bugzilla 1.0 was written in TCL but
        never released. The first release of Bugzilla was 2.0, which was when
        it was ported to perl.
        </P
></DD
></DL
></DIV
><DIV
CLASS="glossdiv"
><H1
CLASS="glossdiv"
><A
NAME="gloss-z"
>Z</A
></H1
><DL
><DT
><A
NAME="gloss-zarro"
></A
><B
>Zarro Boogs Found</B
></DT
><DD
><P
>This is just a goofy way of saying that there were no bugs
        found matching your query. When asked to explain this message,
        Terry had the following to say:
        </P
><A
NAME="AEN3708"
></A
><TABLE
BORDER="0"
WIDTH="100%"
CELLSPACING="0"
CELLPADDING="0"
CLASS="BLOCKQUOTE"
><TR
><TD
WIDTH="10%"
VALIGN="TOP"
>&nbsp;</TD
><TD
VALIGN="TOP"
><P
>I've been asked to explain this ... way back when, when
          Netscape released version 4.0 of its browser, we had a release
          party.  Naturally, there had been a big push to try and fix every
          known bug before the release. Naturally, that hadn't actually
          happened.  (This is not unique to Netscape or to 4.0; the same thing
          has happened with every software project I've ever seen.)  Anyway,
          at the release party, T-shirts were handed out that said something
          like "Netscape 4.0: Zarro Boogs". Just like the software, the
          T-shirt had no known bugs.  Uh-huh.
          </P
><P
>So, when you query for a list of bugs, and it gets no results,
          you can think of this as a friendly reminder.  Of *course* there are
          bugs matching your query, they just aren't in the bugsystem yet...
          </P
></TD
><TD
WIDTH="10%"
VALIGN="TOP"
>&nbsp;</TD
></TR
><TR
><TD
COLSPAN="2"
ALIGN="RIGHT"
VALIGN="TOP"
>--<SPAN
CLASS="attribution"
>Terry Weissman</SPAN
></TD
><TD
WIDTH="10%"
>&nbsp;</TD
></TR
></TABLE
></DD
></DL
></DIV
></DIV
></DIV
></BODY
></HTML
>