Time-stamp: "Sep 12 2003"

Bugzilla 2.16 日本語版について

logo

バグトラッキングシステム Bugzilla の日本語版のインストール方法と管理方法について説明します。

簡単な説明

Bugzilla (バグジラ) とはソフトウェア開発につきもののバグを管理するためのソフトウェアです。

詳しくは はじめての Bugzilla が参考になります。少し古いバージョンの説明ですので画面デザインは異なるところもありますが、説明文は問題ありません。

バグトラッキングシステムは Bugzilla 以外にもあります。Momonga Project Diary(2002-09) (9月28日 以降) に各システムの比較があります。[slashdot] カーネルのバグトラックにBugzilla にもあるとおり、Bugzilla は使用事例が増えてきています。

日本語版 Bugzilla

Bugzilla 2.16 日本語版の特徴

ダウンロード

日本語版 Bugzilla は もじら組Bugzilla-jp で配付されています。しかし 2003-08-22 現在配付されている bugzilla-2.16.1-ja-20021116 は

という問題がありますので、上記の問題を修正したバージョンへアップデートするためのパッチをここに置いておきます。

bugzilla-2.16.3-to-2.16.3-ja-20030822.diff.gz (2003-08-22, 175kb)

bugzilla-2.16.1-ja-20021116 からの変更点 (テキスト)

もじら組で配付している Bugzilla 2.16 の、日本語化の大部分サポートをしているのは私 itouh ですので、もじら組と無関係の人が配付しているわけではありません。
しかし私は もじら組のWebサイト管理には関わっていません。 Bugzilla-jp で配付されている Bugzilla は、最近提出されたパッチがあたったものに更新される気配がありません。
そこで、それらのパッチを全部手動で取得して適用するのも面倒なものだし、もじら組とは別に配付してしまおうと思ったわけです。

パッチの当て方

パッチの当て方は以下のとおりです。

  1. 上記のパッチ と 英語版 bugzilla-2.16.3.tar.gz を取得する。
  2. bugzilla-2.16.3 を展開する。
    $ tar zxvf bugzilla-2.16.3.tar.gz
  3. パッチを適用する。
    $ cd bugzilla-2.16.3/
    $ zcat ../bugzilla-2.16.3-to-2.16.3-ja-20030822.diff.gz | patch -p1
    もし zcat: .. : not in gzip format といったエラーメッセージが出た場合、gzip 圧縮されていたパッチファイルが Web サーバなどのせいで自動的に展開されてしまっているので、
    $ cat ../bugzilla-2.16.3-to-2.16.3-ja-20030822.diff.gz | patch -p1
    としてください。

上記のパッチは 日本語版 bugzilla-2.16.1-ja-20021116 に当てるパッチではありません。英語版 bugzilla-2.16.3 へのパッチです。なぜ 2.16.1-ja-20021116 へのパッチではないかというと、そのパッチファイルを作成してみたところ上記のパッチの 2 倍のファイルサイズになってしまったというだけです。

動作確認は Apache 1.3.27, MySQL 3.23.56, Perl 5.6.1 (RedHatLinux7.1) で主におこないました。すべてソースコードをコンパイルしてインストールしたものです。
Apache 2.0.47, Perl 5.8.0 (これもソースコードから) でも少し動作確認しました。

インストール方法

Bugzilla 公式 Web サイトの documentation にある Bugzilla 2.16.3 というドキュメントが一番参考になります。その中でも Installation という章がインストールについての説明です。ただし英語です。

必要なもの・インストール方法について以下に書きます。

必要なソフトウェア

OS
Linux や FreeBSD 等、UNIX 系なら可。Windows は Bugzilla 2.16 では不可ですが、将来の Bugzilla で使用できるようにする予定はあるようです。
Perl
Bugzilla は Perl で書かれた CGI スクリプトなので、Perl が必要です。バージョン 5.005 以降であれば動作します。
Apache
Bugzilla は Web ブラウザから使用する Web アプリケーションなので、Web サーバが必要です。
MySQL
Bugzilla はデータベースシステムを使用します。そのおかげで、 20数万件のバグを扱うことができています。バージョン 3.22.5 以降で動作します。
sendmail
Bugzilla はバグレポートの状態が変更されたときのお知らせなどでメールを送ります。そのために sendmail (バージョン 8.7 以上) かその互換ソフトウェアが必要です。qmail も使えるそうです
Bugzilla は /usr/lib/sendmail というファイルを使用してメールを送信しますが、このファイルがない OS もあります (私が確認したものだと FreeBSD 5.1 もそうです)。その場合、
# ln -s /usr/sbin/sendmail /usr/lib/sendmail
としてください。
Perl モジュール
Bugzilla は多くの Perl モジュールを使用します。

データベースシステム (MySQL)・ Perl モジュール・ Web サーバ (Apache)

Bugzilla

  1. まず、bugzilla-2.16 のアーカイブを展開して日本語版へのパッチなどを当てます。
    ディレクトリ名を bugzilla でアクセスできるようにします (これは必須ではありませんが説明のためにこうします)。
    $ cd /var/www/
    $ tar zxvf bugzilla-2.16.3.tar.gz
       (日本語版へのパッチを適用)
    $ ln -s bugzilla-2.16.3 bugzilla
    
  2. 次に、各CGIファイルの perlの PATH を書き換えます。これをしないと CGI ファイルは正常に実行されません。FHS にしたがった Red Hat Linux などであれば perl は /usr/bin/perl にあるはずです。
    $ cd /var/www/bugzilla
    $ perl -pi -e 's@#\!/usr/bonsaitools/bin/perl@#\!/usr/bin/perl@' *cgi *pl Bug.pm processmail syncshadowdb
    または、/usr/bonsaitools/bin/perl というファイル(シンボリックリンク)を実際に用意する方法もあります。
    # mkdir -p /usr/bonsaitools/bin
    # ln -s /usr/bin/perl /usr/bonsaitools/bin/perl
  3. 各 CGI ファイルを Web サーバを実行するユーザでしか実行できないようにしておきます。これはセキュリティのため。
    そのためまず各ファイルの所有ユーザを、Web サーバを実行するユーザ (ここでは apache) と同じにします。
    # cd /var/www/bugzilla
    # chown -R apache:apache .
    そして各ファイルの実行権を所有ユーザだけに与えます (つまりファイル所有ユーザ以外からファイル読み込み・書き込み・実行権限を剥奪します)。
    # cd /var/www/bugzilla
    # chmod -R go-rwx .
  4. それでは checksetup.pl を実行します。このとき、MySQL サーバ (mysqld) を起動しておきます。
    $ ./checksetup.pl
  5. checksetup.pl には複数の役割がありますが、まず Perl モジュールが正常にインストールされているかチェックします。Perl モジュールのバージョンが低かったりインストールされていないものがあると、警告文を表示してストップします。そのときは 表示された Perl モジュールをインストールして また checksetup.pl を実行します。
  6. 必要な Perl モジュールが揃っていれば localconfig というファイルが作成されます。このファイルをテキストエディタで開いて編集します。以下では
    • MySQL の 実行バイナリがあるディレクトリ (ソースコードからインストールしたなら /usr/local/mysql/bin 等になります)
    • Apache Web サーバを動作させるユーザ名
    • MySQL の bugsユーザのパスワード (MySQL インストールで bugs ユーザを作ったとき決めたパスワードです)
    を書き換えています。ほかにも書き換えることがあれば変更しておきます。
    --- localconfig.org     Wed Sep  3 16:01:49 2003
    +++ localconfig Wed Sep  3 16:05:17 2003
    @@ -18,7 +18,7 @@
     # Because it's possible that these files aren't in your path, you can specify
     # their location here.
     # Please specify only the directory name, with no trailing slash.
    -$mysqlpath = "";
    +$mysqlpath = "/usr/bin";
    
    
     #
    @@ -48,7 +48,7 @@
     # and you cannot set this up any other way. YOU HAVE BEEN WARNED.
     # If you set this to anything besides "", you will need to run checksetup.pl
     # as root, or as a user who is a member of the specified group.
    -$webservergroup = "nobody";
    +$webservergroup = "apache";
    
    
    
    @@ -68,7 +68,7 @@
     # If you use apostrophe (') or a backslash (\) in your password, you'll
     # need to escape it by preceding it with a \ character. (\') or (\\)
     #
    -$db_pass = '';
    +$db_pass = 'bugspass';
    
    
    
    
  7. checksetup.pl をまた実行します。 このとき Unix の root ユーザで実行したほうがいいようです。そうしないと webservergroup がどうのこうのという警告がでます。
    # ./checksetup.pl
    localconfig が存在する場合、そのファイルの記述にしたがって MySQL サーバと接続します。そして localconfig に書かれている bugs データベース が無ければ作成して、データベースの中の テーブルカラム も作成します。
    もしたとえば Bugzilla 2.12 で作ったデータベースが既に存在していた場合、ここで自動的に Bugzilla 2.16 のデータベース構造に更新してくれます。

    このときメールアドレスをきかれますが、これは Bugzilla 管理者のメールアドレスになります。
    Looks like we don't have an administrator set up yet.  Either this is your
    first time using Bugzilla, or your administrator's privs might have accidently
    gotten deleted at some point.
    Enter the e-mail address of the administrator: admin@foo.or.jp
    You entered 'admin@foo.or.jp'.  Is this correct? [Y/n] Y
    Enter the real name of the administrator: Admin User
    Enter a password for the administrator account: パスワードを入力します
    Please retype the password to verify: パスワードを入力します

    Web ブラウザから Bugzilla にログインするとき上記のメールアドレスとパスワードを使うと、Bugzilla 管理者としてプロダクト追加や ユーザの編集などがおこなえます。
  8. それでは Web ブラウザで Bugzilla を見てみましょう。ブラウザの URL 欄にその PC のホスト名あるいは IPアドレスを入力して正常にトップページが表示されれば OK です。

    Bugzilla 管理者としてログインして、画面下の「パラメータ」を押下し運用パラメータを設定します。最低限、maintainerurlbase を設定してください。

    画面下の「プロダクト」を押下しプロダクト・バージョン・コンポーネントを登録します。

以上で Bugzilla のインストールは完了です。

管理

データベースのバックアップ

バグレポートに関するデータはすべて MySQL のデータベースに保存されます。このデータベースをバックアップする方法について説明します。

MySQL サーバを停止してバックアップ

ディレクトリをバックアップするだけです。Bugzilla のデータを格納する bugs データベースは、MySQL のデータディレクトリにある bugs ディレクトリをバックアップすることで保存できます。ほかにも MySQL の管理情報を記録した mysql ディレクトリも保存しておくとよいでしょう。

$ cd /var/lib/mysql
$ tar zcvf /home/mysql/bz-20030903.tar.gz bugs/ mysql/

バックアップしたデータの復元も、MySQL サーバを止めてから バックアップした同じディレクトリに書き戻すだけです。

MySQL サーバを停止しないでバックアップ

mysqlhotcopy を使用します。ただしこのコマンドを使用するためには以下の方法で mysqlデータベースの SELECT 権限と MySQL の RELOAD 権限を有効にしておく必要があります。
(MySQL の rootユーザで実行するなら元からすべての権限があるので以下の権限変更は必要ありません。ここでは一般ユーザでバックアップする方法を説明します)

$ mysql -u root -p
Enter password:
mysql> use mysql;
mysql> update user set reload_priv='Y' where user='bugs';
             ( bugs のところは Bugzilla が使用するユーザを指定します)
mysql> grant select on mysql.* to bugs@localhost;
mysql> flush privileges;
mysql> exit;

mysqlhotcopy は以下のように使います。

$ mysqlhotcopy -u bugs -p <bugsユーザのパスワード> <バックアップするデータベース> <コピー先のディレクトリ>

たとえば以下のシェルスクリプトを実行すると /home/mysql/20030912-1700 といったディレクトリの中に bugs ディレクトリと mysql ディレクトリがコピーされます。

#!/bin/sh
BACKUP_DIR=/home/mysql/`date +%Y%m%d-%H%M`
mkdir -p $BACKUP_DIR
mysqlhotcopy -u bugs -p passbugs bugs $BACKUP_DIR
mysqlhotcopy -u bugs -p passbugs mysql $BACKUP_DIR
ソースコードから MySQL をインストールした場合、mysql コマンドの部分は代わりに /usr/local/mysql/bin/mysql に書き換えるなど、PATH を指定するようにしてください。

データベース以外で保存すべきファイル

バグレポート以外の Bugzilla 動作設定ファイルなど一部のファイルは、MySQL データベースではない場所に保存されています。以下のファイルもバックアップしておくことをすすめます。

<bugzilla>/localconfig
MySQL サーバと接続する ユーザ名・パスワードなど重大な内容が保存されています。
<bugzilla>/data/params
Web ブラウザから Bugzilla 管理者としてログインし「パラメータ」ページで設定した内容はここに保存されています。
<bugzilla>/data/mining/<プロダクト名>
Bugzilla トップページあるいは画面下にあるフッタから行ける「統計」ページで「出力形式 : グラフ」を選択したときの画像を作るために cron で日々記録されている統計データファイルです (cron の設定をしていないときは作られません)。
ここのファイルはプロダクト名に空白があればファイル名に空白を含むファイル名になりますし、プロダクト名が日本語であれば文字コード EUC-JP の日本語ファイル名になります。この仕様は問題かもしれません。

そのほか

文字コード

日本語版 Bugzilla は Webブラウザに出力する HTML も、データベースに格納する文字列も EUC-JP という文字コードを使用しています。これは過去の 日本語版 Bugzilla (バージョン 2.12 など) が使っていた文字コードをそのまま使用しているだけです。

ですが本家 英語版 Bugzilla 開発者は Unicode (UTF-8) の使用を推奨しています。以前はこんなページありませんでしたが。

UTF-8 化すると以下のような問題点がでてきます。

Perl6

いつの日か公開される予定の Perl バージョン 6 は、Perl バージョン 5 と文法的に互換性がない部分があるようです 。ですから現在の Bugzilla 2.16 は Perl6 の時代には動作しないかもしれません。 とはいっても Bugzilla は広範囲に使用されているので、問題なく対応されると思います。

Mozilla.org 日本語版

Mozilla.org の英語ドキュメントを日本語に翻訳するもじら組 - 和訳プロジェクト から
Bugzilla 関連のドキュメント:

Bugzilla の利用法

バグのリスト画面をみやすくする方法

Bugzilla のバグのリストを変更時刻の順に並べる方法を説明します。

  1. 検索結果のバグのリストが出ている画面で、画面下にある「表示項目の変更」をクリックして「更新日」を表示するようにします。
  2. そしてまた検索して結果のバグのリスト画面で、画面上の「更新日」をクリックすると、更新日でソートされます。
これは COOKIE で記録され、次回からは指定しなくてもこの並びになります。 私は Bugzilla を新規使用するときはいつもこの手順をおこないます。デフォルトでこうなっていると便利なんですけどね。


itouh