對於負責提供支持的人而言,保持對問題、難題及其修訂的跟蹤,可能會是一項棘手的任務;不過,有一個完美的開源方案可以滿足這一要求:Bugzilla.安裝它之後,您就可以方便地跟蹤 bug 了,並可在發現特定的問題和解決方案時得到通知.本文給出了在 Linux系統上安裝 Bugzilla 的逐步指南.
Bugzilla 是一個缺陷或 bug 跟蹤系統——這個系統能夠讓個人或者團隊開發人員保持 對他們的產品中突出 bug 的跟蹤.此類系統允許用戶跟蹤 bug 和代碼修改,與其他隊友溝通,提交和回顧修訂補丁,實現 質量保證.
Bugzilla 在開發人員社區中非常著名,原因在於:
它是一個功能全面的(full-featured)實現.
它得到開發人員社區的積極支持,並且經常得到很多整日使用它的用戶的積極升級.
它是開源的.
它是免費的.
很多組織都在使用 Bugzilla,包括 IBM 以及 IBM 的 Linux Technology Center.您可以按照文中的 Bugzilla 安裝說明,將這個 bug-and-solution 跟蹤工具添加到您的 Linux 系統中.
安裝的先決條件
Bugzilla 的最新穩定版本是 2.18rc3,它要求在您的 Linux 系統上已經安裝了下面的軟體版本:
- Perl 版本 5.6.0 或者更高的版本,它應該包含下面的 Perl 模塊版本:
- AppConfig 1.52
- CGI 2.93
- Data::Dumper,任意版本
- Date::Format 2.21
- DBI 1.36
- DBD::mysql 2.1010
- File::Spec 0.82
- File::Temp,任意版本
- Template 2.08
- Text::Wrap 2001.0131
- MySQL 版本 3.23.41 或者更高的版本.
- 一個 HTTP Web 伺服器,最好是 Apache 或者 IBM_HTTP 伺服器(這裡我將使用 Apache).
- 一個郵件傳輸代理,比如 Sendmail 8.7 或者更高的版本.
如果您不能確定是否已經安裝了正確的 Perl 和 MySQL 軟體版本以及 Apache,可以這樣來檢驗 那些軟體包:
- 對於 Perl,輸入 $ perl -v.
- 對於 MySQL,輸入 $ mysql -V.
要檢驗 Web 伺服器的版本,您可以這樣訪問 Web 伺服器的測試頁:
http://your-machine-name/
Web伺服器的測試頁將為您提供關於伺服器的所有基本信息,這是一個極好的指示工具,表明您已經正確地安裝了伺服器!
由於本文只介紹 Bugzilla 的安裝,

假定您已經擁有可用的 Perl、MySQL、Apache 和 sendmail,或者可以安裝它們.
開始安裝
如果您時間緊張,那麼可以參考此列表來安裝Bugzilla.(該列表給出了指向適當代碼區域的鏈接,以供參考.)
1 從 Bugzilla 的站點獲得 最新的 tarball.
2 解壓 Bugzilla tarball.
3 安裝 適當的 Perl 模塊.
4 如果需要,從 CPAN 獲得正確的 Perl 模塊.
5 如果必須執行步驟 4,那麼返回並再次執行 步驟 3, 確認 Perl 模塊正確.
6 在 bugzilla 目錄中 創建 一個 localconfig 文件.
7 配置 localconfig 文件,以訪問 MySQL 資料庫.
8 連接到 MySQL 的實例.
9 為 Bugzilla 創建 一個資料庫帳號.
10 重新執行 Perl 模塊設置檢查.
11 編輯 HTTP 伺服器的配置文件.
12 訪問 Bugzilla 頁面,並使用 checksetup.pl Perl 腳本所創建的管理員 帳號/口令 登錄.
13 完成.

訪問 Bugzilla Web 站點(請參閱 參考資料 部分的鏈接),下載應用程序的最新 tarball.然後將tarball放入一個Web伺服器用戶可以訪問的目錄.在本例中,由於您正在使用 Apache Web 伺服器,

您需要 將 tarball 下載到 Apache 的默認目錄中.大部分 Apache 的基本安裝允許「apache」用戶訪問 /var/www/html/ 目錄.
請查閱 Apache 安裝的文件,以確保將 tarball 放入了可以訪問的目錄.在任何情況下您都可以根據需要對此進行修改.
解開 Bugzilla
清單 1 展示了如何將所有 Bugzilla 文件解壓到一個名為 bugzilla-2.1.8rc3 的目錄中.簡單起見, 您可以選擇使用所示的 move 命令將那個目錄重命名為「bugzilla」.
清單 1. 解壓 Bugzilla tarball
$ cd /var/www/html/
$ tar zxvf bugzilla-2.18rc3.tgz
$ mv bugzilla-2.18rc3/ bugzilla/
安裝 Perl 模塊
清單2中的Perl腳本檢查您的系統上是否已經安裝了所需的Perl模塊.它還會確認您是否擁有支持曲線圖和報表等特性的可選 Perl 模塊.
清單 2. Perl 模塊安裝
$ su root
$ ./checksetup.pl
這個腳本運行后,將告訴您需要哪些模塊,以及從 CPAN 倉庫安裝它們所需要的相應的 CPAN 命令.那個命令 類似於以下命令:
$ perl -MCPAN -e 'install ""'
為需要安裝的每一個Perl模塊執行這個命令.如果您已經連接到Internet,那麼會自動地下載和安裝所 需要的模塊.
完成所有所需模塊的安裝后,重新運行checksetup.pl腳本.如果一切正常,您應該會看到指出所有需要的 Perl 模塊都已經安裝的輸出.
配置 Bugzilla
這個腳本在 bugzilla 目錄中創建一個名為 localconfig 文件(如清單 3 所示).
清單 3. Bugzilla 配置
$ vi localconfig
配置 Bugzilla 應用程序使用您的本地資料庫伺服器.該命令只是會在 vi 編輯器中打開這個文件. 在此,您只需要修改這個文件中的一個值,即 $db_pass 欄位, 這是 bugzilla 的 MySQL 帳號(您馬上就要創建它)所使用的口令.
如果您擁有不只一個 「定製的」 MySQL 安裝,那麼您應該檢查所有 $db 設置,

它們對應於主機名、通信埠,等等.
為 Bugzilla 創建一個資料庫帳號
然後,您需要為Bugzilla創建MySQL資料庫.連接到MySQL資料庫實例,執行下面的命令:
清單 4. 添加 Bugzilla MySQL 帳號(版本 4.0 或者更新版本)
mysql> GRANT SELECT, INSERT, UPDATE,
DELETE, INDEX, ALTER, CREATE, LOCK TABLES,
CREATE TEMPORARY TABLES, DROP,
REFERENCES ON bugs.* TO bugs@localhost
IDENTIFIED BY '$db_pass';
mysql> FLUSH PRIVILEGES;
這組命令創建了bugs用戶,並授予那個用戶帳號本地連接到「bugs」資料庫時的多級訪問許可權.如果您要連接到遠程的資料庫,或者使用任何其他定製的配置,可以參閱 MySQL Administration 文檔 (請參閱 參考資料),以獲得類似的命令.
再次檢查那些 Perl 模塊
為了再一次讓自己確信已經安裝了所需要的模塊,請在 Bugzilla 目錄中重新運行 checksetup.pl 腳本(清單 5).現在它會檢測到 localconfig 已經被修改,並且它會啟動用戶界面編輯進程.
之後,使用在localconfig文件中指定的帳號創建「bugs」資料庫,並在資料庫中創建必要的表.
清單 5. 在 Bugzilla 目錄中重新運行 checksetup.pl
$ ./checksetup.pl

,在這個過程中會詢問您希望如何配置 Bugzilla 的管理員帳號.
編輯 HTTP 伺服器的配置
在大部分基本的 Apache 安裝中,httpd.conf 文件位於 /etc/httpd/conf/ 目錄.一定要檢查您的安裝,確保 從正確的目錄中打開 Apache 配置文件.使用下面的命令打開它:$ vi /etc/httpd/conf/httpd.conf.
您需要編輯這個文件中的一些行,令 Apache 能夠利用 Bugzilla.

,您需要允許 Apache 運行 cgi-bin 目錄之外的 CGI 腳本.為此,必須在 httpd.conf 中添加(或者去除註釋)以下這一行: AddHandler cgi-script .cgi.
然後,您需要允許 Bugzilla 的 .cgi 文件能夠在 Bugzilla 目錄中運行.將下面這兩行添加到 指示符中:
......
Options ExecCGI FollowSymLinks
<---- add this line.
AllowOverride Limit
<---- add this line.

一個步驟,通過將下面的內容添加到 httpd.conf 中 DirectoryIndex 那一行的

,您必須配置 Apache,以便在進入 Bugzilla 目錄時查找 index.cgi 文件: DirectoryIndex index.html index.html.var index.cgi.
就是這樣!現在您應該能夠訪問 http:///bugzilla 的 Bugzilla 頁. 記著使用本文前面通過 checksetup.pl Perl 腳本創建的管理員帳號/口令進行登錄.
結束語
使用新安裝的 Bugzilla,您可以建立並配置其他許多功能.我鼓勵您去研究 Bugzilla 的各種功能,並指出您想 要如何使用它們(我計劃使用 Bugzilla 伺服器作為跟蹤我們部門中出現的眾多問題的方法).作為一個代碼版本系統,或者作為一個問題標籤(problem-ticketing)系統,Bugzilla 足以滿足 您的商業需求.