Debconfを用いたシステム構成

DebConfと言われて通常思い浮かぶのは、Debian開発者の集う年会のことであろう。もっともこの名前はDebianプロジェクトのお気に入りのようで、大文字の「C」を小文字に変えたものが、Debianパッケージに含まれる構成用ユーティリティの名前にも使われている。先のコンファレンスがDebianの交流活動における中核であるとすれば、このプログラムの位置づけは、Debianのテクニカル面における特長の1つであるパッケージ管理システムの中核をなすものだとも言えるだろう。Debconfの特長は、構成するレベルをユーザが指定した上で必要な設定を施せる点だ。

Debconfの用途についてはDebianのパッケージングポリシーでも触れられている。また.debパッケージの作成時におけるDebconfの使用法は、オリジナル開発者であるJoey Hess氏によってオンラインチュートリアルの形式で詳しく解説されている。ただしDebconfに装備されている機能を見てみると、開発者でない通常のユーザであっても様々な恩恵を受けられることが分かるはずだ。いったんDebconfの機能が把握できてしまえば、Debianをベースとしたシステムのインストール時における詳細な設定はもとより、オペレーティングシステムを構成する各種サブシステムに対する設定を、構成ファイルを直接編集することなく、より簡単かつ迅速に設定できるようになるだろう。

Hess氏の説明によると、「そもそもDebconfとは、Debianのインストレーションやアップグレードのプロセスを整理するためのファーストステップという位置づけでした」ということであり、その後このステップの次の段階として改良版のインストレーションプログラムが作られたという経緯がある。そして「当時Debianが遭遇していたこの種の問題の多くに、私も深く関係していました」というのがHess氏の立場であり、「それで、こうした問題の多くはDebconfのようなソフトを用意することによってのみ解決できる性質のものであって、またそうしたソフトを構築することはDebianに様々な可能性を新たに与えることになるだろう、ということに気づいたのです」とのことだ。

基本的にDebconfとは、質問事項を集めたデータベースにユーザ操作用のフロントエンドを取り付けたものである。これは設定のレジストリでもなく、オペレーティングシステムに直接の変更を加えるものでもない。結局のところDebconfとは、Debianパッケージ中のconfigスクリプトにより起動されるもので、ユーザに提示した質問の回答を記憶しておき、その情報を同パッケージ中のpostinst(post-install)スクリプトで使用できるようにしたものなのである。個々のパッケージにおける質問は該当パッケージの.templatesファイルに格納されており、これと同じテンプレートは、それぞれの質問に関する情報とあわせて/var/lib/dpkg/infoにも格納される。また構成を簡単化する目的で、共通するパッケージ間では同じテンプレートファイルが共有されている場合もある。通常それぞれの質問には選択肢に対する説明が付けられており、また場合によっては、回答を間違えたときのために、質問の一覧に戻ることのできるボタンが提供されることもある。

システム構成時におけるDebconfの使用法

インストレーションを開始すると、パッケージ構成が始まった直後にDebconfが起動される。もっとも初心者ユーザにとってのDebconfとは、単なる混乱の元凶でしかないかもしれない。というのも、Debconfで表示される質問事項はその数が多いだけに、初心者にとっては扱いやすさよりも複雑さが先行するだろうからだ。Debianはインストールが難しいという定評があり、これらの質問事項もそうした悪評の一翼を担っているのに違いないが、実際のところDebconfは一見して感じられるほど手強い相手ではない。

Debconfで出される質問の大部分はデフォルトの回答が設定されており、それをそのまま使用すると、最適化はされないものの、とりあえず正常に稼働するシステムを構成できるはずだ。例外は、ビデオカード用ドライバやモニタ解像度などハードウェア関係の詳細設定で、これらは別の機会にも変更できるが、Apacheなどに関する高度なパッケージ設定を、初心者がサポート無しでインストールするのは難しいだろう。

Debconfそのものの設定の1つに、ユーザ自身が回答する質問事項のプライオリティ指定があり、これは、low、medium、high、criticalのいずれかを選択する。デフォルトはmediumであるが、初心者ユーザであればcriticalを選択しておくと、システムの動作に必要な最小限の質問を除いて、その他の質問をすべてスキップさせることができる。逆に上級者ユーザであればlowを選択しておくことで、パッケージ構成のすべてを自分で設定することができる。いずれにせよ、ここでの設定によって、ユーザがどのレベルまで細かな指定をするかが規定されることになる。

Debconf本体についてのもう1つの設定は、インタフェースに関するものだ。Debianがデフォルトで使用するのは、メニュー上でDialogと表示されるインタフェースであり、この場合はインストレーションプログラムのものとよく似た、テキストをベースとした一連のボックス表示が用いられる。またDebconfではGNOMEあるいはKDEのインタフェースによるユーザ操作も使用可能であり、その他にもReadlineやシェル上でのテキスト入力を用いたり、Editorを選んで設定ファイルをVim上に表示させて編集することもできる。なお、選択したインタフェースが何らかの理由により使用できない場合、Debconfはデフォルトの状態に復帰する。

再構成をする際のDebconfの使用法

Debianシステムをインストールした後も、Debconfはシステムの再構成用ツールとして使用することができる。もっともHess氏の語るところでは、「変な話ですが、そもそもDebconfはそうした用途を意図して作られたのではありません。作った後で、これをこう使えばDebian側には特に手を加えずに(再構成)できるじゃないかと気づいたんです」ということだ。

ただしHess氏自身も、現行のDebconfの用途として一番多用されているのは、おそらくこうした再構成の機能だろうと付け加えている。上級者ユーザであれば構成ファイルを直接編集する方式を選ぶだろうが、初心者ユーザがシステムの微調整をしたり、新規に追加するハードウェアをシステムに認識させたい場合は、Debconfを使うのが簡単かつ確実な方法のはずだ。

Debconfを使用しているパッケージを確認するにはgrep Package:\\\|Depends:.*debconf /var/lib/dpkg/statusとコマンドを入力すればよい。

特定パッケージにおける現行の構成を確認するには、ルートのアカウントでログインしてからdebconf-show パッケージ名 とコマンドを入力すればよい。これによりDebconfが、アスタリスク記号を用いた箇条書き形式で、設定状況をリスト表示してくれる。設定情報が返されない場合は、該当パッケージがDebconfを使用していないことが疑われるが、あるいは、Debconfの使用が指定されているものの現行バージョンでは使用されなくなった、という可能性もあり得る。

プログラムないしシステムエレメントを再構成する場合は、ルートユーザのアカウントでdpkg-reconfigure パッケージ名ないしシステム設定 と入力をする。このコマンドにより、パッケージの初回インストール時に使われたのと同様なDebconfダイアログが表示される。ここで設定する内容も、基本的にはインストレーション時に行ったものと同じである。唯一の違いは、オリジナルのデフォルト値の代わりに、パッケージをインストールした際に指定しておいた項目が選択された状態でDebconfが表示されるという点だけだ。各種の設定変更を試すのであれば、システム構成を元に戻す場合に備えて、ここで表示される設定を別紙に書き写しておく方が無難だろう。

DebianシステムのすべてのパッケージがDebconfを使用している訳ではないので注意が必要だ。ただしDebianのポリシではDebconfの使用が推奨されており、平均的なデスクトップインストレーションであれば、最低でも60個のパッケージはDebconf経由での再構成に対応しているはずだ。同様にサーバインストレーションや開発者用のデスクトップとなると、その数は10倍以上になるだろう。なお通常のシステムにおいてオペレーティングシステムの基本設定を行う場合、dpkg-reconfigureには下記のようなパラメータを指定することになる。

  • debconf:質問事項のプライオリティレベルとインタフェース
  • xserver-xorg:モニタ、ビデオカード、ポインティングデバイスの設定
  • linux-image-カーネルバージョン:ソースではなくシステムのオリジナルカーネルにある構成ファイルを用いてインストールされたDebianカーネル
  • etherconf:ネットワークおよびインターネットの設定
  • locales:システムのサポートする言語
  • console-data:システムのサポートするキーボードマッピング
  • passwd:パスワード設定
  • fontconfig:システムのフォント構成

また必要であれば、debconf設定を再構成する際のインタフェースとして、各自の好みに応じたものを選択することもできる。configure-debianパッケージにはテキストベースのインタフェースが用意されており、ここでは必要な項目が簡単に選択できるよう、debconfの使用パッケージをadminやX11など18個のカテゴリに分割している。これに対してgkdebconfではグラフィカルインタフェースが採用されており、これはパッケージの設定をブラウジングする場合には便利だが、再構成作業そのものはDebconfを使用することになる。ただしいずれの場合も、操作性に優れたインタフェースが利用できる点を除けば、dpkg-reconfigure以上の機能が与えられている訳ではない。

まとめ

Debconfを使うだけで、すべてのDebianシステムの構成が行えるとは限らない。たとえばデスクトップ用のサウンド関係を処理するAdvanced Linux Sound Architecture(ALSA)はサウンドカード用ドライバの選択にalsaconfという独自の構成ツールを使用するが、ややこしいことに、alsaの基本パッケージそのものの設定はDebconfで構成可能という状態になっている。またCommon Unix Printing System(CUPS)もDebconfによる構成は行えない。Hess氏の説明によると、現行のDebconfはパーティショニング、インストレーションプログラム、ラージスケールインストールの扱いには適してはいないが、開発努力の継続により「将来的にはこの種の構成作業に適した形にDebconfが進化する」ことを望んでいるとのことである。またデスクトップユーザに関しては、より操作性に優れたグラフィック系ツールによってDebconfの役割が徐々に取って代わられる可能性も考えられる。

いろいろ欠点もありはするが、Debconfが有用なツールであることは間違いがない。たとえば同様のデスクトップ系ツールとは異なり随時コマンドラインから使用できるので、X Window Systemが起動不可能になった場合でも、システムを修復することができる。さらに重要なのは、レベル別の構成が行える点で、これもデスクトップ系構成ツールには用意されていない機能である。

実際のところ、Debconfを必要とする機会はそれほど多くないだろう。ただし、興味半分でシステム設定に手を出して不具合が生じてしまったような場合、Debianに用意されたapt-getやdpkgなどの独自ツールを使って修復するのでなければ、やはりDebconfを介した再構成作業に頼ることになるはずだ。

Bruce Byfieldは、コースデザイナ兼インストラクタ。またコンピュータジャーナリストとしても活躍しており、NewsForge、Linux.com、IT Manager’s Journalに定期的に寄稿している。

NewsForge.com 原文