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 コマンドを入力してください (補注BACK TO BASICS シェル、コマンドラインインタプリタ」を参照してください)。
man ページはコマンドラインから呼び出すことができるプログラムに関する文書というだけでなく、設定ファイル、システムコール、C 言語ライブラリ関数、その他に関する文書も備えています。しばしば同じ名前が異なる分類で使われている場合があります。たとえば、シェルの read コマンドは read システムコールと同じ名前です。そんなわけで、マニュアルページは各分類にセクション番号を付けて整理されています。
  1. 第 1 セクションにはコマンドラインから実行できるコマンドに関する文書が含まれます。
  2. 第 2 セクションにはシステムコール (カーネルから提供される関数) に関する文書が含まれます。
  3. 第 3 セクションにはライブラリ関数 (システムライブラリから提供される関数) に関する文書が含まれます。
  4. 第 4 セクションにはデバイスに関する文書が含まれます (Unix 系システムには特別なファイルがあり、通常 /dev/ ディレクトリに格納されています)。
  5. 第 5 セクションには設定ファイル (書式や規約) に関する文書が含まれます。
  6. 第 6 セクションにはゲームに関する文書が含まれます。
  7. 第 7 セクションには一連のマクロと標準化規約に関する文書が含まれます。
  8. 第 8 セクションにはシステム管理コマンドに関する文書が含まれます。
  9. 第 9 セクションにはカーネルルーチンに関する文書が含まれます。
探しているマニュアルページのセクション番号を指定することも可能です。すなわち read システムコールに関する文書を見るには、man 2 read と入力してください。セクション番号を指定しなかった場合、指定した名前に関するマニュアルページが最初に見つかったセクションから内容が表示されます。そんなわけで、man shadowshadow(5) を表示します。なぜなら、shadow に関するマニュアルページは第 1 セクションから第 4 セクションの間に存在しないからです。
もちろん、コマンドの名前を知らなければ、マニュアルページは役に立ちません。コマンドの名前がわからない場合に役立つのが apropos コマンドです。apropos コマンドはマニュアルページ内、正確に言うと短い説明文内を検索します。それぞれのマニュアルページは基本的に 1 行の要旨から始まります。apropos はマニュアルページの要旨にキーワードを含むプログラムのマニュアルページのリストを返します。キーワードをうまく選べば、必要なコマンドの名前を見つけることができるでしょう。

例 7.1 apropos を使って cp を探す

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

7.1.2. info 文書

これまでずっと GNU プロジェクトはほとんどのプログラムのマニュアルを info フォーマットで書き続けてきました。そのため、多くのマニュアルページでは対応する info 文書を参照することが求められています。info フォーマットにはいくつかの利点がありますが、info 文書を表示するためにデフォルトで用意されているプログラム (これは info と呼ばれています) は若干理解に苦労するものです。info の代わりに pinfo (pinfo パッケージに含まれます) を使うのが賢明かもしれません。
info 文書は階層的な構造をしており、pinfo をパラメータなしで実行した場合、最初の階層から利用できるノードのリストが表示されます。通常、ノードには対応するコマンドの名前が付けられています。
pinfo でノード間を移動するには、矢印キーを使います。もう 1 つの方法として、グラフィカルブラウザを使うこともできます。これはずっとユーザフレンドリーな方法かもしれません。info 文書に対応するグラフィカルブラウザとして、先に紹介した konqueroryelp があります。さらに info2www はウェブインターフェースを提供します。
info システムは man ページシステムと異なり翻訳に適さないシステムであるという点に注意してください。そんなわけで、info 文書はほとんど常に英語で書かれています。しかしながら、pinfo プログラムに対して存在しない info ページを表示するよう要求した場合、プログラムは同名の man ページを (存在すれば) 表示します。これは翻訳されているかもしれません。

7.1.3. 独自の文書

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

7.1.4. ウェブサイト

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

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

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