次のページ 前のページ 目次へ

2. man page はいかにしてアクセスされるか?

作成する man page に正しい名称を与え、正しい場所にインストールするため には、man page がどのようにアクセスされるかについての正確な仕組みを知 ることが必要である。man page はすべて、特定のセクションに所属しており、 このセクションは1文字で表されている。Linux での標準のセクションとその 意味は次の通り。

セクション  名前

    1       だれもが実行できるユーザコマンド
    2       システムコール、つまり、カーネルが提供する関数 
    3       サブルーチン、つまり、ライブラリ関数
    4       デバイス、つまり、/dev ディレクトリのスペシャルファイル
    5       ファイルフォーマットの説明、例 /etc/passwd
    6       ゲーム(説明不要だろうネ)
    7       その他  例: マクロパッケージや取り決め的な文書
    8       システム管理者だけが実行できるシステム管理用のツール
    9       Linux 独自のカーネルルーチン用のドキュメンテーション
    n       新しいドキュメンテーション:よりふさわしい場所に移動されるだろう
    o       古いドキュメンテーション 猶予期間として保存されているもの
    l       独自のシステムについてのローカルなドキュメンテーション

man page のためのソースファイル(フォーマットシステムへの入力)の 名前は、対応するコマンド、関数もしくはファイルの名前で始まり、それにドッ トとセクション名が続く。例えば、passwd のファイルのフォーマットについ てのドキュメンテーションを書く場合、ソースファイルの名称は、passwd.5 としなければならない。この場合は、コマンドの名称とファイルの名称が同じ 例である。また、passwd という名称のライブラリサブルーチンがあるかもし れない。セクションの設定は、これらの曖昧さを解決するために通常利用され る方法である。すなわち、コマンドについての説明は、passwd.1 のファイル に、例としてあげたライブラリサブルーチンの説明は、passwd.3 のファイル に書かれることになる。

時折、いくつかの文字が追加されて、例えば、 xterm.1x とか wish.1tk というファイル名となることがある。これの意味す るところは、夫々が、Xウィンドウ又はTkのアプリケーションに対するドキュ メンテーションであることを明らかにすることである。マニュアルのブラウザ によっては、この追加の情報を利用できる。例えば、xman は、利用可能なド キュメンテーションのリスト中に、xterm(x) や wish(tk) を使用する。

n や o 及び l のセクションを使わないで欲しい。ファイルシステムスタ ンダードでは、これらのセクションは非難されている。数字のセクションを忠 実に使って欲しい。

既に存在するプログラム、関数又はファイルとの名前の衝突に注意すべき である。独自のエディタを作ってこれを ed とか sed (改良された(smart な) ed の意味で)、red (ロッキーの ed )と命名することはよくない考えだ。 作成するプログラムの名称が固有であることを確実にすることで、あなたの作っ たプログラムをだれかが実行して、別のだれかのプログラムの man page を読 んだり又はその逆の事態を避けることができる。プログラムの名称についての lsm データベースを、ますチェックすべきだ。

さて、作成するプログラムの名称が決まった。次にするべきことは、どのディ レクトリにこのプログラムがインストールされるかを決めるということである。 言い換えれば、ユーザーが make install を実行したときにインストールされ るディレクトリのこと。Linux では、全ての man page は、環境変数 MANPATH で指定されたディレクトリにある。ドキュメンテーションに関連するツールは 環境変数 MANPATH を、シェルが環境変数 PATH を利用するのと同様に利用す る。実際、MANPATH は、PATH と同じフォーマットである。どちらも、コロン で分けられたディレクトリのリストを含んでいる(MANPATH では、空のフィー ルドが認められていないし、相対パス名ではなく絶対パス名だけが利用できる という違いはあるが)。環境変数 MANPATH が設定されていなければ、少なく とも /usr/man ディレクトリを含んだデフォルトの設定が使用される。検索の 速度を上げ、占有するディレクトリを小さくするために、MANPATH で指定され たディレクトリ(ベースディレクトリと呼ばれる)には、man<s> とい う名のサブディレクトリが作成されている。ここで、<s> は先に説明し たテーブルでのセクションを表す一文字である。全てのセクションに対応する サブディレクトリが設けられている訳ではない。これは、空の mano サブディ レクトリを残しておく必要がないと言う単純な理由からである。しかし、別に、 cat<s> とか dvi<s> とか ps<s> という名のディレクトリ (表示、印刷の準備が出来ているドキュメンテーションを備えた)があるかも しれない。これらについては、後で詳しく説明する。ベースディレクトリにあ る他のファイルは、whatis ファイルだけである。このファイルの目的とこの ファイルの作成についても 12 節で説明する。セクション <s> に所属 する man page を正しい場所にインストールする一番安全な方法は、 /usr/man/man<s> のディレクトリに置くことである。しかし、 よい Makefile は、例えば、make 変数 MANDIR を用いて、ユーザーにベース ディレクトリを選択できるようにしている。多くの GNU パッケージではディ レクトリを指定できるプレフィクスオプションを利用して設定できる。 prefix=/what/ever としたとき、ベースディレクトリとして /what/ever/man に、マニュアルがインストールされる。私が薦める のは、同じ様な方法を用意することである。

Linux ファイルシステム標準 (FS-Stnd) の出現により、事態はさらに複雑に なった。FS-Stnd 1.2 では、「/usr/man の構造において、異なる言語(複数 の言語)で書かれた manual page をサポートする約束を決める必要がある」 とされている。これは、異なる言語の間で区別される別のディレクトリレベル を導入することで達成される。再び FS-Stnd 1.2 を引用すると:

「usr/man の言語によるサブディレクトリの命名は、POSIX 1003.1 標準の補 遺 E (ロケール識別文字列について説明している)に基づく。すなわち、文 化の異なる環境を記述するのに最も受け入れられている方法である。「ロケー ル」文字列は:

       <言語>[_<地域>][.<文字セット>][,<バージョン>]

(幾つかの共通のロケール文字列については、FS-Stnd を参照のこと)

このガイドラインによれば、man page のディレクトリは /usr/man/<locale>/man[1-9lno] となる。フォー マットされたドキュメントは、 /usr/man/<locale>/cat[1-9lno] におかれるべき だ。こうしないと、フォーマットされたドキュメントは、一種類のロケールに だけしか準備できないことになる。

しかし、私としては、現時点でこのようなディレクトリ構成に切換えることは 薦めない。FS-Stnd 1.2 でも「全ての man page についてコードセットと言語 が統一されているなら、<locale> 文字列を省略して <mandir> にすべての manual page を保存してもよい」と許されている。例えば、英語 だけの ASCII コードの manual page のシステムでは、/usr/man ディ レクトリの man[1-9] のディレクトリに manual page がおかれる ことになるだろう。(これは、実際、伝統的な環境である)

私は、全てのツール、例えば、xman, tkman, info その他の man page を利用 するツールが、新しいディレクトリ構造に対応するまで、切換はしないつもり である。


次のページ 前のページ 目次へ