両方のオペレーティングシステムに属していないファイルを含むように設計されており、一方で/opt
と/usr/local
同じファイルのセットを含むように意図されていません。
/usr/local
通常はmake
コマンド(例:)を使用して、管理者が作成したファイルをインストールする場所./configure; make; make install
です。これは、オペレーティングシステムの一部であるファイルとの衝突を回避することです。これらのファイルは、ローカルのファイルを上書きまたは上書きします(たとえば、/usr/bin/foo
OSの一部で/usr/local/bin/foo
あり、ローカルの代替です)。
以下のすべてのファイル/usr
はOSインスタンス間で共有可能ですが、これはLinuxではめったに行われません。これは、/usr
読み取り専用であると定義されているように、FHSがわずかに矛盾する部分ですが、/usr/local/bin
ソフトウェアのローカルインストールを成功させるには読み取り/書き込みが必要です。FHSの主なインスピレーションの源であったSVR4ファイルシステム標準は、この問題を回避するために/usr/local
、/opt/local
代わりに回避して使用することを推奨しています。
/usr/local
元のBSDからの遺産です。当時、/usr/bin
OSコマンドのソースコードはとに/usr/src/bin
あり/usr/src/usr.bin
、ローカルで開発されたコマンドのソースはに/usr/local/src
あり、そのバイナリはにありました/usr/local/bin
。パッケージ化の概念はありませんでした(tarball以外)。
一方、/opt
バンドルされていないパッケージ(つまり、オペレーティングシステムの配布の一部ではないが、独立したソースによって提供されるパッケージ)をインストールするためのディレクトリであり、それぞれが独自のサブディレクトリにあります。これらは、独立したサードパーティのソフトウェアディストリビュータによって提供されるパッケージ全体が既に構築されています。/usr/local
ものとは異なり、これらのパッケージはディレクトリ規則に従います(または、少なくともそうすべきです)。たとえば、someapp
にインストールされ/opt/someapp
、そのコマンドの1つが/opt/someapp/bin/foo
、その構成ファイルがに、/etc/opt/someapp/foo.conf
ログファイルがになり/var/opt/someapp/logs/foo.access
ます。
/usr/local
ローカルバージョンであり、その他のもののプレースホルダーです。/usr
/opt