Product SiteDocumentation Site

第7章 問題の解決と関連情報の探索

7.1. 情報源となる文書
7.1.1. マニュアルページ
7.1.2. info 文書
7.1.3. 特定の文書
7.1.4. ウェブサイト
7.1.5. チュートリアル (HOWTO)
7.2. 常套手段
7.2.1. プログラムの設定
7.2.2. デーモンの挙動を監視する
7.2.3. メーリングリストで助けを求める
7.2.4. 問題が難しすぎる場合のバグ報告
管理者にとって最も重要な技能は、既知未知にかかわらず、いかなる状況にも対処する事ができる事です。この章では遭遇した問題の原因を探し出すのに - おそらく - 役立つ幾つかの方法を紹介します。そうすれば、問題を解決できるようになるかもしれません。

7.1. 情報源となる文書

問題が起きた際に一体何が起きたのかを理解する前に、問題に関連しているプログラムがどのような役割を担っているかを理論的に知る必要があります。これを行う最良の方法はプログラムの文書を参照する事です; しかし、それらの文書は数多くて広範囲に分散してるため、文書が置かれている場所をすべて知るべきです。

7.1.1. マニュアルページ

マニュアルページは比較的全く素っ気無いですが、大量の不可欠な情報を含んでいます。マニュアルページを閲覧するコマンドを練習しましょう。単純に man manual-page と打ってください - マニュアルページは通常、文書を探しているコマンドと同じ名前で閲覧する事が可能です。例えば、cp コマンドで使えるオプションを学ぶには、シェルプロンプト (傍注参照) で man cp コマンドをタイプしてください。
man ページはコマンドラインから呼び出し可能な、プログラムに関する文書というだけでなく、設定ファイル、システムコール、C 言語ライブラリ関数、その他に関する文書も備えています。しばしば異なる分類で同じ名前を持つ場合があります。例えば、シェルの read コマンドは read システムコールと同じ名前です。そんなわけで、マニュアルページは各分類にセクション番号を付けて整理されています:
  1. コマンドラインから実行可能なコマンド;
  2. システムコール (カーネルが提供する関数);
  3. ライブラリ関数 (システムライブラリが提供する関数);
  4. デバイス (Unix ライクなシステムには特別なファイルがあり、通常 /dev/ ディレクトリに格納されています);
  5. 設定ファイル (書式や規約);
  6. ゲーム;
  7. 一連のマクロと標準化規約
  8. システム管理コマンド;
  9. カーネルルーチン。
探しているマニュアルページのセクション番号を指定する事が可能です: read システムコールに関する文書を見るには、man 2 read とタイプしてください。セクション番号を指定しなかった場合、指定した名前に関するマニュアルページの見つかった最初のセクションが表示されます。そんなわけで、man shadowshadow(5) を表示します。なぜなら、第 1 セクションから第 4 セクションの間に shadow に関するマニュアルページが見つからないからです。
もちろん、コマンドの名前を知らなければ、マニュアルページは役に立ちません。この場合に役立つのが apropos コマンドです。このコマンドはマニュアルページ内正確に言うと短い説明文内を検索します。それぞれのマニュアルページは基本的に 1 行の要旨から始まります。apropos はマニュアルページの要旨にキーワードを含むプログラムのマニュアルページのリストを返します。キーワードを上手く選べば、必要なコマンドの名前を見つける事ができるでしょう。

例7.1 apropos を使って cp を探す

$ apropos "copy file"
cp (1)               - copy files and directories
cpio (1)             - copy files to and from archives
hcopy (1)            - copy files from or to an HFS volume
install (1)          - copy files and set attributes
man コマンドがマニュアルページを調べる唯一の方法というわけではありません。(KDE の) konqueror と (GNOME の) yelp プログラムも同じ用途に使う事が可能です。また、man2html パッケージが提供するウェブインターフェースもあり、ウェブブラウザからマニュアルページを閲覧する事も可能です。man2html パッケージがインストールされているコンピュータで以下の URL を使ってください:
このユーティリティを動かすにはウェブサーバが必要です。このため、このサービスをインストールするのを管理しているサーバの 1 台だけにする事が可能です: ローカルネットワークのユーザは全員 (非 Linux マシンでも) このサービスから恩恵を受ける事ができますし、HTTP サーバを各ワークステーションにセットアップする必要が無くなります。他のネットワークからもサーバにアクセスできる場合、このサービスにアクセスできるのはローカルネットワークのユーザだけに制限する事が望ましいです。

7.1.2. info 文書

GNU プロジェクトはほとんどのプログラムのマニュアルを info フォーマットで書いていました; そのため、多くのマニュアルページでは対応する info 文書が参照されています。info フォーマットには幾つかの利点がありますが、info 文書を表示するためのプログラムは若干複雑です。
info 文書を表示するためのプログラムはもちろん info と呼ばれ、引数として調べたい「ノード」の名前を受け取ります。info 文書は階層的な構造をしており、info をパラメータ無しで実行したら、最初の階層から利用可能なノードのリストを表示します。通常、ノードには対応するコマンドの名前が付けられています。
文書内の移動操作は全く直感的ではありません。info に習熟する最良の方法は info を実行し、h (「help」の頭文字) を入力して、指示に従って練習しながら身に付けることかもしれません。もう 1 つの方法として、グラフィカルブラウザを使う事もできます。これはずっとユーザフレンドリーな方法です。また、konqueroryelp も使えます; info2www はウェブインターフェースを提供します。
info システムは man ページシステムと異なり翻訳を禁止されている点に注意してください。そんなわけで、info 文書は常に英語で書かれています。しかしながら、info プログラムに存在しない info ページを表示するよう要求した場合、プログラムは同名の man ページを (存在すれば) 表示します。これは翻訳されているかもしれません。

7.1.3. 特定の文書

各パッケージには文書が含まれています。最も貧弱な文書しか持たないプログラムの場合でも、興味深く重要な情報を含む README ファイルはプログラムに含まれています。README ファイルは /usr/share/doc/package/ ディレクトリ (ここでpackage はパッケージ名を示します) にインストールされます。README ファイルのサイズが特別大きい場合、README ファイルはプログラムのメインパッケージに含まれないかもしれませんが、通常 package-doc と名付けられた専用の文書パッケージに含まれています。メインパッケージは通常文書パッケージを推奨します。そうすれば、ユーザが簡単に文書を見つけられるからです。
/usr/share/doc/package/ ディレクトリには Debian の配布する幾つかのファイルが含まれています。これらのファイルは、ソフトウェアを昔ながらの方法でインストールした場合と比べ、パッケージの詳細および改良を具体的に述べることで、文書を補完しています。README.Debian ファイルには、Debian ポリシーに適合させるために行ったすべての変更が書かれています。changelog.Debian.gz ファイルには、パッケージに対して行われた変更履歴が書かれています: このファイルは挙動が違う 2 つのインストール済みバージョンの間でどのような変更が行われたかを理解するのにとても便利です。最後に、NEWS.Debian.gz ファイルが含まれる場合があります。このファイルには、プログラムに対して行われた修正の内、管理者に直接関わる可能性のある主な修正が書かれています。

7.1.4. ウェブサイト

多くの場合、フリーソフトウェアプログラムは、ソフトウェアを配布して開発者とユーザのコミュニティをまとめるための、ウェブサイトを持っています。これらのサイトには、様々な形態で関連する情報がたくさん載っています: 公式文書、FAQ (よくある質問)、メーリングリストアーカイブ、など。あなたが直面した問題は既に何回も質問されていることかも知れません; FAQ かメーリングリストアーカイブに問題に対する解決策があるかもしれません。関連するページを素早く発見するには、検索エンジンを上手く使いこなす (検索対象をそのプログラム専用のインターネットドメインまたはサブドメインに絞る) と非常に有益です。検索でヒットしたページ数が多すぎたり、検索結果に探しているものが含まれなければ、キーワード debian を追加することにより、検索結果を絞り込むか関連する情報に狙いを定める事が可能です。
ソフトウェアのウェブサイトがわからない場合、様々手段でそれを知る事ができます。最初に、パッケージのメタ情報を表示して (apt-cache show package) Homepage フィールドがあるか確認して下さい。別の方法として、パッケージ説明にプログラムの公式サイトへのリンクが載っているかもしれません。URL が見つからなければ、/usr/share/doc/package/copyright を確認して下さい。Debian メンテナは通常このファイルの中に、プログラムのソースコードを手に入れた場所を示しており、これこそが探しているウェブサイトのものである可能性が高いです。それでもなおウェブサイトがわからない場合、例えば Freecode.com (以前の Freshmeat.net) などのフリーソフトウェアディレクトリを確認するか、Google や Yahoo などの検索エンジンで直接検索してください。
Debian wiki を確認するほうが良いかもしれません。これは共同ウェブサイトで、誰でも、単なる訪問者でさえも、ブラウザから直接提案を出す事が可能です。Debian wiki はプロジェクトを設計したり方向性を決定する管理者、協力し合って文書を書くことで知識を共有したいユーザから使われます。

7.1.5. チュートリアル (HOWTO)

HOWTO は具体的かつ段階的に所定の目標を達成する「手順」を記述する文書です。目標のカバーする領域は比較的多岐に渡りますが、事実上技術的な目標である事が多いです: 例えば、IP マスカレードの構成、ソフトウェア RAID の設定、Samba サーバのインストールなどです。HOWTO はあるテクノロジーを導入する際に起こりうるすべての潜在的な問題に対処できるように書かれます。
Linux Documentation Project (LDP) がそのようなチュートリアルを管理しており、LDP のウェブサイトにそのような文書がすべてホストされています:
これらの文書の内容は話半分に聞くべきです。文書が書かれたのは何年も前という事が多いからです; 文書に含まれる情報が古い事があります。翻訳された文書の場合、この傾向はより強くなります。なぜなら、元文書の新しいバージョンが公開された後、その翻訳文書は規則正しくもなければ、即時に更新されれるわけもないからです。翻訳はボランティアが行っておりいかなる制限も受けないのです…