#norelated #navi(FHS) #contents ---- * 4章 /usr 階層 [#lac2b1e9] ** 目的 [#xd65e2af] /usr はファイルシステムで2番目に重要な領域です。/usr は共有可能であり、読み込みのみ(read-only)のデータが置かれます。/usr は FHS に従っているホスト間で共有可能であることを意味し、そのような意味で記述しています。ホスト特有の情報や時間によって変化する情報はその他の領域に置かれます。 大きなソフトウェア・パッケージは /usr 配下にサブディレクトリを作成すべきではありません。 ** 必要条件 [#ef8e98d2] 以下のディレクトリあるいはディレクトリへのシンボリックリンクは /usr で必要とされます: : ディレクトリ名 | ''説明'' :bin|ユーザが利用するコマンドの大部分 :include|C プログラムが用いるヘッダファイル :lib|ライブラリ :local|ローカル階層(大抵インストール後は空っぽです) :sbin|重要でないシステムコマンド :share|アーキテクチャに依存しないデータ ** オプション指定 [#j0cd8c7e] : ディレクトリ名 | ''説明'' :X11R6|X Window システムバージョン 11 リリース6(オプション) :game|ゲームとコマンドの学習(オプション) :lib<qul>|代替フォーマットのライブラリ(オプション) :src|ソースコード(オプション) これまでの慣例から X Window システム実行のために必要とされる場所が例外として確保されています。 以下のようなディレクトリへのシンボリックリンクがあるかもしれません。これらは全てのシステムファイル群が /usr 階層を用いると考えられていたシステムへの互換性を保つためです。 /usr/spool -> /var/spool /usr/tmp -> /var/tmp /usr/local/locks -> /var/lock システムによって上記のシンボリックリンクが必要としないなら、リンクを削除して構いません。 ** /usr/X11R6 : X Window システムバージョン 11 リリース6(オプション) [#qa25505d] *** 目的 [#o1a9f575] この階層はX Window システムバージョン 11 リリース6 および関連ファイルのために確保されています。 XFree86 を他の X Window 互換システムと両立させることができるよう問題を単純化するために /usr/X11R6 ディレクトリが存在しているばあい、以下のようなシンボリックリンクが作成されているでしょう。 /usr/bin/X11 -> /usr/X11R6/bin /usr/lib/X11 -> /usr/X11R6/lib/X11 /usr/include/X11 -> /usr/X11R6/include/X11 一般的にソフトウェアは上記のようなシンボリックリンクを用いて管理するようにインストールしてはいけません。ユーザが利用可能であるように意図されています。問題は X Window システムのバージョンの影響を受けるかどうかがありますが、過渡的なものであり、X11 がリリースされている間は問題ないでしょう。 *** オプション指定 [#v77a23c6] /usr/X11R6/lib/X11 あるファイルがホスト固有のデータであると解釈されます。現在の情報を必要とするアプリケーションによって /etc/X11 の設定ファイルを参照するか、/usr/X11R6/lib にファイルをリンクしているかもしれません。 ** /usr/bin : ユーザが利用するコマンドの大部分 [#r648a1f8] *** 目的 [#v5ecd244] システムで実行可能なコマンドが置かれている主要なディレクトリです。 *** オプション指定 [#m230f140] 対応するサブシステムがインストールされる場合、以下のディレクトリ、あるいはディレクトリへのシンボリックリンクが /usr/bin に置かれます: : ディレクトリ名 | ''説明'' :mh|MH メールハンドリングシステムのコマンド群(オプション) /usr/X11R6/bin がある場合は /usr/bin/X11へのシンボリック・リンクが必要です。 以下の対応するサブシステムがインストールされる場合、次のファイルあるいはファイルへのシンボリック・リンクが /usr/bin に置かれます。 : コマンド名 | ''説明'' :perl|perl (実用的な抽出と報告のための)言語(オプション) :python|Python インタプリタ言語(オプション) :tclsh|単純なシェルを含む Tcl インタプリタ(オプション) :wish|単純な Tck/Tk ウインドウシェル(オプション) :expect|対話型ダイアログのプログラム(オプション) > ''(i) 補足説明'' > シェルスクリプトでは一番最初の行(#!<パス>で呼び出す)でシェル自身のパスを知ることができないため、場所を標準化することは便利になります。ボーンシェルや C シェルらは /bin 以下に既に固定されてしまっていますが、Perl , Python, Tcl などは異なった場所で見受けられます。それらシェル・インタラプターの実際の場所からシンボリック・リンクが置かれているかもしれません。 ** /usr/include : 標準的な組み込みファイルのためのディレクトリ [#t079ffde] *** 目的 [#be977e4c] C プログラミング言語のためのシステムが使用する一般的な組み込みファイルがすべて置かれる場所です。 *** オプション指定 [#ja61923a] 対応するサブシステムがインストールされている場合、次のディレクトリあるいはディレクトリへのシンボリックリンクが /usr/include に作成されています: : ディレクトリ名 | ''説明'' :bsd|BSD 互換性組み込みファイル(オプション) ** /usr/lib : プログラミングのためのライブラリとパッケージ [#pb08f304] *** 目的 [#xe5ca21a] /usr/lib にはシェルスクリプトによって直接実行されないようにしたいオブジェクトファイル、ライブラリ、そして内部のバイナリファイルを含みます。((多くのアーキテクチャやアプリケーションに依存するファイルは /usr/share 配下に置かなくてはいけません。)) アプリケーションによっては /usr/lib のディレクトリのみ使うかもしれません。もしアプリケーションがサブディレクトリを用いるのであれば、アプリケーションが扱う全てのアーキテクチャに依存するファイルは、そのサブディレクトリ内に置かなければいけません。((たとえば、Perl5 モジュールとライブラリのためのサブディレクトリ名は perl5 です。)) *** オプション指定 [#ob36c1d8] 歴史的な理由から ''/usr/sbin/sendmail'' へのシンボリック・リンクが ''/usr/lib/sendmail'' として残っている場合があります((makewhatisやsendmailといった実行可能なコマンドのいくつかは過去 /usr/lib に置かれてきた経緯があります。makewhatis は内部コマンドであり /bin ディレクトリに置かねばならず、ユーザがアクセスできるのは catman のみです。sendmail は現在標準で /usr/sbin に置かれるようになっているのですが、sendmail 互換システムを用いている環境のために /usr/sbin/sendmail からでなくても実行できるようシンボリックリンクを残しておかれています))。 /lib/X11 が存在している場合、/usr/lib/X11 は /lib/X11 自体がシンボリックリンクだとしても /lib/X11 へのシンボリック・リンクでなくてはいけません((ホスト毎の X Windows システム用のデータファイルは /usr/lib/X11 に置いてはいけません。xconfig や XF86Config といったファイルは /etc/X11 に置かれるべきです。この設定ファイルには system.twmrc といったファイルも含まれ /usr/X11R6/lib/X11 へのシンボリックとなっているかもしれません。))。 ** /usr/lib<qual> : 共用ライブラリの代替フォーマット(オプション) [#tc755fe8] *** 目的 [#l540e686] /usr/lib/<qual> は /usr/lib 配下のバイナリフォーマットと同一の役割を持ちます。ただし /usr/lib<qual>/sendmail と /usr/lib<qual>/X11 へのシンボリック・リンクは必要とされません((/usr/lib と /usr/lib<qual> は同じかシンボリック・リンクであり、アプリケーション毎によって使い分けられます))。 ** /usr/local : ローカル階層 [#v9b1215e] ''目的'' /usr/local 階層はシステム管理者がローカルのシステムにソフトウェアをインストールするときに用いる階層です。システムのソフトウェアが更新されるときに上書きされないように注意を払わなくてはいけません。/usr 配下はホスト間で共有プログラムによって使用されるプログラムやデータが置かれる場合もあります。 ローカルな環境にプログラムをインストールしたりアップグレードする場合は /usr にソフトが置かれている場合でも、/usr よりむしろ /usr/local にインストールしなくてはいけません((ソフトウェアが / や /usr ディレクトリ配下に配置されていると、システムが更新される際にファイルが上書きされたりしてしまう可能性があります。このような影響を受けないように、ローカルなソフトウェアは /usr/local 以外には設置しないほうが望ましいでしょう。))。 ''必要条件'' 以下のディレクトリあるいはディレクトリへのシンボリックリンクが /usr/local に置かれます : ディレクトリ名 | ''説明'' :bin|ローカル利用のコマンド :etc|ローカル利用コマンドの為の設定ファイル :games|ローカル利用のゲーム :include|ローカル利用の C ヘッダファイル :lib|ローカル利用ライブラリ :man|ローカル利用のオンラインマニュアル :sbin|ローカル利用のシステムコマンド :share|ローカル利用のアーキテクチャに依存しない階層 :src|ローカル利用のソースコード置き場 システムをインストールした直後であれば FHS に準拠したシステムであっても /usr/local 配下には何もディレクトリが作成されていない場合があります。 ''オプション指定'' もし /lib<qual> か /usr/lib<qual> が存在しているのであれば、同等のディレクトリが /usr/local 配下にも置いておかなくてはいけません。 /usr/local/etc は /usr/local へのシンボリック・リンクである場合があります。 > ''(i) 補足説明'' > /usr/local/etc が在ればインストーラーや既に利用されている他のシステムにとっても役立つ場所です。/usr/local 配下のファイルはシステムを置き換えるときにバックアップが必要となりますが、バックアップ以上の作業は必要としません。ですが /etc/local 配下へのシンボリック・リンクがある場合には、その階層を維持するように注意しなくてはいけません。 > /usr 配下のプログラムが使用する設定ファイルを置く場所は /etc であり、/usr/etc を利用することはまだ認められていません。 ** /usr/local/share [#bd1cc1bd] /usr/local/share の必要な条件は /usr/share と同じものです。唯一制約があるのは /usr/local/share/man と /usr/local/man ディレクトリはシンボリック・リンクでなくてはいけないという事があげられます。 ** /usr/sbin : 重要ではない標準的なシステムコマンド [#q1ed93a2] *** 目的 [#uf242449] このディレクトリにはシステム管理者に特に必要とされないファイルも含みます。システム修復、システム回復、/usr のマウントやその他システム管理に重要なプログラムは /sbin に配置されなくてはいけませ。 このディレクトリにはシステム管理者に特に必要とされないファイルも含みます。システム修復、システム回復、/usr のマウントやその他システム管理に重要なプログラムは /sbin に配置されなくてはいけません。 ** /usr/share : アーキテクチャに依存しないデータ [#f5123e37] *** 目的 [#bd6909c7] /usr/share 階層は全て読み込み専用(read-only)でアーキテクチャに依存しないデータファイルのための場所です((元々 /usr 配下にあったのは /usr/man, /usr/doc あるいは /usr/lib/dict, /usr/lib/terminfo, /usr/lib/zoneinfo といったファイルです))。 この階層は異なった OS やアーキテクチャ間でデータが共有される事を意図しています。たとえば i386, Alpha, PPC プラットフォームで一緒のサイトを構築する際に /usr/share ディレクトリが中心にマウントされるかもしれません。ですが、一般的には /usr/share が異なった OS や同じ OS であってもリリースが違えば共有されることはありませんので、注意を払っておいてください。 修正する必要がないデータを含んでいるプログラムやパッケージが用いるデータは /usr/share(あるいはローカルにインストールするときは /usr/local/share)に配置されます。必要に応じて /usr/share 配下にサブディレクトリを作成することが認められています。 /usr/share/game に置かれているゲームデータは純粋に静的なデータファイルではなくてはいけません。ゲームのプレイ記録や得点記録ファイルといった更新可能なファイルは /var/games 配下に置くべきです。 *** 必要条件 [#s8a0bbd5] 以下のディレクトリかディレクトリへのシンボリックリンクが /usr/share に置かれなくてはいけません。 : ディレクトリ名 | ''説明'' :man|オンラインマニュアル :misc|アーキテクチャに依存しないその他のデータ *** オプション指定 [#k8bc74ca] 対応するサブシステムがインストールされるのであれば、以下のディレクトリあるいはディレクトリへのシンボリックリンクが /usr/share に置かれます : ディレクトリ名 | ''説明'' :dict|単語リスト(オプション) :doc|様々なドキュメント類(オプション) :game|/usr/games の為の静的なデータファイル(オプション) :info|GNU 情報システムの為の主要なディレクトリ(オプション) :locale|場所に関する情報(オプション) :nls|言語サポートの為のメッセージカタログ(オプション) :sgml|SGML データ(オプション) :terminfo|terminfo データベースの為のディレクトリ(オプション) :tmac|groff で配布されない troff マクロ(オプション) :xml|XML データ(オプション) :zoneinfo|タイムゾーンの情報と設定のためのファイル(オプション) アプリケーション固有でアーキテクチャに依存しないディレクトリが置かれる事が推奨されています。ディレクトリとしては ''groff'', ''perl'', ''ghostscript'', ''texmf'', ''kbd''(Linux) あるいは ''syscons''(BSD) といったものが含まれます。ですがディストリビューションの方針や旧システムとの互換性を保つ為に /usr/lib に置かれる場合もあります。同様にディストリビューションが /usr/lib/games 階層を /usr/share/games 階層として同じ働きをするものとして用いる場合もあります。 *** /usr/share/dict : 単語リスト(オプション) [#b3f9b4bb] ''目的'' このディレクトリはシステムの単語リスト置き場です。伝統的にディレクトリには英語の綴り、たとえば ''look(1)'' や文法をチェックするプログラムによって用いられます。言語はアメリカ式英語か英国式英語のいずれかです。 > ''(i) 補足説明'' > 全ての文法チェックプログラムが唯一共通して利用する場所です。 ''オプション指定'' 対応するサブシステムがインストールされる場合、以下のファイルあるいはファイルへのシンボリック・リンクが /usr/share/dict に置かれなくてはいけません。 :ファイル名|説明 :words|英単語リスト(オプション) サイトがアメリカ式と英国式の文法を必要とする場合には /usr/share/dict/american-english あるいは /usr/share/dict/british-english へリンクされるかもしれません。 他の言語のための単語リストが /usr/share/dict/french、/usr/share/dict/danish など英語表記のディレクトリ名が追加されるかもしれません。これらは、可能であれば ISO 8859 文字セットに従うべきです。できれば Latin1(ISO 8859-1) 文字セットに従うべきです(が殆ど無理でしょう)。 ほかにも単語リストが必要であれば、このディレクトリ内に配置されます。 *** /usr/share/man : マニュアルページ [#j2c25cd3] ''目的'' このセクションでは /usr/share/man を含むマニュアルページのための構成を記述します。あわあせて /var/cache/man セクションもご覧下さい。 システムで主要な <mandir> は /usr/share/man です。/usr/share/man にはマニュアル情報と / および /usr ファイルシステムのコマンド群の説明を含みます((/ には明白なマニュアルは存在しません。起動時にも必要ではありませんし、緊急時にも必要ないからです。実際に。))。 マニュアルページは <mandir>/<locale>/man<section>/<arch> として置かれます。<mandir>, <locale>, <section>, <arch> については以下で説明します。 以下はそれぞれのセクションの説明です: - man1 : この章には一般ユーザもアクセス可能なコマンドに対するユーザマニュアルが含まれます。一般的にユーザが使う事が想定される殆どのプログラムについての記述がなされています。 - man2 : システムコール、カーネルが機能するために必要となるシステムコール群です。 - man3 : ライブラリ関数とサブルーチンです。セクション3ではカーネルサービスへ直接コールしないようなライブラリ関数とルーチンを扱います。実際にプログラムが必要とするのはこの man3 と man2 のみです。 - man4 : システムのデバイスドライバとネットワークをサポートするために必要となる特殊なファイルに対してのものです。典型的なものとして /dev 配下のデバイスファイル群とネットワーク・プロトコルをサポートするカーネルインターフェースを含みます。 - man5 : セクション5はファイルフォーマット、多くのファイル形式についてのファイル書式です。このなかには様々な組み込みファイルやプログラムの出力ファイル、システムファイルが含まれます。 - man6 : ゲームに関するドキュメントやデモ、一般的にとくに必要とされないプログラムについて扱います。ここが必要不可欠かどうかについては多くの人が異なった概念を持ってます。 - man7 : セクション7では分類することが難しいその他のマニュアルや文章を含みます。troff とその他適す図書利用のマクロパッケージがこのセクションにあります。 - man8 : システム管理者がメンテナンスや操作を行うプログラム群についての文章が枯れています。プログラムについての記述は管理者だけではなく、一般ユーザにとっても有用なものです。 ''オプション指定'' 以下のディレクトリまたはディレクトリへのシンボリック・リンクが /usr/share/<mandir>/<local> に置かれるか、まったくディレクトリが存在しない場合もあります。 : ディレクトリ名 | ''説明'' :man1|ユーザープログラム(オプション) :man2|システムコール(オプション) :man3|ライブラリコール(オプション) :man4|特別なファイル(オプション) :man5|ファイルフォーマット(オプション) :man6|ゲーム(オプション) :man7|その他(オプション) :man8|システム管理(オプション) <section> はマニュアルのセクション番号を指し示します。 /usr/share/man は異なった複数の言語でも記述される事を想定した構造を持たなくてはいけません。どこにファイルを置くか、そして、どこからマニュアルが参照されるかも考慮しなくてはいけません。言語(方言も含む)や文字コードセットに対する適切な配慮も行われます。 /usr/share/man 配下に言語用のサブディレクトリを作成するには POSIX 1003.1 標準の付録 E に基づいて識別できるような文字列を用います。<locale> 文字列は文化的な環境を区別するために用いられます: <languae>[ <territory>][.<character-set>][,<version>] <language>欄は ISO 639(言語の区別ついての規定)に基づく2文字を入れます。文字は小文字のみです。 <territory>欄には ISO 3166 によって規定されている国や地域についての規定に基づく2文字を入れます。(多くの人々は電子メールアドレス中に含まれる .jp などの2文字の事だと気づくでしょう)規定として2文字を用いることと大文字のみを使用しなくてはいけません((ただし、中にはイギリス等のための重要な例外もあります。たとえば ISO 3166 で規定されている BG と UK です。))。 <character-set> 欄には標準の文字コードセットを記述しなくてはいけません。<character-set> 欄が単なる数字を用いるのであれば、文字セットを定義している国際規格の番号を指し示しています。できれば、これら数値の表示には(特に ISO 標準であるように)句読点を含まず、どのような文字でも小文字として記述されるべできす。 <version> 欄は <character-set> の後に , に続いて用いられるかも知れません。これは言語内でも異なった用い方(方言)を区別するために用いられるかもしれません。たとえば、システム仕様に従ったものと、本来の辞書で用いられる使い方が対立する場合などです。特に使用する必要がなければ <version> 欄は用いない事を推奨します。 システムが使用する言語や特定の文字コードセットは <locale> を省略して、そのまま全てのマニュアルが <mandir> に配置されるかもしれません。たとえば、システムが ASCII コードで書かれた英語のマニュアルしか用いないときマニュアル文書は(man<section>ディレクトリ)直接 /usr/share/man に置かれます。(これは実際のところ、伝統的な事情と取り決めによるものです) 特定の国内で一般的に用いられる文字コードセットがある場合には <character-set> 欄は省略されるかもしれません。ですが、省くことで標準として用いてしまうと、他の言語との競合する問題が発生するため、省略しないようにすることを推奨します。 実際の例: |''言語''|''領土''|''文字コードセット''|''ディレクトリ名''| |English|?|ASCII|/usr/share/man/en| |English|イギリス|ISO 8859-15|/usr/share/man/en_GB| |English|アメリカ|ASCII|/usr/share/man/en_US| |French|カナダ|ISO 8859-1|/usr/share/man/fr_CA| |French|フランス|ISO 8859-1|/usr/share/man/fr_FR| |German|ドイツ|ISO 646|/usr/share/man/de_DE.646| |German|ドイツ|ISO 6937|/usr/share/man/de_DE.6937| |German|ドイツ|ISO 8859-1|/usr/share/man/de_DE.88591| |German|スイス|ISO 646|/usr/share/man/de_CH.646| |Japanese|日本|JIS|/usr/share/man/ja_JP.jis| |Japanese|日本|SJIS|/usr/share/man/ja_JP.sjis| |Japanese|日本|UJIS (or EUC-J)|/usr/share/man/ja_JP.ujis| 同様に、デバイスドライブや下位レベルのシステム管理コマンド群に対する説明書など、アーキテクチャに依存するマニュアル文書も提供されなくてはいけません。man<section> ディレクトリ配下に <arch> ディレクトリとして置かれます。たとえば、i386 ctrlaltdel(8) コマンドの為のマニュアルは /usr/share/man/<locale>/man8/i386/ctrlaltdel.8 として置かれるでしょう。 /usr/local 配下のコマンドとデータのためのマニュアル文書は /usr/local/man に置かれます。X11R6 の為のマニュアルは /usr/X11R6/man です。システム内の全てのマニュアル階層は /usr/share/man と同様の構造を持っていなくてはいけません。 cat 文書のセクション(cat<section>)は典型的なマニュアル文書と同様に、<mandir>/<locale> サブディレクトリとして存在する場合もありますが、nroff ソースのマニュアル文書が配布されないように、特に必要とされないものです。 伝統的にマニュアルのセクションは1〜8まで割り振られています。一般的にはファイル名として .<section> のようにセクションを示しています。 追加次項として、特定のアプリケーションに特化した若干大きめのマニュアルを含むファイルセットが存在する場合があります。たとえば、MH メール・ハンドリングシステムのマニュアルページは全て mh という文字がマニュアル名に含まれます。全ての X Window システムのマニュアルページには x という文字がマニュアルに含まれます。 様々な言語のためのマニュアル文書は、サブディレクトリ /usr/share/man に配置されています。その他のマニュアル文章も同様な /usr/local/man と /usr/X11R6/man といった階層構造を持ちます。(標準階層の一部オプションとして /var/cache/man 構造があります) *** /usr/share/misc : アーキテクチャに依存しないその他のデータ [#y2ddd7fa] ディレクトリ内にはアーキテクチャに依存しないファイルや /usr/share 配下におかれるサブディレクトリを含みます。 ''オプション指定'' 対応するサブシステムがインストールされる場合、次のファイルあるいはファイルへのシンボリックリンクが /usr/share/misc に置かれます。 : ファイル名 | ''説明'' :ascii|ASCII 文字セット表 :magic|標準ファイルコマンドのマジック番号一覧 :termcap|ターミナルが利用可能なデータベース :termcap.db|ターミナルが利用可能なデータベース ディストリビューションの方針でアプリケーションによっては /usr/share/misc よりも /usr/lib が用いられる場合もあります((次のようなファイルが含まれます:airport, birthtoken, eqnchar, getopt, gprof.callg, gprof.flat, inter.phone, ipfw.samp.filters, ipfw.samp.scripts, keycap.pcvt, mail.help, mail.tildehelp, man.template, map3270, mdoc.template, more.help, na.phone, nslookup.help, operator, scsi_modes, sendmail.hf, style, units.lib, vgrindefs, vgrindefs.db, zipcodes ))。。 *** /usr/share/sgml : SGML データ(オプション) [#k441b64a] ''目的'' /usr/share/sgml には SGML アプリケーションがオリジンルのカタログ(一覧化されていないものは /etc/sgml)DTD、エンティティ、スタイルシートなどアーキテクチャに依存しないデータを含みます ''オプション指定'' 対応するサブシステムがインストールされる場合、以下のディレクトリあるいはディレクトリへのシンボリック・リンクが /usr/share/xml に置かれます。 : ディレクトリ名 | ''説明'' :docbook|docbook XML DTD(オプション) :tei|tei DTD(オプション) :html|HTML DTD(オプション) :mathml|MathML DTD(オプション) 所定の DTD に属さないファイルのために、サブディレクトリが作成される場合があります。 *** /sur/share/xml : XML データ(オプション) [#c8000ca7] ''目的'' /usr/share/xml には XML アプリケーションがオリジナルのカタログ(一覧化されていないのは /etc/sgml )DTD、エンティティ、スタイルシートなどアーキテクチャに依存しないデータを含みます。 ''オプション指定'' 対応するサブシステムがインストールされる場合、以下のディレクトリあるいはディレクトリへのシンボリック・リンクが /usr/share/xml に置かれます。 : ディレクトリ名 | ''説明'' :docbook|docbook XML DTD(オプション) :xhtml|XHTML DTD(オプション) :mathml|MathML DTD(オプション) ** /usr/src : ソースコード(オプション) [#l7aa563c] *** 目的 [#oe534aec] ソースコードを純粋に参照することを目的として、このサブディレクトリを用います((一般的にはこのディレクトリ内でソースをビルドすべきではありません))。 #navi(FHS)