升级 Bugzilla 是我们都希望不时进行的操作,无论是为了获得新功能还是获取最新的安全修复程序。更新的难易程度取决于几个因素。
如果新版本是修订版本或新的小版本
已经进行了多少(如果有)本地更改
还有三种不同的方法来升级您的安装。
您可以使用的选项可能取决于您要进行的跨越幅度和/或您的网络配置。
修订版本通常是为了修复安全漏洞而发布的,其特点是第三个数字的增加。例如,当 2.16.2 发布时,它是 2.16.1 的修订版本。
当 Bugzilla 团队认为在上一个小版本和当前时间之间已经取得了显著进展时,通常会发布小版本。这些版本通常会经过一段稳定期和发布候选版本,但是使用开发版本或发布候选版本超出了本文档的范围。小版本可以通过第二个数字或次要版本的增加来区分。例如,2.16.2 是比 2.14.5 更新的小版本。
本节中的示例是假设您正在更新到 2.16.2 版本编写的。无论您是更新到新的小版本还是新的修订版本,过程都是相同的。但是,升级到新的小版本时,遇到问题的几率会增加,特别是如果您进行了本地更改。
这些示例还假设您的 Bugzilla 安装在/var/www/html/bugzilla。如果情况并非如此,只需在适当的地方替换正确的路径即可。
示例 5-1. 使用 CVS 升级
每个 Bugzilla 版本,无论是修订版本还是小版本,都在 CVS 中进行了标记。此外,自 2.12 版本以来,我们分发的每个 tarball 压缩包都已为使用 CVS 做好了准备。但是,这确实要求您能够访问端口 2401 上的 cvs-mirror.mozilla.org。
![]() | 如果您可以做到这一点,使用 CVS 更新可能是最轻松的方法,特别是如果您有很多本地更改。 |
bash$ cd /var/www/html/bugzilla bash$ cvs login Logging in to :pserver:anonymous@cvs-mirror.mozilla.org:2401/cvsroot CVS password: anonymous bash$ cvs -q update -r BUGZILLA-2_16_2 -dP P checksetup.pl P collectstats.pl P globals.pl P docs/rel_notes.txt P template/en/default/list/quips.html.tmpl |
![]() | 如果 cvs update 的输出中的一行以C开头,则表示该文件包含本地更改,CVS 无法正确合并。您需要在 Bugzilla(或至少是使用该文件的部分)可用之前手动解决这些冲突。 |
![]() | 您还需要运行 ./checksetup.pl,您的 Bugzilla 升级才能完成。 |
示例 5-2. 使用 tarball 压缩包升级
如果您无法或不愿意使用 CVS,那么始终可用的另一个选项是下载最新的 tarball 压缩包。这是最难使用的选项,特别是如果您有本地更改。
bash$ cd /var/www/html bash$ wget ftp://ftp.mozilla.org/pub/webtools/bugzilla-2.16.2.tar.gz Output omitted bash$ tar xzvf bugzilla-2.16.2.tar.gz bugzilla-2.16.2/ bugzilla-2.16.2/.cvsignore bugzilla-2.16.2/1x1.gif Output truncated bash$ cd bugzilla-2.16.2 bash$ cp ../bugzilla/localconfig* . bash$ cp -r ../bugzilla/data . bash$ cd .. bash$ mv bugzilla bugzilla.old bash$ mv bugzilla-2.16.2 bugzilla bash$ cd bugzilla bash$ ./checksetup.pl Output omitted |
![]() | cp 命令都以句点结尾,这是一个非常重要的细节,它告诉 shell 目标目录是当前工作目录。此外,./checksetup.pl 开头的句点也很重要,不能省略。 |
![]() | 您现在将不得不手动重新应用您对本地安装所做的任何更改。 |
示例 5-3. 使用补丁升级
Bugzilla 团队通常会为修订版本提供补丁文件,以便从最新的修订版本升级到新的修订版本。您也可以阅读发行说明并获取附加到所提及错误的补丁,但使用发布的补丁文件更安全,因为有时补丁在签入之前会被更改(用于小的拼写修复等)。理论上也可以搜索已修复的错误列表并从小版本中挑选要应用的补丁,但这也不建议这样做,因为您最终会得到一个大杂烩的 Bugzilla,它实际上不是任何版本。这也将使将来升级更加困难。
bash$ cd /var/www/html/bugzilla bash$ wget ftp://ftp.mozilla.org/pub/webtools/bugzilla-2.16.1-to-2.16.2.diff.gz Output omitted bash$ gunzip bugzilla-2.16.1-to-2.16.2.diff.gz bash$ patch -p1 < bugzilla-2.16.1-to-2.16.2.diff patching file checksetup.pl patching file collectstats.pl patching file globals.pl |
![]() | 如果您这样做,请注意这不会更改您的CVS目录中的条目,因此可能会使将来使用 CVS 进行更新(示例 5-1)更加困难。 |