Upgrading to new Bugzilla releases is very simple. There is a script included with Bugzilla that will automatically do all of the database migration for you.
The following sections explain how to upgrade from one version of Bugzilla to another. Whether you are upgrading from one bug-fix version to another (such as 3.0.1 to 3.0.2) or from one major version to another (such as from 3.0 to 3.2), the instructions are always the same.
Any examples in the following sections are written as though the user were updating to version 2.22.1, but the procedures are the same no matter what version you're updating to. Also, in the examples, the user's Bugzilla installation is found at /var/www/html/bugzilla. If that is not the same as the location of your Bugzilla installation, simply substitute the proper paths where appropriate.
Before you start your upgrade, there are a few important steps to take:
Read the Release Notes of the version you're upgrading to, particularly the "Notes for Upgraders" section.
View the Sanity Check (Section 3.16) page on your installation before upgrading. Attempt to fix all warnings that the page produces before you go any further, or you may experience problems during your upgrade.
Shut down your Bugzilla installation by putting some HTML or text in the shutdownhtml parameter (see Section 3.1).
Make a backup of the Bugzilla database. THIS IS VERY IMPORTANT. If anything goes wrong during the upgrade, your installation can be corrupted beyond recovery. Having a backup keeps you safe.
Upgrading is a one-way process. You cannot "downgrade" an upgraded Bugzilla. If you wish to revert to the old Bugzilla version for any reason, you will have to restore your database from this backup.
Here are some sample commands you could use to backup your database, depending on what database system you're using. You may have to modify these commands for your particular setup.
mysqldump --opt -u bugs -p bugs > bugs.sql
pg_dump --no-privileges --no-owner -h localhost -U bugs > bugs.sql
There are three ways to get the new version of Bugzilla. We'll list them here briefly and then explain them more later.
If have cvs installed on your machine and you have Internet access, this is the easiest way to upgrade, particularly if you have made modifications to the code or templates of Bugzilla.
This is a very simple way to upgrade, and good if you haven't made many (or any) modifications to the code or templates of your Bugzilla.
If you have made modifications to your Bugzilla, and you don't have Internet access or you don't want to use cvs, then this is the best way to upgrade.
You can only do minor upgrades (such as 3.0 to 3.0.1 or 3.0.1 to 3.0.2) with patches.
If you have modified the code or templates of your Bugzilla, then upgrading requires a bit more thought and effort. A discussion of the various methods of updating compared with degree and methods of local customization can be found in Section 6.2.2.
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 3.0 to 3.0.1 should be fairly painless even if you are heavily customized, but going from 2.18 to 3.0 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.
This requires that you have cvs installed (most Unix machines do), and requires that you are able to access cvs-mirror.mozilla.org on port 2401, which may not be an option if you are behind a highly restrictive firewall or don't have Internet access.
The following shows the sequence of commands needed to update a Bugzilla installation via CVS, and a typical series of results.
bash$ cd /var/www/html/bugzilla bash$ cvs login Logging in to :pserver:email@example.com:2401/cvsroot CVS password: ('anonymous', or just leave it blank) bash$ cvs -q update -r BUGZILLA-2_22_1 -dP P checksetup.pl P collectstats.pl P docs/rel_notes.txt P template/en/default/list/quips.html.tmpl (etc.)
If a line in the output from cvs update begins with a C, 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.
If you are unable (or unwilling) to use CVS, another option that's always available is to obtain the latest tarball from the Download Page and create a new Bugzilla installation from that.
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 /var/www/html directory (or its equivalent, if you use something else) and omit the first three lines of the example.
bash$ cd /var/www/html bash$ wget http://ftp.mozilla.org/pub/mozilla.org/webtools/bugzilla-2.22.1.tar.gz (Output omitted) bash$ tar xzvf bugzilla-2.22.1.tar.gz bugzilla-2.22.1/ bugzilla-2.22.1/.cvsignore (Output truncated) bash$ cd bugzilla-2.22.1 bash$ cp ../bugzilla/localconfig* . bash$ cp -r ../bugzilla/data . bash$ cd .. bash$ mv bugzilla bugzilla.old bash$ mv bugzilla-2.22.1 bugzilla
The cp commands both end with periods which is a very important detail--it means that the destination directory is the current working directory.
This upgrade method will give you a clean install of Bugzilla. That's fine if you don't have any local customizations that you want to maintain. If you do have customizations, then you will need to reapply them by hand to the appropriate files.
A patch is a collection of all the bug fixes that have been made since the last bug-fix release.
If you are doing a bug-fix upgrade—that is, one where only the last number of the revision changes, such as from 2.22 to 2.22.1—then you have the option of obtaining and applying a patch file from the Download Page.
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.
bash$ cd /var/www/html/bugzilla bash$ wget http://ftp.mozilla.org/pub/mozilla.org/webtools/bugzilla-2.22-to-2.22.1.diff.gz (Output omitted) bash$ gunzip bugzilla-2.22-to-2.22.1.diff.gz bash$ patch -p1 < bugzilla-2.22-to-2.22.1.diff patching file checksetup.pl patching file collectstats.pl (etc.)
Be aware that upgrading from a patch file does not change the entries in your CVS directory. This could make it more difficult to upgrade using CVS (Section 184.108.40.206) in the future.
Now that you have the new Bugzilla code, there are a few final steps to complete your upgrade.
If your new Bugzilla installation is in a different directory or on a different machine than your old Bugzilla installation, make sure that you have copied the data directory and the localconfig file from your old Bugzilla installation. (If you followed the tarball instructions above, this has already happened.)
If this is a major update, check that the configuration (Section 2.2) for your new Bugzilla is up-to-date. Sometimes the configuration requirements change between major versions.
If you didn't do it as part of the above configuration step, now you need to run checksetup.pl, which will do everything required to convert your existing database and settings for the new version:
bash$ cd /var/www/html/bugzilla bash$ ./checksetup.pl
The period at the beginning of the command ./checksetup.pl is important and can not be omitted.
If this is a major upgrade (say, 2.22 to 3.0 or similar), running checksetup.pl on a large installation (75,000 or more bugs) can take a long time, possibly several hours.
Clear any HTML or text that you put into the shutdownhtml parameter, to re-activate Bugzilla.
View the Sanity Check (Section 3.16) page in your upgraded Bugzilla.
It is recommended that, if possible, you fix any problems you see, immediately. Failure to do this may mean that Bugzilla will not work correctly. Be aware that if the sanity check page contains more errors after an upgrade, it doesn't necessarily mean there are more errors in your database than there were before, as additional tests are added to the sanity check over time, and it is possible that those errors weren't being checked for in the old version.
Bugzilla 3.0 introduced the ability to automatically notify administrators when new releases are available, based on the upgrade_notification parameter, see Section 3.1. Administrators will see these notifications when they access the index.cgi page, i.e. generally when logging in. Bugzilla will check once per day for new releases, unless the parameter is set to "disabled". If you are behind a proxy, you may have to set the proxy_url parameter accordingly. If the proxy requires authentication, use the http://user:pass@proxy_url/ syntax.