CentOS 5をプログラミング環境で使う

FHSとディレクトリ階層

FHSとディレクトリについて

 Linuxのディレクトリ階層は、ディストリビューションによって異なります。そうした中で、ディレクトリ階層を標準化しようとする動きが現れ、Filesystem Hierarchy Standard(FHS)が作られました。しかし、実際のLinuxディストリビューションはこれに従ってはいないものが多いのが現状です。

 なお、Red Hat社のLinuxディストリビューションである旧Red Hat LinuxやRed Hat Enterprise Linux(RHEL)は、このFHSに従っています。Red HatクローンであるCent OSも同様FHSに従ったディレクトリ階層を取っています。

FHS Ver.2.3より

FHS Ver.2.3から言及しているディレクトリを抜き出すと以下になります。

*1 はオプション

FHSの主要ディレクトリ

/usr/ディレクトリ

マシンをまたがって共通(共有)するファイルのためのディレクトリです。/usr/の下には所定の構成があります。
bin/, etc/, games/, include/, kerberos/, lib/, libexec/, sbin/, share/, src/, tmp/(シンボリックリンク)。
また、read-onlyでマウントされます。

libexec/は、ユーザからではなく他のプログラムから呼ばれる小さなヘルパープログラムを置く場所です。
share/は、アーキテクチャ(CPUタイプ等)に依存しないファイルを置く場所です。

/usr/local/

FHSでは、システム管理者がOSのアップデートで上書きされたくない固有のソフトウェアを置く場所としています。/usr/local/の下には、/usr/の下と同様、bin/, etc/, games/, include/, lib/, libexec/, sbin/, share/, src/ が置かれます。

RHELでは、RPMパッケージでOSコンポーネントのアップデート管理をしているので、上書きの心配はありません。そこで、/usr/local/にはそのマシン固有のソフトウェアを入れる場合に使用します。(/usr/はNFSで共有する場合がある)

/opt/

FHSでは、・・・T.B.D.。

RHELでは、多くのアプリケーション・ソフトウェア・パッケージのための場所として/opt/を提供しています。/opt/に置く場合、パッケージ名と同名のディレクトリを/opt/の下に作成し、全てのファイルをそこに格納します。

例) /opt/sample/bin, /opt/sample/man, /opt/sample/tool, など。

/mnt/

一時的にNFSなどでマウントするポイントとして使用する。リムーバルメディアはここではなく/media/をマウントポイントに使う。

プログラマーが気にするディレクトリ

プログラマーとして気にしておくディレクトリについて抽出します。

OS以外のパッケージはどこにインストールすればよいか

RPMパッケージでリリースされているソフトウェアは、そのままデフォルトでインストールすれば大抵FHSに準拠したディレクトリにインストールされます。しかし、ソースのtarballをmakeしてinstallするような場合、デフォルトでは/usr/local下に入るものが大半です。

自分で作ったプログラムはどこにインストールすればよいか