FHSの「/usr」ディレクトリの概要

/usr

はじめに

Linuxシステムのディレクトリ構造は、FHS (Filesystem Hierarchy Standard) に基づいて標準化されており、それぞれのディレクトリには特定の役割が割り当てられています。その中でも /usr ディレクトリは、システム全体で利用されるユーザランドプログラムやライブラリドキュメントなどを格納する重要なディレクトリです。本記事では、FHS規格における /usr ディレクトリの役割や構造、用途について詳しく解説します。

/usr ディレクトリとは?

/usr は、主にユーザが利用するソフトウェアやライブラリ、バイナリなどを含むディレクトリで、システム管理者や一般ユーザが共通で使用するプログラムやリソースが格納されています。もともと、/usr という名称は "Unix System Resources" に由来し、システムで必要とされるプログラムやファイルが含まれることを示しています。

システムの動作に不可欠なファイルやプログラムは /bin/sbin に置かれますが、より一般的なユーザ向けのプログラムや追加パッケージは /usr 配下に配置されます。

/usr の主なサブディレクトリ

1. /usr/bin

/usr/bin は、システム全体で利用されるユーザコマンドやアプリケーションのバイナリファイルが格納される場所です。例えば、エディタ、シェルコマンド、システム管理ツールなど、多くの実行ファイルがこのディレクトリに配置されます。

/usr/bin/grep
/usr/bin/find

2. /usr/sbin

/usr/sbin は、システム管理に必要なバイナリファイルが格納されるディレクトリです。システム管理者向けのコマンドや、システムの動作に関わる重要なプログラムが含まれています。

/usr/sbin/useradd
/usr/sbin/iptables

3. /usr/lib

/usr/lib には、システムやアプリケーションが利用するライブラリファイルが配置されます。特定のプログラムを動作させるために必要な共有ライブラリやモジュールがここに含まれます。

/usr/lib/libc.so
/usr/lib/python3.8/

4. /usr/share

/usr/share は、アーキテクチャに依存しないデータファイルを格納するディレクトリです。マニュアルページ、アイコン、テキストファイル、設定テンプレートなど、ソフトウェアが動作する際に必要なデータが配置されます。

/usr/share/man/
/usr/share/doc/
/usr/share/icons/

5. /usr/include

/usr/include には、ソフトウェアの開発に必要なヘッダファイルが格納されています。プログラムのコンパイルや開発に必要なCやC++のヘッダファイルがここに保存され、開発者が利用します。

/usr/include/stdio.h
/usr/include/stdlib.h

6. /usr/local

/usr/local は、システムの標準的なパッケージ管理システムとは独立してインストールされたプログラムやファイルを格納する場所です。例えば、ソースコードからコンパイルして手動でインストールしたプログラムは、通常 /usr/local に配置されます。

/usr/local/bin/
/usr/local/lib/

/usr ディレクトリの利点

1. システムとユーザデータの分離

/usr ディレクトリは、システム全体で共通して使用されるプログラムやライブラリを保存する場所であり、個々のユーザデータとは明確に分離されています。これにより、システムのアップデートやパッケージの管理がしやすくなり、ユーザファイルへの影響を最小限に抑えることができます。

2. プログラムとライブラリの整理

/usr 配下にバイナリ、ライブラリ、ヘッダファイル、アーキテクチャに依存しないデータなどを整理して配置することで、システムの管理やメンテナンスが簡素化されます。これにより、ファイルの配置が一貫して管理され、開発者やシステム管理者にとっての利便性が向上します。

3. 標準化されたディレクトリ構造

FHSに従って設計された /usr ディレクトリは、どのLinuxディストリビューションでも共通の構造を持つため、システム管理者や開発者は異なるディストリビューションでも同様のファイル配置を予測できます。これにより、システムの移行や管理が容易になります。

/usr と / との違い

/usr は、ユーザが利用するソフトウェアやツールを主に格納するディレクトリですが、/ にはシステム全体の重要なファイルやディレクトリが含まれています。たとえば、システムのブートや最低限の操作に必要なファイルは /bin/sbin に保存されており、システムの初期段階で必要なプログラムが格納されています。

対して、/usr はユーザランドのアプリケーションやライブラリが保存されるため、システムが起動した後の運用に必要なファイルが多く含まれます。

まとめ

/usr ディレクトリは、Linuxシステムにおける非常に重要な役割を果たしています。システム全体で利用されるバイナリファイル、ライブラリ、ヘッダファイル、アーキテクチャに依存しないデータなどが格納されており、システムの運用や開発に不可欠なディレクトリです。また、FHSに基づいて設計されているため、他のディレクトリとの役割分担が明確であり、システムの効率的な管理を支えています。