Debconf (ソフトウェアパッケージ)

debconfは、Unix系オペレーティングシステムでシステムワイドな設定タスクを実行するためのソフトウェアユーティリティである。はじめDebian GNU/Linuxのために開発され、現在ではDebianが使用するパッケージ管理システム、dpkgと協調動作するよう統合されている。

パッケージがシステムにインストールされると、debconfは、そのパッケージに関連するシステムワイドな設定の内容を決定するようユーザーに質問する。パッケージインストール完了後は、dpkg-reconfigureというプログラムを使用しパッケージの設定をやり直したり、変更することができる。または、Synapticのようなフロントエンドツールからも再設定できる。

debconfの設計は、設定の質問に答えるためのフロントエンドをモジュラー方式で追加可能にしてある。そのフロントエンドはいくつか存在し、によるもの、readlineで構成されるもの、Vimなどのテキストエディタや、KDE・GNOME上で動作するもの、そしてPython APIで作られているものがある（ちなみにこのdebconfのフロントエンドを変更する設定もdebconfパッケージ自身が持つ設定項目をdebconfを利用し設定する）。同様にモジュール方式にてgettextを利用した国際化を図っている。

debconfオリジナルの実装はPerlで書かれている。Debianインストーラの開発の最中、新たにcdebconfという名前のCによる実装が開発された。この新しい実装は現在インストーラでのみ使用されているが、最終的にはオリジナルを完全に置き換えることも視野に入れている。両実装は、debconfのフロントエンド、ならびにクライアントモード("confmodule"と呼ばれる)に関し、同一の対話プロトコルを利用している。クライアントモードは、通常インターネットで使用されるプロトコルのような、ラインベースのシンプルなプロトコルである。

debconfはパッケージを実際に設定するツールではないが、.configや.postinstなどといったパッケージメンテナーのスクリプトの方向性に従って、.templatesファイルに記載されたある設定項目に関する質問をユーザーに投げかける。一般的には、.configスクリプトが質問を行うためdebconfを使用する。その後、.postinstスクリプトが質問に応じて、システムに展開したパッケージに設定を適用する。しかしながら、技術的な要件によりこれは変化し得る。debconfによる設定に関する質問にユーザーが答えると、debconfのデータベースにその内容がキャッシュされる。このデータベースを使用し、次回以降は同じ質問はユーザーには行わない。

実行例 
通常はパッケージインストール中に設定に関して質問される。パッケージインストール完了後に再度質問をやり直したい場合は、スーパーユーザー(root)で、
 dpkg-reconfigure <package_name>
を実行する。debconfはパッケージの各設定項目に優先度(Priority)という概念を持っており、ある優先度より低い質問はパッケージメンテナーが指示するデフォルトの設定を暗黙のうちに使用し、ユーザーには一切質問しない。通常この優先度の設定は、debconfパッケージ自身が持つdebconfの設定項目に含まれている。パッケージのある優先度より低い質問を手動で設定するには、以下のように最低の優先度を指定した上でdpkg-reconfigureを実行する。
 dpkg-reconfigure --priority=<minimum_priority> <package_name>

脚注

外部リンク 
 パッケージメンテナのウェブサイト
 debconf - Debian Wiki
 ツールのマニュアルページ
 The Debconf Programmer's Tutorial
 Debconfを用いたシステム構成 SourceForge.JP Magazine

Debian
Linux
システム管理