From 1252fe4ecdc1dc3af7ad57955c062c2c1a185bb3 Mon Sep 17 00:00:00 2001 From: "jake%bugzilla.org" <> Date: Sat, 17 May 2003 08:39:29 +0000 Subject: Recompile docs so (hopefully) I can get some feedback on the installation chapter changes. --- docs/html/Bugzilla-Guide.html | 2292 +++++++++++++++++++++++++---------------- 1 file changed, 1417 insertions(+), 875 deletions(-) (limited to 'docs/html/Bugzilla-Guide.html') diff --git a/docs/html/Bugzilla-Guide.html b/docs/html/Bugzilla-Guide.html index 9fe33476c..fe8ecffdc 100644 --- a/docs/html/Bugzilla-Guide.html +++ b/docs/html/Bugzilla-Guide.html @@ -448,11 +448,16 @@ CLASS="LOT" >
4-1. Set Max Packet Size in MySQL
4-2. Other File::Temp error messages
4-2. 4-3. Patch for File::Temp in Perl 5.6.0
4-1. Installing perl modules with CPAN
4-2.

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 + 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 + Front-Cover Texts, and with no Back-Cover Texts. A copy of the license is included in Appendix E

All copyrights are held by their respective owners, unless - specifically noted otherwise. Use of a term in this document + specifically noted otherwise. Use of a term in this document should not be regarded as affecting the validity of any trademark or service mark.

Naming of particular products or brands should not be seen as - endorsements, with the exception of the term "GNU/Linux". We + endorsements, with the exception of the term "GNU/Linux". We wholeheartedly endorse the use of GNU/Linux in every situation - where it is appropriate. It is an extremely versatile, stable, + where it is appropriate. It is an extremely versatile, stable, and robust operating system that offers an ideal operating environment for Bugzilla.

The newest version of this guide can always be found at bugzilla.orghttp://www.bugzilla.org; including documentation for past releases and the current development version.

The latest version of this document can always be checked out via CVS. - Please follow the instructions available at - the Mozilla CVS page, - and check out the Mozilla CVS + instructions and check out the mozilla/webtools/bugzilla/docs/ @@ -788,13 +797,13 @@ HREF="news://news.mozilla.org/netscape/public/mozilla/webtools" TARGET="_top" >news://news.mozilla.org/netscape/public/mozilla/webtools - newsgroup. Without your discussions, insight, suggestions, and patches, + newsgroup. Without your discussions, insight, suggestions, and patches, this could never have happened.

Thanks also go to the following people for significant contributions to this documentation (in alphabetical order): - Andrew Pearson, Ben FrantzDale, Eric Hanson, Gervase Markham, Joe Robins, Kevin Brannen, Ron Teitelbaum, Spencer Smith, Zach Liption + Andrew Pearson, Ben FrantzDale, Eric Hanson, Gervase Markham, Joe Robins, Kevin Brannen, Martin Wulffeld, Ron Teitelbaum, Spencer Smith, Zach Liption .

http://landfill.bugzilla.org/bugzilla-tip/ +>http://landfill.bugzilla.org/bugzilla-tip/.

landfill.bugzilla.org/bugzilla-tip/query.cgi - - .

http://landfill.bugzilla.org/bugzilla-tip/query.cgi.

The Search page has controls for selecting different possible values for all of the fields in a bug, as described above. Once you've @@ -1878,7 +1885,7 @@ CLASS="section" >


3.2.1. Autolinkification


3.2.5. Filing Bugs

4.1. Step-by-step Install

4.1.1. Introduction

Bugzilla has been successfully installed under Solaris, Linux, - and Win32. Win32 is not yet officially supported, but many people - have got it working fine. - Please see +>Bugzilla has been successfully installed under many different + operating systems including almost all Unix clones and + Microsoft Windows. Many + operating systems have utilities that make installation easier or quirks + that make it harder. We have tried to collect that information in Section 4.3.1 - for further advice on getting Bugzilla to work on Microsoft - Windows.


4.1.2. Package List

Section 4.3, so be sure to check out that section before + you start your installation. +

If you are running the very most recent - version of Perl and MySQL (both the executables and development - libraries) on your system, you can skip these manual installation - steps for the Perl modules by using Bundle::Bugzilla; see +>Windows is one of those operating systems that has many quirks + and is not yet officially supported by the Bugzilla team. If you wish + to install Bugzilla on Windows, be sure to see Using Bundle::Bugzilla instead of manually installing Perl modulesSection 4.3.1.

The software packages necessary for the proper running of - Bugzilla (with download links) are: -

  1. MySQL database server - (3.23.41 or greater) -

  2. While installing Bugzilla, it is a good idea to ensure that there + is some kind of firewall between you and the rest of the Internet + as your machine may be insecure for periods during the install. Many + installation steps require an active Internet connection to complete, + but you must take care to ensure that at no point is your machine + vulnerable to an attack.

Perl - (5.6, 5.6.1 is recommended if you wish to - use Bundle::Bugzilla) -

  • This guide assumes that you already have your operating system + installed, network configured, and have administrative access to the + shell on the machine you are installing Bugzilla onto. It is possible to + install and run Bugzilla without administrative access, but you have to + either make sure all the required software is installed or get somebody + with administrative access to install it for you. +

    Perl Modules (minimum version): -

    The listing below is a basic step-by-step list. More information + can be found in the sections below. Minimum versions will be + included in parenthesis where appropriate. +

    1. TemplateInstall MySQL - (v2.08) -

    2. File::TempInstall Perl - (1.804) (Prerequisite for Template) -

    3. AppConfig - Install Perl Modules - (1.52) -

    4. Text::Wrap - (2001.0131) -

    5. File::Spec - Install a Webserver - (0.82) -

    6. Data::Dumper - - (any) -

    7. DBD::mysql - - (2.1010) -

    8. DBI - (1.32) -

    9. Date::Parse - - (2.21) -

    10. CGI - - (2.88) -

    - and, optionally: -

    1. GDPut Bugzilla in the Webspace - (1.20) for bug charting -

    2. GD::Graph - (any) for bug charting -

    3. GD::Text::Align - (any) for bug charting -

    4. Chart::Base - Setup the MySQL Database - (0.99c) for bug charting -

    5. XML::Parser - (any) for the XML interface -

    6. MIME::Parser - (any) for the email interface -

    -

  • The web server of your choice. - Apache - is highly recommended. -

  • - -

    It is a good idea, while installing Bugzilla, to ensure that there - is some kind of firewall between you and the rest of the Internet, - because your machine may be insecure for periods during the install. - Many - installation steps require an active Internet connection to complete, - but you must take care to ensure that at no point is your machine - vulnerable to an attack.

    - -

    4.1.3. MySQL4.1.1. MySQL

    Visit the MySQL homepage at www.mysql.comhttp://www.mysql.com to grab and install the latest stable release of the server.

    If you install from something other than an RPM or Debian - package, you will need to add mysqld - to your init scripts so the server daemon will come back up whenever - your machine reboots. Further discussion of UNIX init sequences are - beyond the scope of this guide. +>If you install from something other than a packaging/installation + system (such as .rpm, .dep, .exe, or .msi) you will need to configure + your system so the MySQL server daemon will come back up whenever + your machine reboots.

    Change your init script to start - mysqld - with the ability to accept large packets. By default, - mysqld - only accepts packets up to 64K long. This limits the size of - attachments you may put on bugs. If you add - -O max_allowed_packet=1M - to the command that starts +>If you wish to have attachments larger than 64K, you will have to + configure MySQL to accept large packets. This is done by adding the text + in Figure 4-1 to your mysqld - (or safe_mysqld), - then you will be able to have attachments up to about 1 megabyte. - There is a Bugzilla parameter for maximum attachment size; - you should configure it to match the value you choose here.

    my.conf
    file. There is also a parameter in Bugzilla + for setting the maximum allowable attachment size. + + You should set this value to be slightly larger than that parameter. +

    If you plan on running Bugzilla and MySQL on the same machine, - consider using the - Figure 4-1. Set Max Packet Size in MySQL

    
[mysqld]
    +# Allow packets up to 1M
    +set-variable = max_allowed_packet=1M
    +        

    If you are running Bugzilla and MySQL on the same machine, you may + also wish to utilize the --skip-networking - option in the init script. This enhances security by preventing - network access to MySQL.

    skip-networking option as + mentioned in Section 5.6.2 for the added security. +

    4.1.4. Perl4.1.2. Perl

    Any machine that doesn't have Perl on it is a sad machine indeed. - Perl can be got in source form from - perl.com for the rare - *nix systems which don't have it. +>http://www.perl.com. + There are also binary versions available for many platforms, most of which + are linked to from perl.com. Although Bugzilla runs with perl 5.6, it's a good idea to be up to the very latest version if you can when running Bugzilla. As of this writing, that is Perl version 5.8.


    4.1.3. Perl Modules

    Perl modules can be found using + CPAN on Unix based systems or + PPM on Win32. The root servers + have a real tendency to bog down, so please use mirrors. +

    Good instuctions can be found for using each of these services on + their respective websites. The basics can be found in + Example 4-1 for CPAN and + Section 4.3.1.2 for PPM. +

    Example 4-1. Installing perl modules with CPAN

    The easy way: +
    
bash# perl -MCPAN -e 'install "<modulename>"'
    +          
    +

    Or the hard way: +
    
bash# tar xzvf <module>.tar.gz     
    +bash# cd <module>                  
    +bash# perl Makefile.PL
    +bash# make
    +bash# make test
    +bash# make install
    +          
    +

    This assumes that you've already downloaded the + <module>.tar.gz to the current working + directory. +
    The process of untaring the module as defined in + will create the + <module> directory. +
    +

    You can skip the following Perl module installation steps by - installing +>Many people complain that Perl modules will not install for + them. Most times, the error messages complain that they are missing a + file in Bundle::Bugzilla - - from - CPAN, - which installs all required modules for you.

    bash# - - perl -MCPAN -e 'install "Bundle::Bugzilla"' - "@INC". + 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 + are -

    Bundle::Bugzilla doesn't include GD, Chart::Base, or - MIME::Parser, which are not essential to a basic Bugzilla install. If - installing this bundle fails, you should install each module - individually to isolate the problem.


    4.1.5. Perl Modules

    - All Perl modules can be found on the - Comprehensive Perl - Archive Network (CPAN). The - CPAN servers have a real tendency to bog down, so please use mirrors. -

    Quality, general Perl module installation instructions can be - found on the CPAN website, but the easy thing to do is to just use the - CPAN shell which does all the hard work for you. - To use the CPAN shell to install a module: -

    bash# - perl -MCPAN -e 'install "<modulename>"' - -

    To do it the hard way: -

    Untar the module tarball -- it should create its own - directory

    CD to the directory just created, and enter the following - commands: -

    Perl Modules (minimum version): +

    1. bash# - - perl Makefile.PL - Bundle::Bugzilla -

    2. bash# AppConfig - - make

    3. CGI + (2.88) +

    4. Data::Dumper + (any) +

    5. Date::Format -

    6. DBI + (1.32) +

    7. DBD::mysql -

    8. bash# File::Spec - - make test

    9. File::Temp -

    10. Template Toolkit -

    11. bash# Text::Wrap + (2001.0131) +

    - make install

    1. GD -

    2. Chart::Base -

  • XML::Parser + (any) for the XML interface +

  • GD::Graph + (any) for bug charting +

  • GD::Text::Align + (any) for bug charting

  • MIME::Parser + (any) for the email interface +

  • +


    4.1.3.1. Bundle::Bugzilla

    If you are running at least perl 5.6.1, you can save yourself a lot + of time by using Bundle::Bugzilla. This bundle contains every module + required to get Bugzilla running. It does not include GD and friends, but + these are not required for a base install and can always be added later + if the need arises. +

    Assuming your perl was installed with CPAN (most unix installations + are), using Bundle::Bugzilla is really easy. Simply follow along with the + commands below. +

    
bash# perl -MCPAN -eshell              

    Many people complain that Perl modules will not install for - them. Most times, the error messages complain that they are missing a - file in - "@INC". - 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 - are - the local UNIX sysadmin, please consult the newsgroup/mailing list - for further assistance or hire someone to help you out.

    cpan> + +
    At this point, unless you've used CPAN on this machine before, + you'll have to go through a series of configuration steps. +

    4.1.3.2. AppConfig (1.52)

    Dependency for Template Toolkit. We probably don't need to + specifically check for it anymore. +


    4.1.3.3. CGI (2.88)

    The CGI module parses form elements and cookies and does many + other usefule things. It come as a part of recent perl distributions, but + Bugzilla needs a fairly new version. +


    +        CPAN Download Page: http://search.cpan.org/dist/CGI.pm/
    +        PPM Download Link: http://ppm.activestate.com/PPMPackages/zips/6xx-builds-only/CGI.zip
    +        Documentation: http://www.perldoc.com/perl5.8.0/lib/CGI.html
    +      


    4.1.3.4. Data::Dumper (any)

    The Data::Dumper module provides data structure persistence for + Perl (similar to Java's serialization). It comes with later + sub-releases of Perl 5.004, but a re-installation just to be sure it's + available won't hurt anything. +


    +        CPAN Download Page: http://search.cpan.org/dist/Data-Dumper/
    +        PPM Download Link: http://ppm.activestate.com/PPMPackages/zips/6xx-builds-only/Data-Dumper.zip
    +        Documentation: http://www.perldoc.com/perl5.8.0/lib/Data/Dumper.html
    +      


    4.1.3.5. TimeDate modules (2.21)

    Many of the more common date/time/calendar related Perl modules + have been grouped into a bundle similar to the MySQL modules bundle. + This bundle is stored on the CPAN under the name TimeDate. + The component module we're most interested in is the Date::Format + module, but installing all of them is probably a good idea anyway. +


    +        CPAN Download Page: http://search.cpan.org/dist/TimeDate/
    +        PPM Download Link: http://ppm.activestate.com/PPMPackages/zips/6xx-builds-only/TimeDate.zip
    +        Documentation: http://search.cpan.org/dist/TimeDate/lib/Date/Format.pm
    +      


    4.1.5.1. DBI

    4.1.3.6. DBI (1.32)

    The DBI module is a generic Perl module used the MySQL-related modules. As long as your Perl installation was done correctly the DBI module should be a breeze. It's a mixed Perl/C module, but Perl's MakeMaker system simplifies the C compilation greatly.


    4.1.5.2. Data::Dumper

    The Data::Dumper module provides data structure persistence for - Perl (similar to Java's serialization). It comes with later - sub-releases of Perl 5.004, but a re-installation just to be sure it's - available won't hurt anything.


    +        CPAN Download Page: http://search.cpan.org/dist/DBI/
    +        PPM Download Link: http://ppm.activestate.com/PPMPackages/zips/6xx-builds-only/DBI.zip
    +        Documentation: http://dbi.perl.org/doc/
    +      


    4.1.5.3. MySQL-related modules

    4.1.3.7. MySQL-related modules

    The Perl/MySQL interface requires a few mutually-dependent Perl modules. These modules are grouped together into the the @@ -2896,34 +3120,161 @@ NAME="AEN572" with a null password should find itself with sufficient access to run tests on the 'test' database which MySQL created upon installation.


    +        CPAN Download Page: http://search.cpan.org/dist/DBD-mysql/
    +        PPM Download Link: http://ppm.activestate.com/PPMPackages/zips/6xx-builds-only/DBD-Mysql.zip
    +        Documentation: http://search.cpan.org/dist/DBD-mysql/lib/DBD/mysql.pod
    +      


    4.1.3.8. File::Spec (0.82)

    File::Spec is a perl module that allows file operations, such as + generating full path names, to work cross platform. +


    +        CPAN Download Page: http://search.cpan.org/dist/File-Spec/
    +        PPM Download Page: http://ppm.activestate.com/PPMPackages/zips/6xx-builds-only/File-Spec.zip
    +        Documentation: http://www.perldoc.com/perl5.8.0/lib/File/Spec.html
    +      


    4.1.5.4. TimeDate modules

    4.1.3.9. File::Temp (any)

    Many of the more common date/time/calendar related Perl modules - have been grouped into a bundle similar to the MySQL modules bundle. - This bundle is stored on the CPAN under the name TimeDate. - The component module we're most interested in is the Date::Format - module, but installing all of them is probably a good idea anyway. +>File::Temp is used to generate a temporary filename that is + guaranteed to be unique. It comes as a standard part of perl +


    +        CPAN Download Page: http://search.cpan.org/dist/File-Spec/
    +        PPM Download Link: http://ppm.activestate.com/PPMPackages/zips/6xx-builds-only/File-Spec.zip
    +        Documentation: http://www.perldoc.com/perl5.8.0/lib/File/Temp.html
    +      


    4.1.3.10. Template Toolkit (2.08)

    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. +


    +        CPAN Download Page: http://search.cpan.org/dist/Template-Toolkit/
    +        PPM Download Link: http://openinteract.sourceforge.net/ppmpackages/5.6/Template-Toolkit.tar.gz
    +        Documentation: http://www.template-toolkit.org/docs.html
    +      


    4.1.3.11. Text::Wrap (2001.0131)

    Text::Wrap is designed to proved intelligent text wrapping.


    +        CPAN Download Page: http://search.cpan.org/dist/Text-Tabs+Wrap/
    +        Documentation: http://www.perldoc.com/perl5.8.0/lib/Text/Wrap.html
    +      


    4.1.5.5. GD (optional)

    4.1.3.12. GD (1.20) [optional]

    The GD library was written by Thomas Boutell a long while ago to - programatically generate images in C. Since then it's become the + programmatically generate images in C. Since then it's become the defacto standard for programmatic image construction. The Perl bindings to it found in the GD library are used on millions of web pages to generate graphs on the fly. That's what Bugzilla will be using it for @@ -2967,36 +3318,224 @@ CLASS="classname" >

    The version of the GD perl module you need is very closely tied + to the libgd version installed on your system. + If you have a version 1.x of libgd the 2.x + versions of the GD perl module won't work for you. +


    +        CPAN Download Page: http://search.cpan.org/dist/GD/
    +        PPM Download Link: http://ppm.activestate.com/PPMPackages/zips/6xx-builds-only/GD.zip
    +        Documentation: http://stein.cshl.org/WWW/software/GD/
    +      


    4.1.5.6. Chart::Base (optional)

    4.1.3.13. Chart::Base (0.99c) [optional]

    The Chart module provides Bugzilla with on-the-fly charting abilities. It can be installed in the usual fashion after it has been fetched from CPAN. Note that earlier versions that 0.99c used GIFs, which are no longer supported by the latest versions of GD.


    +        CPAN Download Page: http://search.cpan.org/dist/Chart/
    +        PPM Download Link: http://ppm.activestate.com/PPMPackages/zips/6xx-builds-only/Chart.zip
    +      


    4.1.5.7. Template Toolkit

    4.1.3.14. XML::Parser (any) [Optional]

    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. +>XML::Parser is used by the importxml.pl + script. You only need it if you are going to be importing bugs (such as + for bug moving). XML::Parser requires that the + expat library is already installed on your machine. +


    +        CPAN Download Page: http://search.cpan.org/dist/XML-Parser/
    +        Documentation: http://www.perldoc.com/perl5.6.1/lib/XML/Parser.html
    +      


    4.1.3.15. GD::Graph (any) [Optional]

    In addition to GD listed above, the reporting interface of Bugzilla + needs to have the GD::Graph module installed. +


    +        CPAN Download Page: http://search.cpan.org/dist/GDGraph/
    +        PPM Download Link: http://ppm.activestate.com/PPMPackages/zips/6xx-builds-only/GDGraph.zip
    +        Documentation: http://search.cpan.org/dist/GDGraph/Graph.pm
    +      


    4.1.3.16. GD::Text::Align (any) [Optional]

    GD::Text::Align, as the name implies, is used to draw aligned + strings of text. It is needed by the reporting interface. +


    +        CPAN Download Page: http://search.cpan.org/dist/GDTextUtil/
    +        PPM Download Page: http://ppm.activestate.com/PPMPackages/zips/6xx-builds-only/GDTextUtil.zip
    +        Documentation: http://search.cpan.org/dist/GDTextUtil/Text/Align.pm
    +      


    4.1.3.17. MIME::Parser (any) [Optional]

    MIME::Parser is only needed if you want to use the e-mail interface + located in the contrib directory.


    +        CPAN Download Page: http://search.cpan.org/dist/MIME-tools/
    +        PPM Download Link: http://ppm.activestate.com/PPMPackages/zips/6xx-builds-only/MIME-tools.zip
    +        Documentation: http://search.cpan.org/dist/MIME-tools/lib/MIME/Parser.pm
    +      


    4.1.6. HTTP Server

    4.1.4. HTTP Server

    You have freedom of choice here, pretty much any web server that is capable of running We strongly recommend Apache as the web server to use. The Bugzilla Guide installation instructions, in general, assume you are using Apache. If you have got Bugzilla working using another webserver, - please share your experiences with us.

    Bugzilla Documentation. +


    4.1.7. Bugzilla

    4.1.5. Bugzilla

    You should untar the Bugzilla files into a directory that you're willing to make writable by the default web server user (probably @@ -3113,112 +3657,129 @@ CLASS="QUOTE" >

    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 post-install - checksetup.pl - script, which locks down your installation.

    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 post-install + checksetup.pl + script, which locks down your installation.

    The default Bugzilla distribution is not designed to be placed + in a cgi-bin directory (this + includes any directory which is configured using the + ScriptAlias directive of Apache). This will probably + change as part of + bug + 44659. +


    4.1.8. Setting Up the MySQL Database

    4.1.6. Setting Up the MySQL Database

    After you've gotten all the software installed and working you're ready to start preparing the database for its life as the back end to a high quality bug tracker.

    First, you'll want to fix MySQL permissions to allow access from - Bugzilla. For the purpose of this Installation section, the Bugzilla - username will be +>This first thing you'll want to do is make sure you've given the "bugs", and will have minimal permissions. +>"root" user a password as suggested in + Section 5.6.2. For clarity, these instructions will + assume that your MySQL user for Bugzilla will be "bugs_user", + the database will be called "bugs_db" and the password for + the "bugs_user" user is "bugs_password". You + should, of course, substitute the values you intend to use for your site.

    Begin by giving the MySQL root user a password. MySQL passwords are limited - to 16 characters. -

    Most people use "bugs" for both the user and + database name. +

    bash# - - mysql -u root mysql - -
    mysql> - - UPDATE user SET Password=PASSWORD('<new_password>') - WHERE user='root'; - -
    mysql> - - FLUSH PRIVILEGES; - -

    - - From this point on, if you need to access MySQL as the MySQL root user, - you will need to use - mysql -u root -p - - and enter <new_password>. Remember that MySQL user names have - nothing to do with Unix user names (login names).

    Next, we use an SQL command to create a "bugs""bugs_user" - user, and grant sufficient permissions for checksetup.pl, which we'll use later, to work its magic. This also restricts the "bugs""bugs_user" user to operations within a database called "bugs""bugs_db", and only allows the account to connect from . Modify it to reflect your setup if you will be connecting from another machine or as a different user.

    Remember to set <bugs_password> to some unique password. -

    FLUSH PRIVILEGES; +
    
mysql>
    -
    -            GRANT SELECT,INSERT,UPDATE,DELETE,INDEX,
    -            ALTER,CREATE,DROP,REFERENCES ON bugs.* TO bugs@localhost
    -            IDENTIFIED BY '<bugs_password>';
    -          
    -        
    GRANT SELECT,INSERT,UPDATE,DELETE,INDEX,ALTER,CREATE, + DROP,REFERENCES ON bugs_db.* TO bugs_user@localhost + IDENTIFIED BY 'bugs_password'; +mysql> - - FLUSH PRIVILEGES; - -

    -

    If you are using MySQL 4, the bugs user also needs to be granted - the LOCK TABLES and CREATE TEMPORARY TABLES permissions. + the LOCK TABLES and + CREATE TEMPORARY TABLES permissions.


    4.1.9. 4.1.7. checksetup.pl

    Holger Schurig Holger Schurig for writing this script!) - This script is designed to make sure your MySQL database and other + This script is designed to make sure your perl modules are the correct + version and your MySQL database and other configuration options are consistent with the Bugzilla CGI files. It will make sure Bugzilla files and directories have reasonable permissions, set up the @@ -3352,35 +3896,28 @@ CLASS="filename" >data directory, and create all the MySQL tables. -

    ./checksetup.pl +
    
bash#
    -
    -            ./checksetup.pl
    -          
    -        

    - - The first time you run it, it will create a file called +> The first time you run it, it will create a file called localconfigdatabase name: "bugs""bugs_db" if you're following these directions

    MySQL username: "bugs""bugs_user" if you're following these directions

    Password for the "bugs""bugs_user" - MySQL account; (<bugs_password>) above

    "bugs_password" above)

    @@ -3482,9 +4022,9 @@ CLASS="section" >

    4.1.10. Configuring Bugzilla

    4.1.8. Configuring Bugzilla

    You should run through the parameters on the Edit Parameters page (link in the footer) and set them all to appropriate values. @@ -3508,7 +4048,7 @@ CLASS="section" >

    4.2.1. Dependency Charts


    4.2.2. Bug Graphs


    4.2.3. The Whining Cron

    OpenLDAP with Bugzilla, using any of a number of administration - tools. You should apply the patch attached this bug: + tools. You should apply the patch attached to http://bugzilla.mozilla.org/show_bug.cgi?id=158630, then set - the following object classes for your users: +>bug 158630 + , then set the following object classes for your users:

    http://www.cet.org/tech_tips/malicious_code_mitigation.html/#3http://www.cet.org/tech_tips/malicious_code_mitigation.html/#3. Executing the following code snippet from a UNIX command shell will rectify the problem if your Bugzilla installation is intended for an @@ -3950,13 +4490,13 @@ VALIGN="TOP" >

    Using <meta> tags to set the charset is not recommended, as there's a bug in Netscape 4.x which causes pages - marked up in this way to load twice. See + marked up in this way to load twice. See bug - 126266 for more information including progress toward making +>bug 126266 + for more information including progress toward making bugzilla charset aware by default.

    http://www.snert.com/Software/mod_throttle/ +>. Follow the instructions to install into your Apache install. This module only functions with the Apache web @@ -4134,19 +4674,23 @@ CLASS="section" >

    4.3.1.2. Perl Modules on Win32

    Bugzilla on Windows requires the same perl modules found in Section 4.1.2Section 4.1.3. The main difference is that - windows uses ppm instead of CPAN. + windows uses PPM instead of + CPAN.

    urpmi perl-MailTools ./checksetup.pl (shown in Example 4-1Example 4-2 for the curious) are allowed to override Apache's normal access permissions or else important password information may be exposed to the @@ -4811,7 +5355,7 @@ NAME="http-apache-htaccess" >

    Example 4-1. Example 4-2. .htaccess files for ApacheQ245225 Q245225 for localconfig. For more information, see +>. For more information, see bug - 186383 bug 186383 or


    4.5.1. Bundle::Bugzilla makes me upgrade to Perl 5.6.1


    4.5.2. DBD::Sponge::db prepare failed

    Figure 4-1Figure 4-2.

    Figure 4-1. Other File::Temp error messagesFigure 4-2. Other File::Temp error messages

    Figure 4-2Figure 4-3. The patch is also available as a

    Figure 4-2. Patch for File::Temp in Perl 5.6.0Figure 4-3. Patch for File::Temp in Perl 5.6.0

    Maximum Votes a person can put on a single - bug": It should probably be some number lower than the "Maximum votes per person". Don't set this field to "0" if @@ -6986,12 +7529,11 @@ NAME="security-access" 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 directory - outside the webroot. See + outside the webroot. See bug - 44659 bug 44659 for more information.


    5.7.1. What to Edit


    5.7.2. How To Edit Templates


    5.7.3. Template Formats


    5.7.4. Particular Templates

    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: - http://homepages.kcbbs.gen.nz/~tonyg/http://homepages.kcbbs.gen.nz/~tonyg/.

    http://www.ravenbrook.com/project/p4dtihttp://www.ravenbrook.com/project/p4dti/ . @@ -8545,7 +9086,7 @@ CLASS="QUOTE" http://public.perforce.com/public/perforce/p4dti/index.htmlhttp://public.perforce.com/public/perforce/p4dti/index.html .

    A.7.2. The query page is very confusing. Isn't there a simpler way to query? +> The query page is very confusing. Isn't there a simpler way to query?
    A.7.4. I can't upload anything into the database via the "Create Attachment" - link. What am I doing wrong? + link. What am I doing wrong?
    http://www.bugzilla.org/ +>http://www.bugzilla.org/.

    http://www.mozilla.org/MPL/ +>http://www.mozilla.org/MPL/.

    www.collab.nethttp://www.collab.net/ offers Bugzilla as part of their standard offering to large projects. They do have some minimum fees that are pretty hefty, and generally @@ -9196,7 +9737,7 @@ CLASS="answer" There are dozens of major companies with public - Bugzilla sites to track bugs in their products. A few include: + Bugzilla sites to track bugs in their products. A few include:

    core team, - led by Dave Miller (justdave@netscape.com). + led by Dave Miller (justdave@netscape.com).

    It may be that the support has not been built yet, or that you - have not yet found it. Bugzilla is making tremendous strides in - usability, customizability, scalability, and user interface. It + have not yet found it. Bugzilla is making tremendous strides in + usability, customizability, scalability, and user interface. It is widely considered the most complete and popular open-source bug-tracking software in existence.

    There is currently work in progress to make Bugzilla work on - PostgreSQL and Sybase in the default distribution. You can track - the progress of these initiatives in bugs 98304bug 98304 and 173130bug 173130 respectively.

    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 + control. This location was abandoned for the 2.18 release in favor of the more sensible /usr/bin/perl. If you +>. 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 @@ -9498,7 +10039,7 @@ CLASS="answer" > Yes, the following bit of perl magic will change all the shebang - lines. Be sure to change /usr/local/bin/perl @@ -9605,7 +10146,7 @@ CLASS="answer" > - It is web and e-mail based. You can edit bugs by sending specially + It is web and e-mail based. You can edit bugs by sending specially formatted email to a properly configured Bugzilla, or control via the web.

    Yes - any sort of attachment is allowed, although administrators can - configure a maximum size. + configure a maximum size. Bugzilla gives the user the option of either using the MIME-type supplied by the browser, choosing from a pre-defined list or manually typing any arbitrary MIME-type. @@ -9737,17 +10278,17 @@ CLASS="answer" > - Yes. However, modifying some fields, notably those related to bug + Yes. However, modifying some fields, notably those related to bug progression states, also require adjusting the program logic to compensate for the change.

    There is no GUI for adding fields to Bugzilla at this - time. You can follow development of this feature at + time. You can follow development of this feature in http://bugzilla.mozilla.org/show_bug.cgi?id=91037bug 91037

    - Yes. Look at http://bugzilla.mozilla.org/report.cgi for samples of what - Bugzilla can do in reporting and graphing. +>http://bugzilla.mozilla.org/report.cgi + for samples of what Bugzilla can do in reporting and graphing.

    If you can not get the reports you want from the included reporting @@ -9811,7 +10352,7 @@ CLASS="answer" > - Email notification is user-configurable. By default, the bug id and + 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.

    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 "respond - to messages in the format in which they were sent". For security reasons + to messages in the format in which they were sent". 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.

    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 + format. This CSV format can easily be imported into MS Excel or other spread-sheet applications.

    &ctype=rdf to the URL. RDF +> to the URL. RDF is meant to be machine readable and thus it is assumed that the URL would be generated progmatically so there is no user visible link to this format. @@ -9984,15 +10525,15 @@ CLASS="answer" > - Yes. For more information including available translated templates, + Yes. For more information including available translated templates, see http://www.bugzilla.org/download.html#localizations. The admin interfaces are still not included in these translated - templates and is therefore still English only. Also, there may be - issues with the charset not being declared. See bug 126226 - Yes. No. Yes (using the CSV format). + Yes. No. Yes (using the CSV format).

    - You have no idea. Bugzilla's query interface, particularly with the + You have no idea. Bugzilla's query interface, particularly with the advanced Boolean operators, is incredibly versatile.

    - Bugzilla does not lock records. It provides mid-air collision detection, + Bugzilla does not lock records. It provides mid-air collision detection, and offers the offending user a choice of options to deal with the conflict.

    http://www.mysql.com/doc/B/a/Backup.html +>http://www.mysql.com/doc/B/a/Backup.html.

    - Yes. However, commits to the database must wait - until the tables are unlocked. Bugzilla databases are typically + Yes. However, 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.

    Commercial Bug-tracking software typically costs somewhere upwards - of $20,000 or more for 5-10 floating licenses. Bugzilla consultation + 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.

    - It all depends on your level of commitment. Someone with much Bugzilla + 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 + your Bugzilla install can run untended for years. If your Bugzilla strategy is critical to your business workflow, hire somebody with reasonable UNIX or Perl skills to handle your process management and bug-tracking maintenance & customization. @@ -10224,7 +10765,7 @@ CLASS="answer" > - No. MySQL asks, if you find their product valuable, that you purchase + No. MySQL asks, if you find their product valuable, that you purchase a support contract from them that suits your needs.

    - Run MySQL like this: "mysqld --skip-grant-tables". Please remember this makes MySQL as secure as taping a $100 to the floor of a football stadium bathroom for safekeeping. - Try Klaas Freitag's excellent patch for "whineatassigned" functionality. - You can find it at http://bugzilla.mozilla.org/show_bug.cgi?id=6679bug 6679. This patch is against an older version of Bugzilla, so you must apply the diffs manually. @@ -10443,7 +10984,7 @@ CLASS="answer" You can call bug_email.pl directly from your aliases file, with an entry like this:
    However, this is fairly nasty and subject to problems; you also need to set up your smrsh (sendmail restricted shell) to allow - it. In a pinch, though, it can work. + it. In a pinch, though, it can work.

    If you never receive mail from Bugzilla, chances you do not have - sendmail in "/usr/lib/sendmail". Ensure sendmail lives in, or is symlinked + sendmail in "/usr/lib/sendmail". Ensure sendmail lives in, or is symlinked to, "/usr/lib/sendmail".

    Red Hat's old version of Bugzilla (based on 2.8) worked on Oracle. Red Hat's newer version (based on 2.17.1 and soon to be merged into - the main distribution) runs on PostgreSQL. At this time we know of + the main distribution) runs on PostgreSQL. At this time we know of no recent ports of Bugzilla to Oracle but do intend to support it in the future (possibly the 2.20 time-frame).

    probably OK. If it doesn't come back +> 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 + 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 + 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 + avoiding deletion of data. It is not exhaustive, and was created to do a basic check for the most common problems in Bugzilla databases.

    mysql command line utility to manually insert, delete and modify table - information. There are also more intuitive GUI clients available. + information. There are also more intuitive GUI clients available. Personal favorites of the Bugzilla team are - Well, you can synchronize or you can move bugs. Synchronization will + 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. @@ -10852,8 +11393,8 @@ CLASS="answer" > - Not currently. Bundle::Bugzilla enormously simplifies Bugzilla - installation on UNIX systems. If someone can volunteer to + 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.

    Microsoft has some advice on this matter, as well:

    http://www.activestate.com/Packages/ +>http://www.activestate.com/Packages/.

    A.7.2. - The query page is very confusing. Isn't there a simpler way to query? + The query page is very confusing. Isn't there a simpler way to query?

    The current behavior is acceptable to bugzilla.mozilla.org and most - users. You have your choice of patches - to change this behavior, however. + users. You have your choice of patches to change this behavior, however.

    - Note that these patches are somewhat dated. You will need to apply - them manually. + Note that these patches are somewhat dated. You will need to apply + them manually.

    A.7.4. I can't upload anything into the database via the "Create Attachment" - link. What am I doing wrong? + link. What am I doing wrong?

    The most likely cause is a very old browser or a browser that is - incompatible with file upload via POST. Download the latest Netscape, + incompatible with file upload via POST. Download the latest Netscape, Microsoft, or Mozilla browser to handle uploads correctly.

    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 sanitycheck.cgi to fix it. + replace the old keyword name with a new one. This will cause a problem + with the keyword cache. Run sanitycheck.cgi to fix it.

    Gerv and Myk suggest a 2-space indent, with embedded code sections on - their own line, in line with outer tags. Like this:

    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.

    here. This list includes bugs for the 2.18 release that have already - been fixed and checked into CVS. Please consult the + been fixed and checked into CVS. Please consult the - This is well-documented here: http://bugzilla.mozilla.org/show_bug.cgi?id=49862. Ultimately, it's as easy - as adding the "---" priority field to your localconfig file in the appropriate area, - re-running checksetup.pl, and then changing the default priority in your browser using - "editparams.cgi". +> bug 49862. Ultimately, it's as easy as adding the "---" priority field to your + localconfig file in the appropriate area, re-running checksetup.pl, and then changing the + default priority in your browser using "editparams.cgi".

    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 + 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. @@ -11490,7 +12029,7 @@ NAME="dbdoc" >

    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'.

    The room, previously filled with happy chatter, lapses into reverential silence as Certain Death (better known as the Vice President @@ -11517,7 +12056,7 @@ CLASS="section" >


    B.2.1. Bugzilla Database Basics

    "tinyint" - entry in MySQL. I recommend you refer to the MySQL documentation, - available at + entry in MySQL. I recommend you refer to the MySQL.comMySQL documentation - . Below are the basics you need to know about the Bugzilla database. Check the chart above for more details.

    MySQL searchable documentation. +>.


  • B.2.1.1. Bugzilla Database Tables


    -  Here's an overview of what each table does.  Most columns in each table have
    +  Here's an overview of what each table does. Most columns in each table have
    descriptive names that make it fairly trivial to figure out their jobs.

    -attachments: This table stores all attachments to bugs.  It tends to be your
    +attachments: This table stores all attachments to bugs. It tends to be your
    largest table, yet also generally has the fewest entries because file
    attachments are so (relatively) large.

    -bugs:  This is the core of your system.  The bugs table stores most of the
    +bugs:  This is the core of your system. The bugs table stores most of the
    current information about a bug, with the exception of the info stored in the
    other tables.

    @@ -11719,26 +12256,26 @@ bugs_activity:  This stores information regarding  when -- a history file.

    cc:  This tiny table simply stores all the CC information for any bug which has
    -any entries in the CC field of the bug.  Note that, like most other tables in
    +any entries in the CC field of the bug. Note that, like most other tables in
    Bugzilla, it does not refer to users by their user names, but by their unique
    userid, stored as a primary key in the profiles table.

    components: This stores the programs and components (or products and
    -components, in newer Bugzilla parlance) for Bugzilla.  Curiously, the "program"
    +components, in newer Bugzilla parlance) for Bugzilla. Curiously, the "program"
    (product) field is the full name of the product, rather than some other unique
    identifier, like bug_id and user_id are elsewhere in the database.

    dependencies: Stores data about those cool dependency trees.

    -fielddefs:  A nifty table that defines other tables.  For instance, when you
    +fielddefs:  A nifty table that defines other tables. For instance, when you
    submit a form that changes the value of "AssignedTo" this table allows
    translation to the actual field name "assigned_to" for entry into MySQL.

    -groups:  defines bitmasks for groups.  A bitmask is a number that can uniquely
    -identify group memberships.  For instance, say the group that is allowed to
    +groups:  defines bitmasks for groups. A bitmask is a number that can uniquely
    +identify group memberships. For instance, say the group that is allowed to
    tweak parameters is assigned a value of "1", the group that is allowed to edit
    users is assigned a "2", and the group that is allowed to create new groups is
    -assigned the bitmask of "4".  By uniquely combining the group bitmasks (much
    +assigned the bitmask of "4". By uniquely combining the group bitmasks (much
    like the chmod command in UNIX,) you can identify a user is allowed to tweak
    parameters and create groups, but not edit users, by giving him a bitmask of
    "5", or a user allowed to edit users and create groups, but not tweak
    @@ -11753,15 +12290,15 @@ keywords: Unlike what you'd think, this table  associated with which bug id's.

    logincookies: This stores every login cookie ever assigned to you for every
    -machine you've ever logged into Bugzilla from.  Curiously, it never does any
    -housecleaning -- I see cookies in this file I've not used for months.  However,
    +machine you've ever logged into Bugzilla from. Curiously, it never does any
    +housecleaning -- I see cookies in this file I've not used for months. However,
    since Bugzilla never expires your cookie (for convenience' sake), it makes
    sense.

    longdescs:  The meat of bugzilla -- here is where all user comments are stored!
    You've only got 2^24 bytes per comment (it's a mediumtext field), so speak
    sparingly -- that's only the amount of space the Old Testament from the Bible
    -would take (uncompressed, 16 megabytes).  Each comment is keyed to the
    +would take (uncompressed, 16 megabytes). Each comment is keyed to the
    bug_id to which it's attached, so the order is necessarily chronological, for
    comments are played back in the order in which they are received.

    @@ -11769,12 +12306,12 @@ milestones:  Interesting that milestones are assoc in this table, but Bugzilla does not yet support differing milestones by
    product through the standard configuration interfaces.

    -namedqueries:  This is where everybody stores their "custom queries".  Very
    +namedqueries:  This is where everybody stores their "custom queries". Very
    cool feature; it beats the tar out of having to bookmark each cool query you
    construct.

    products:  What products you have, whether new bug entries are allowed for the
    -product, what milestone you're working toward on that product, votes, etc.  It
    +product, what milestone you're working toward on that product, votes, etc. It
    will be nice when the components table supports these same features, so you
    could close a particular component for bug entry without having to close an
    entire product...
    @@ -11809,7 +12346,7 @@ mysql> show columns from table;
    mysql> select * from table;

      -- note: this is a very bad idea to do on, for instance, the "bugs" table if
    -you have 50,000 bugs.  You'll be sitting there a while until you ctrl-c or
    +you have 50,000 bugs. You'll be sitting there a while until you ctrl-c or
    50,000 bugs play across your screen.

      You can limit the display from above a little with the command, where
    @@ -11822,7 +12359,7 @@ mysql> select * from table where (column  mysql> select * from table where (column != "some info");

      Let's take our example from the introduction, and assume you need to change
    -the word "verified" to "approved" in the resolution field.  We know from the
    +the word "verified" to "approved" in the resolution field. We know from the
    above information that the resolution is likely to be stored in the "bugs"
    table. Note we'll need to change a little perl code as well as this database
    change, but I won't plunge into that in this document. Let's verify the
    @@ -11833,10 +12370,10 @@ mysql> show columns from bugs
      (exceedingly long output truncated here)
    | bug_status| enum('UNCONFIRMED','NEW','ASSIGNED','REOPENED','RESOLVED','VERIFIED','CLOSED')||MUL | UNCONFIRMED||

    -  Sorry about that long line.  We see from this that the "bug status" column is
    +  Sorry about that long line. We see from this that the "bug status" column is
    an "enum field", which is a MySQL peculiarity where a string type field can
    -only have certain types of entries.  While I think this is very cool, it's not
    -standard SQL.  Anyway, we need to add the possible enum field entry
    +only have certain types of entries. While I think this is very cool, it's not
    +standard SQL. Anyway, we need to add the possible enum field entry
    'APPROVED' by altering the "bugs" table.

    mysql> ALTER table bugs CHANGE bug_status bug_status
    @@ -11852,15 +12389,15 @@ mysql> show columns from bugs;

      you'll see that the bug_status field has an extra "APPROVED" enum that's
    available!  Cool thing, too, is that this is reflected on your query page as
    -well -- you can query by the new status.  But how's it fit into the existing
    +well -- you can query by the new status. But how's it fit into the existing
    scheme of things?
      Looks like you need to go back and look for instances of the word "verified"
    in the perl code for Bugzilla -- wherever you find "verified", change it to
    "approved" and you're in business (make sure that's a case-insensitive search).
    Although you can query by the enum field, you can't give something a status
    -of "APPROVED" until you make the perl changes.   Note that this change I
    +of "APPROVED" until you make the perl changes. Note that this change I
    mentioned can also be done by editing checksetup.pl, which automates a lot of
    -this.  But you need to know this stuff anyway, right?
    +this. But you need to know this stuff anyway, right?

    http://linas.org/linux/pm.html +>http://linas.org/linux/pm.html.

    D.1. Red Hat Bugzilla

    Red Hat's old fork of Bugzilla which was based on version 2.8 is now - obsolete. The newest version in use is based on version 2.17.1 and is in - the process of being integrated into the main Bugzilla source tree. The + obsolete. The newest version in use is based on version 2.17.1 and is in + the process of being integrated into the main Bugzilla source tree. The back-end is modified to work with PostgreSQL instead of MySQL and they have custom templates to get their desired look and feel, but other than that it - is Bugzilla 2.17.1. Dave Lawrence of Red Hat put forth a great deal of + is Bugzilla 2.17.1. Dave Lawrence of Red Hat put forth a great deal of effort to make sure that the changes he made could be integrated back into the main tree. Bug - 98304 exists to track this integration. +>Bug 98304 + exists to track this integration.

    URL: - URL: http://bugzilla.redhat.com/bugzilla/http://bugzilla.redhat.com/bugzilla/

    Scarab is a new open source bug-tracking system built using Java Servlet technology. It is currently at version 1.0 beta 13.

    URL: - URL: http://scarab.tigris.orghttp://scarab.tigris.org/

    functionality.

    URL: - URL: http://www.perforce.com/perforce/technotes/note052.html - http://www.perforce.com/perforce/technotes/note052.html

    URL: - URL: http://www.sourceforge.nethttp://www.sourceforge.net

    Version 1.1, March 2000

    http://www.gnu.org/copyleft/ - - .

    http://www.gnu.org/copyleft/.

    Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of @@ -12666,7 +13196,7 @@ NAME="gfdl-howto" of the License in the document and put the following copyright and license notices just after the title page:

    0-9, high ascii

    CPAN - Comprehensive Perl Archive Network
    (CPAN)

    P

    Perl Package Manager
    (PPM)

    http://aspn.activestate.com/ASPN/Downloads/ActivePerl/PPM/ +

    Product