22.4. ABRT の設定

問題 ライフサイクルは、ABRT 内の イベント によって決定されます。以下が例となります:
  • イベント 1 — 問題データディレクトリの作成
  • イベント 2 — 問題データの分析
  • イベント 3 — 問題を Bugzilla に報告
問題が検出されると、その問題を定義するデータが保存され、問題のデータディレクトリに対してイベントを実行することにより、問題が処理されます。イベント及びその定義方法についてに詳しい情報は、「ABRT イベント」 を参照して下さい。ABRT の標準インストールは、現在いくつかのデフォルトイベントをサポートしています。これらは、問題報告の過程で選択して使用することができます。これらのイベントの一覧は、「ABRT の標準インストールでサポートされているイベント」 を参照して下さい。
ABRT 及び libreport をインストールすると、それぞれの設定ファイルがシステム上の複数のディレクトリに配置されます:
  • /etc/libreport/report_event.conf という主要設定ファイルが格納されます。この設定ファイルに関する詳しい情報は、「ABRT イベント」 を参照して下さい。
  • /etc/libreport/events/ — 事前定義されたイベントのデフォルト設定を指定するファイルが格納されます。
  • /etc/libreport/events.d/ — イベントを定義する設定ファイルが格納されます。
  • /etc/libreport/plugins/ — イベントに関与するプログラムの設定ファイルが格納されます。
  • /etc/abrt/ABRT のサービス及びプログラムの動作を修正するのに使用する、ABRT 固有の設定が格納されます。特定の設定ファイルに関する詳しい説明は、「ABRT 固有の設定」 に記載しています。
  • /etc/abrt/plugins/ABRT のサービス及びプログラムのデフォルト設定をオーバーライドするのに使用する設定ファイルが格納されています。特定の設定ファイルに関する詳しい説明は、「ABRT 固有の設定」 を参照して下さい。

22.4.1. ABRT イベント

各イベントは、それぞれの設定ファイル内の単一のルール構造によって定義されます。これらの設定ファイルは、通常 /etc/libreport/events.d/ ディレクトリに格納されます。これらの設定ファイルは、主要設定ファイル /etc/libreport/report_event.conf によって使用されます。
/etc/libreport/report_event.conf ファイルは、include 指示文ルール で構成されます。ルールは通常、/etc/libreport/events.d/ ディレクトリ内の別の設定ファイルに格納されています。標準のインストールでは、/etc/libreport/report_event.conf ファイルに記載されている include 指示文は一つのみです:
include events.d/*.conf
このファイルを変更する場合には、シェルのメタ文字 (*、$、? など) が優先され、その位置に対して相対パスが解釈される点に注意して下さい。
ルール の行頭には空白文字を入れない行で開始します。その後に続く、空白 文字または タブ 文字で始まる行はすべて、このルールの一部とみなされます。各 ルール は、条件 部と プログラム 部の 2 部で構成されます。条件部には、以下のような形式で条件が記載されます:
  • VAR=VAL,
  • VAR!=VAL, or
  • VAL~=REGEX
…ここで:
  • VAR は、EVENT のキーワードもしくは問題データディレクトリエレメントの名前です (例: executablepackagehostname など)。
  • VAL は、イベントまたは問題データエレメントの名前です。
  • REGEX は正規表現です。
プログラム部は、プログラム名とシェルが解釈できるコードによって構成されます。条件の部分にある全条件が有効な場合、プログラム部がシェルで実行されます。以下は イベント の一例です:
EVENT=post-create date > /tmp/dt
        echo $HOSTNAME `uname -r`
このイベントは、現在の日付と時刻で /tmp/dt ファイルの内容を上書きし、マシンのホスト名とカーネルのバージョンを標準出力に表示します。
更に複雑なイベント (実際に、事前設定済みイベントの一つである場合) の例は以下のようになります。このイベントは、abrt-ccpp サービスを使用して処理された問題の問題レポートに ~/.xsession-errors ファイルの関連する行を保存します。クラッシュしたアプリケーションは、クラッシュが発生した時点で、いずれかの X11 ライブラリをロードしていました:
EVENT=analyze_xsession_errors analyzer=CCpp dso_list~=.*/libX11.*
        test -f ~/.xsession-errors || { echo "No ~/.xsession-errors"; exit 1; }
        test -r ~/.xsession-errors || { echo "Can't read ~/.xsession-errors"; exit 1; }
        executable=`cat executable` &&
        base_executable=${executable##*/} &&
        grep -F -e "$base_executable" ~/.xsession-errors | tail -999 >xsession_errors &&
        echo "Element 'xsession_errors' saved"
設定可能なイベントのセットは、固定されてはいません。システム管理者は、必要に応じて、イベントを追加することができます。現在、ABRTlibreport の標準インストールでは、以下のようなイベント名が提供されています:
post-create
このイベントは、abrtd により、新規作成された問題データディレクトリに対して実行されます。post-create イベントが実行されると、abrtd は、新規問題データの UUID が既存の問題ディレクトリの UUID と一致するかどうかを確認します。そのような問題ディレクトリが存在する場合には、新規問題データは削除されます。
analyze_<NAME_SUFFIX>
…ここで、<NAME_SUFFIX> はイベント名の調整可能な部分です。このイベントは、データ収集の処理に使用されます。例えば、analyze_LocalGDB が GNU Debugger (GDB) ユーティリティをアプリケーションのコアダンプに対して実行し、プログラムのバックトレースを生成します。abrt-gui を使用すると、分析イベントの一覧を表示して選択することができます。
collect_<NAME_SUFFIX>
…ここで、<NAME_SUFFIX> はイベント名の調整可能な部分です。このイベントは、問題に関する追加情報を収集するのに使用されます。abrt-gui を使用すると、収集イベントの一覧を表示して選択することができます。
report_<NAME_SUFFIX>
…ここで、<NAME_SUFFIX> は、イベント名の調整可能な部分です。このイベントは、問題の報告に使用されます。abrt-gui を使用すると、報告イベントの一覧を表示して、選択することができます。
イベントに関する追加情報 (例: 環境変数としてイベントに渡すことができるパラメーターの説明、名前、タイプ、その他の属性など) は、/etc/libreport/events/<event_name>.xml ファイルに格納されます。これらのファイルは、abrt-gui 及び abrt-cli でユーザーインターフェースをより使いやすくするために使用されます。標準のインストールを変更したくない場合には、このファイルは編集しないで下さい。