28.4. ABRT の設定
ABRT では、問題 のライフサイクルは イベント によって実行されます。以下に例を示します。
- イベント 1 - 問題データのディレクトリーが作成されます。
- イベント 2: 問題データの分析
- イベント 3 - 問題の Bugzilla 報告
問題が検出され、その定義データが保存されると、問題は問題のデータディレクトリーでイベントを実行して処理されます。イベントの詳細と、そのイベントの定義方法は、「ABRT イベント」 を参照してください。標準 ABRT インストールは、現在、問題報告プロセス時に選択して使用できるデフォルトのイベントを複数サポートします。これらのイベントの一覧を表示するには、「標準 ABRT インストールでサポートされているイベント」 を参照してください。
インストール時に、ABRT および libreport がそれぞれの設定ファイルをシステム上の複数のディレクトリーに配置します。
/etc/libreport/events/
: 事前定義イベントのデフォルト設定を指定するファイルを保持します。/etc/libreport/events.d/
: イベントを定義する設定ファイルを保持します。/etc/libreport/plugins/
: イベントの一部を取るプログラムの設定ファイルが含まれます。/etc/abrt/
- ABRT のサービスおよびプログラムの挙動を変更するために使用される ABRT 固有の設定ファイルを保持します。特定の設定ファイルの詳細は、「ABRT 固有の設定」 を参照してください。/etc/abrt/plugins/
: ABRT のサービスおよびプログラムのデフォルト設定を上書きするために使用される設定ファイルを保持します。一部の設定ファイルの詳細は、「ABRT 固有の設定」 を参照してください。
28.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
ファイルには 1 つの include ディレクティブのみが含まれます。
include events.d/*.conf
このファイルを変更する場合は、シェルのメタ文字(*、$、?など)を考慮し、その場所に対して相対パスを解釈することに注意してください。
各 ルール は空白でない先頭文字の行で始まり、その後のすべての行は
スペース
文字または タブ
文字で始まるすべての後続の行は、このルールの一部と見なされます。各ルールは、条件部分とプログラム部分の2つの部分で構成されています。条件パートには、以下のいずれかの形式で条件が記載されます。
- VAR=VAL,
- VAR!=VAL または
- VAL~= REGEX
どこかに以下が行われます。
- VAR は、
EVENT
のキーワードまたは問題データディレクトリー要素の名前です(実行可能な
、package
、hostname
など)。 - VAL は、イベントまたは問題データ要素の名前です。
- REGEX は正規表現です。
プログラムパートは、プログラム名とシェルが解釈可能なコードで構成されます。条件パートにある全条件が有効な場合、プログラムパートがシェルで実行されます。以下は イベント の一例です。
EVENT=post-create date > /tmp/dt echo $HOSTNAME `uname -r`
このイベントは、現在の日付と時刻で
/tmp/dt
ファイルの内容を上書きし、マシンのホスト名とカーネルバージョンを標準出力に表示します。
以下は、実際に事前定義されたイベントの 1 つであるより複雑なイベントの例です。
abrt-ccpp
サービスを使用してその問題を処理し、クラッシュ発生時に X11 ライブラリーが読み込まれている問題について ~/.xsession-errors
ファイルから関連する行を問題レポートに保存します。
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"
可能なイベントのセットは、ハードセットではありません。システム管理者は、必要に応じてイベントを追加できます。現在、ABRT および libreport の標準インストールでは、以下のイベント名が提供されます。
-
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 で使用されます。標準インストールを変更する場合以外に、このファイルは編集しないでください。