什么是Bugzilla?
Bugzilla是一个臭虫的数据库。它让用户报告软件的臭虫而且把它们转给合适的开发者。开发者能使用bugzilla保持一
个要做的事情的优先表,还有时间表和跟踪相关性。
不是所有的"bugs"都是臭虫。一些数据库中的内容是作为增强的请求(RFE)。一个RFE是一个严重级别字段被设为
"enhancement"的"臭虫".人们常说"bug",实际上意思是Bugzilla中的记录,所以RFEs经常被称作bug。根据客户的加强
的请求来安排你的工作,Bugzilla会帮助你跟踪它们而且允许其它人看到你会作些什么.如果其它人看到了你的计划,他
们就会避免重复你的工作而且可能帮助你解决或反馈给你。
一个臭虫的解剖
臭虫和RFEs由许多字段组成。下面有一些介绍。
Component
Mozilla应用由许多不同的部分组成如网络库函数,java脚本和版面设计引擎。
Status Whiteboard
用来写简短的bug标注
Keyword
用来存储一些关键字。
Target Milestone
由负责这个bug的人来设置
Dependency
如果一个bug在另一个bug修复之后才能被修复,就是相关性。
Attachment
增加一个附件上去会非常有用。测试事件、屏幕显示和log记录等可以有助于查明bug以及帮助开发者重新产生它。如果你
修复了bug,要附带bug的补丁程序上去。由于它让他人很容易的找到和测试,所以这是较好的方法来跟踪补丁。
一个臭虫的存活周期
对头一次被举报bug作些什么由是谁报告的决定。新的Bugzilla帐户由缺省建立而并没被证实-这就是指QA部门需要在把
它转变成一个"新"bug之前找到并证实它的存在。如果你已经使用Bugzilla一段时间,相信你知道如何创建一个"新
"bug。当一个bug变成"新",开发者可能会研究这个bug,或者接受或者把它转给别人。
如果这个BUG一周内一直没被处理过。Bugzilla就会一直用email骚扰它的属主,直到采取行动。无论何时一个bug被重新
指定或内容变化,它的状态被设置回"new"。"new"状态表示这个bug被重新加到一个特殊的开发者的工作中,并不是这个
bug被重新报告了。
那些有权限的人可以修改一个bug的所有的记录(缺省,你只能修改一些)。每当你修改了一个bug,你最好加一些评论来解
释你正在做些什么和你为什么做。每当你作了些事,如修改了内容、重新分配了bug、建立附件、增加了相关性和对某些
人作了备份,应作个标注。每当一些人修改了bug报告或加了一个评论,他们将会被加到CC列表中,bug报告中的改变会显
示在要发给属主、写报告者和CC列表中的人的电子邮件中。
当一个bug被修复它会被标记上RESOLVED并且会有以下的决定。
FIXED
这个bug的修补已经被写到数据库中而且被测试过的人标记成FIXED
INVALID
描述的的问题不是一个bug,或不是Mozilla的bug.
WONTFIX
描述的的问题将永远不会被修复。
LATER
描述的的问题将不会在产品的这个版本中解决
REMIND
描述的的问题可能不会在产品的这个版本中解决,但是也许也会。
DUPLICATE
描述的的问题是一个存在的bug的复件。标记bug为复件需要复件bug的bug号码而且将会加一个评论和bug号码到bug复件
的描述字段中去。
WORKSFORME
所有要重新产生这个bug的企图是无效的。如果有更多的信息出现,请重新分配这个bug,而现在只把它归档。
MOVED
这个bug是对于一个特殊的以Mozilla为基础的版本,而不影响mozilla.org的代码。这个bug被转移到影响Mozilla起源的
发布者的数据库中去。
QA查找解决了问题的bugs并且确保已经采取了正确的手段。如果他们同意,这个bug被标记成VERIFIED.在产品出来之前
bugs保持这个状态,之后被标记成CLOSED。Bugs可以又回来而变成REOPENED。
当改变其他人的bugs时要注意。通常最好是把你打算改变的做个标记,作为一个注释让bug的属主看到这个而自己去修
改。例如,如果你认为一个bug是另一个的重复,在Additional Comments部分作个标注。
如果你对一些人的bugs作了大量有用的注释,他们可能相信你的判断力从而要你去自己直接修改它们,但是除非他们愿
意,你最好小心而且只作注释。
Bugzilla是开放源代码的软件。它的源代码遵循Mozilla Public License.
如果你的机器已经有了MySQL和MySQL-related perl packages,那么安装起来是非常直接的.如果还没有安装这些基本的
软件,那么你需要做的第一件事情就是安装它们.后面的事情就是建立一个web服务器来运行cgi脚本.
如果想要bugzilla正确运行,你需要安装以下软件:
1.MySQL服务器和客户端软件.
2.Perl(5.004或更高版本).
3.DBI perl 模块.
4.Data::Dumper perl 模块.
5.MySQL related perl module collection.
6.TimeDate perl module collection.
7.GD perl 模块(1.18或更高版本)
8.Chart::Base perl 模块(0.99或更高版本).
9.你选择的web服务器软件
1.1下载和建立MySQL数据库.
大部分的linux版本缺省都安装有MySQL数据库,这里就不多讲了.但是如果你需要mysqld接收大64K长的包,在启动mysqld
时候加上"-O max_allowed_packet=1M".
1.2Perl(5.004或更高版本)
一样,不多讲了.
1.3DBI perl 模块
DBI模块是由其它数据库相关Perl模块使用的一般性Perl模块.下载了这个模块以后.
1.解包到一个目录中.
2.输入以下命令:
perl Makefile.PL
make
make test
make install
对于绝大多数的perl模块安装都是这样,如果没有错误,那么再往下.
1.4Data::Dumper perl 模块
这个模块为Perl提供数据结构一致性.下载后安装过程同上.
1.5MySQL related perl module collection
安装同上,注意只选MySQL,不选mSQL.
1.6TimeDate perl module collection
安装同上.
1.7GD perl 模块(1.18或更高版本)
下载GD模块的同时别忘了下载gd-1.8.3,解包后把GD包中的path_gd.pl拷备到gd-1.8.3目录中,并执行perl
path_gd.pl,然后先在gd-1.8.3中编译
#./configure --enable-jpeg --enable-freetype --enable-xpm
# make
# make install
然后再到GD的目录中,象以上编译Perl模块一样的过程.
1.8Chart::Base perl 模块(0.99或更高版本)
下载后DBI模块编译过程一样.
1.9HTTP服务器程序设置.
把bugzilla的程序解包到一个目录中,在HTTP服务器设置中,的srm.conf中加入ScriptAlias /bugzilla
"/home/httpd/bugzilla/",在access.conf中,此bugzilla目录应该有Options ExecCGI选项.
2.安装Bugzilla文件
你应该把bugzilla文件解包到一个可以让缺省web服务器的属主(可能是nobody)可以写的目录中.
3.建立MySQL数据库
Bugzilla经常以用户"bugs"登录,而且没有密码,MySQL的权限维护是一个复杂的事情,我把它们关掉了,如果你也想这么
做,用下面的命令(其中的HOSTNAME用运行mysql的机器名来代替)
#mysql mysql
DELETE FROM host;
DELETE FROM user;
INSERT INTO host VALUES ('localhost','%','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
INSERT INTO host VALUES (HOSTNAME,'%','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
INSERT INTO user VALUES
('localhost','root','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
INSERT INTO user VALUES (HOSTNAME,'','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
INSERT INTO user VALUES
(HOSTNAME,'root','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
INSERT INTO user VALUES
('localhost','','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
"Y"的数量和版本有关,3.22.23b的版本没问题.运行完后,运行mysqladmin reload来重新装载许可列表.下面你就可以运
行神奇的checksetup.pl脚本,非常感想Holger
Schurig 写了这个脚本,它会合理的设置权限,并建立"data"目录,第一次运行时它会建立一个叫"localconfig"的文件,
你可能要检查并修改它.重新运行这个脚本它就会真正的工作了.如果没有成功建立数据库,你可能要手工创建数据库,并用
bugzilla目录下面的mysql目录下的脚本建立表了.(可能会有一点小问题,相信如果你懂一些SQL语句,会很容易解决的)
如果这些都成功了,那么你就可以用web浏览了.你要先注册(最先的11个用户为特殊用户,有改参数,添加项目等功能),输
入你的e-mail地址,它会调用sendmail(这就是说你需要装有sendmail,要不然你就要改程序了)把你的密码发到你的信箱
中,以后你就用这个密码来登录.还有,这个for mysql的bugzilla可是从redhat下载的,你如果要用,还要自己改一改它的
界面哟,关于mysql的安全你也要考虑哟,这里我就不讲了.
以上测试是在Turbolinux workstation 6.1上完成的。心动不如行动,下面是下载的网址.
Appendix A. Required Software Download Links
All of these sites are current as of February 17, 1999. Hopefully
they'll stay current for a while.
MySQL: http://www.mysql.org
Perl: http://www.perl.org
CPAN: http://www.cpan.org
DBI Perl module: ftp://ftp.cpan.org/pub/perl/CPAN/modules/by-module/DBI/
Data::Dumper module:
ftp://ftp.cpan.org/pub/perl/CPAN/modules/by-module/Data/
MySQL related Perl modules:
ftp://ftp.cpan.org/pub/perl/CPAN/modules/by-module/Mysql/
TimeDate Perl module collection:
ftp://ftp.cpan.org/pub/perl/CPAN/modules/by-module/Date/
GD Perl module: ftp://ftp.cpan.org/pub/perl/CPAN/modules/by-module/GD/
Chart::Base module:
ftp://ftp.cpan.org/pub/perl/CPAN/modules/by-module/Chart/
RedHat Bugzilla:ftp://people.redhat.com/dkl/