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:
http://www.cpan.org/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/