ファイルシステム階層標準によると、/opt
「アドオンアプリケーションソフトウェアパッケージのインストール」用です。 /usr/local
「ソフトウェアをローカルにインストールするときにシステム管理者が使用するため」です。これらのユースケースは非常に似ているようです。ディストリビューションに含まれていないソフトウェアは、通常、デフォルトで/usr/local
のいずれかにインストールするように構成されています。 または/opt
彼らが選んだ特別な韻や理由はありません。
私が見逃している違いはありますか、または両方とも同じことをしますが、歴史的な理由で存在しますか?
承認された回答:
どちらもオペレーティングシステムに属していないファイルを含むように設計されていますが、/opt
および/usr/local
同じファイルのセットを含めることを意図したものではありません。
/usr/local
通常はmake
を使用して管理者が作成したファイルをインストールする場所です。 コマンド(例:./configure; make; make install
)。アイデアは、オペレーティングシステムの一部であるファイルとの衝突を回避することです。ファイルは、上書きされるか、ローカルファイルを上書きします(例:/usr/bin/foo
/usr/local/bin/foo
がOSの一部である間、 ローカルの代替手段です。
/usr
の下にあるすべてのファイル Linuxではめったに行われませんが、OSインスタンス間で共有可能です。これは、/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
内のそれらのバイナリ 。パッケージングの概念はありませんでした(タールボールの外)。
一方、/opt
バンドルされていないパッケージ(つまり、オペレーティングシステムディストリビューションの一部ではないが、独立したソースによって提供されるパッケージ)をインストールするためのディレクトリであり、それぞれが独自のサブディレクトリにあります。それらは、独立したサードパーティのソフトウェアディストリビューターによって提供されたパッケージ全体ですでに構築されています。 /usr/local
とは異なり これらのパッケージは、ディレクトリの規則に従います(または少なくともそうする必要があります)。たとえば、someapp
/opt/someapp
にインストールされます 、そのコマンドの1つは/opt/someapp/bin/foo
です。 、その構成ファイルは/etc/opt/someapp/foo.conf
にあります 、および/var/opt/someapp/logs/foo.access
内のそのログファイル 。