4. 障害報告の書き方

問題が障害報告を行うに値すると結論を出し、 そしてそれが FreeBSD の問題点であると判断したら、 実際に障害報告を執筆する時です。 障害報告を作成して送信するプログラムの仕組みに入る前に、 障害報告をもっとも効果的なものにするこつをいくつか紹介しましょう。

4.1. よい障害報告を書くこつ

4.2. 始める前に

send-pr(1) プログラムを使うなら、環境変数 VISUAL (もし VISUAL が設定されていなければ EDITOR) が意味のあるものに設定されているか確認しましょう。

また、メール配送ソフトウェアが正常に動作することも確認してください。 send-pr(1) は障害報告の提出と追跡にメールを利用します。 send-pr(1) を動かすマシンからメールを送ることができないと、 あなたの障害報告は GNATS データベースに届きません。 FreeBSD におけるメールの設定の詳細については FreeBSD ハンドブックの “電子メール” の章 ../../../../doc/ja_JP.eucJP/books/handbook/mail.html をご覧ください。

あなたが使っているメーラが GNATS に送るメッセージに手を加えないことを確かめておいてください。 特に、メーラが自動で改行したり、タブをスペースに変更したり、 改行文字をエスケープしたりすると、 提出したパッチは使えないものになってしまいます。 もっとも、テキスト部については障害報告を web で表示した時に読みやすいように、 70 文字前後で改行を入れることをお願いしています。

send-pr(1) の代わりに web ベースの障害報告提出フォーム を利用する場合も、同様の配慮が必要です。 カットアンドペースト操作はテキストをフォーマットするのに副作用がある場合があるので気をつけてください。 場合によっては、パッチが変更されずに届くように、uuencode(1) を使わなければならないかもしれません。

最後に、提出物が長くなってしまうなら、 提出時に問題が起きて失われてしまうことのないように、 オフラインで準備しておきましょう。 これは特に web フォーム で問題になります。

4.3. パッチやファイルを添付する

以下は、障害報告を電子メールで提出する場合にあてはまります。

send-pr(1) プログラムは、 障害報告にファイルを添付する機能を備えています。 それぞれのファイルの基本名称 (すなわち、パスを除いたファイルそのものの名前) が一意でありさえすれば、好きなだけ添付できます。 コマンドラインオプション -a で添付するファイルの名前を指定してください。

% send-pr -a /var/run/dmesg -a /tmp/errors

添付するファイルがバイナリであっても心配しないでください。 メールエージェントが混乱しないように、自動的に符合化されます。

パッチは context 形式か unified 形式の差分を diff(1)-c-u オプションを使って作成してください (unified 形式の方が好まれます)。 パッチを添付する場合、 開発者があなたの報告を読んで簡単にパッチを適用できるように、 修正したファイルの正確な SVN のリビジョン番号が特定できるか確認してください。 カーネルやベースのユーティリティに関しては、新しいコードはすべて FreeBSD-CURRENT (SVN の HEAD ブランチ) でテストするべきなので、それに対するパッチが望ましいです。 適切か十分なテストが行なわれたら、そのコードは FreeBSD-STABLE ブランチにマージまたは移植されます。

パッチを添付するのではなく本文中に含める場合、 もっともありがちな問題は、 電子メールプログラムによってはタブをスペースに変更してしまい、 Makefile に含めるつもりだったものを台無しにしてしまうことです。

パッチを Content-Transfer-Encoding: quoted-printable を利用した添付ファイルとして送らないようにしてください。 これは文字をエスケープしてしまい、 パッチ全体が使い物にならなくなります。

また、障害報告の中に小さなパッチを含めるのは (とりわけ説明されている障害を修正する場合は) 大抵問題ないのですが、 大規模なパッチや新しいコードの場合は十分な査読を行なった後にコミットすべきであるため、 パッチを Web や FTP サーバに置き、その URL を障害報告に書くようにしてください。 電子メールに含めたパッチはサイズが大きいと分割される傾向にあり (とりわけ GNATS が処理に関わるときはそうなります)、 パッチが大きいほど興味をもった人がつなぎ直すのが面倒になります。 また、Web にパッチをおけば、 元の障害報告へのフォローアップとしてパッチ全体を再提出しなくても変更できます。 最後に、大きなパッチはデータベースのサイズをとにかく増やしてしまいます。 閉じられた障害報告は実際に消されることはなく、 保持されたまま closed という印をつけられるだけだからです。

また、障害報告かパッチ自体に明確に指定がなければ、 あなたが提出したパッチは修正した元のファイルと同じ条件の ライセンス下にあるものと仮定されることに留意しておくべきです。

4.4. テンプレートに記入する

次の節は電子メール方式にのみあてはまります。

send-pr(1) を動かすとテンプレートが表示されます。 テンプレートは特定の項目から成り立っており、 その一部にはあらかじめ埋められていたり、 その項目の目的の解説やそこに記入できる値の一覧が記載されていたりします。 コメントの部分は、自分で変更・削除しなくても、 自動的に削除されますので心配する必要はありません。

テンプレートの先頭にある SEND-PR: と書かれている行の下が電子メールのヘッダです。 通常、この部分を変更する必要はありませんが、 障害報告を送信する機械やアカウントで メールを出すことはできても受けとることはできない場合、 From:Reply-To: に実際のメールアドレスを設定すべきです。 また、自分 (や他の誰か) に障害報告の複製を送りたい場合は、 電子メールアドレスを Cc: ヘッダに追加してください。

電子メールの雛型には、次の 2 つの一行フィールドがあります。

訳注: フィールドの意味が分かり易いように フィールド名を訳していますが、 フィールドの値も含めて 実際のフィールド名は英文字でなければなりません。

次の節では、電子メールインタフェースと web インタフェース の両方に共通なフィールドについて説明します。

最後に、一連の複数行フィールドがあります。

4.5. 障害報告を送信する

send-pr(1) を使っている場合

テンプレートを埋め、保存してエディタを終了すると、 send-pr(1)s)end, e)dit or a)bort? と表示して指示を求めます。 s を押せば障害報告の提出に進めますし、 e だとエディタが再び実行され、 ひきつづき編集できます。 a なら作業を中止します。 abort を選択した場合、いままで書いていた障害報告はディスクに残りますので (send-pr(1) は終了前にそのファイル名を示します)、 暇な時にそれを編集したり、場合によっては よりネットワーク接続性のよいシステムに持っていくことができるでしょう。 この作業ファイルは、send-pr(1)-f オプションを使って送ることができます。

% send-pr -f ~/my-problem-report

上記の操作では、指定されたファイルを読み込み、 書式が正しいか検証し、ファイル中のコメント部分を取り除いて、 障害報告が送信されます。

Web フォーム を使っている場合

submit を押す前に、 そのページに画像で表示されているテキストをフィールドに記入しなければなりません。 この不幸な手順は自動化されたシステムや、 誤りを教えられた人たちによる誤用があったために導入されました。 これは、誰もが嫌う必要悪なのです。 お願いですから、これを取り除くように要望しないでください。

なお、submit を押す前に、 どこかにあなたが書いた内容を保存しておくことを 強く奨めます。 ユーザがよく出くわす問題に、web ブラウザが、 キャッシュから無効になった画像を表示してしまうというものがあります。 あなたがそういう目に遭ってしまったら、 あなたの報告は拒否されてしまい、 書いたものを失ってしまうでしょう。

何らかの理由で画像が見られず、また send-pr(1) も使えない場合は、ご迷惑をおかけして大変申し訳ありませんが、 障害報告を bugbuster チームに 宛で送ってください。

本文書、および他の文書は ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/ からダウンロードできます。

FreeBSD に関する質問がある場合には、ドキュメント を読んだ上で <questions@FreeBSD.org> まで (英語で) 連絡してください。
本文書に関する質問については、<doc@FreeBSD.org> まで電子メールを (英語で) 送ってください。