
~によるとファイルシステム階層標準、/opt
「追加アプリケーションパッケージのインストール」の内容です。 /usr/local
「ローカルでソフトウェアをインストールするときは、システム管理者が使用します。」これらのユースケースは非常に似ているようです。ディストリビューションに含まれていないソフトウェアは、デフォルトでインストールするように構成されていることがよくあり、それをインストールするために選択した特定の韻や理由はあり/usr/local
ません。/opt
違いはありませんか、どちらも同じことをしますが、歴史的な理由で存在しますか?
答え1
/opt
どちらもオペレーティングシステムの一部ではないファイルを含むように設計されており、/usr/local
同じファイルセットを含めることを意図していません。
/usr/local
は、管理者によって作成されたファイルがインストールされる場所であり、一般的make
に./configure; make; make install
。アイデアは、オペレーティングシステムに属するファイルとの競合を防ぐことです。それ以外の場合は、ローカルファイル(/usr/bin/foo
オペレーティングシステムの一部ではない/usr/local/bin/foo
ローカル代替ファイル)が上書きまたは上書きされます。
以下のファイルはすべて/usr
オペレーティングシステムインスタンス間で共有できますが、Linuxではほとんど実行されません。これは/usr
読み取り専用として定義されていますが、/usr/local/bin
ソフトウェアをローカルに正常にインストールするには読み取りと書き込みが必要なため、FHSのやや逆説的な部分です。この問題を克服するために、FHSの主なインスピレーションの源であったSVR4ファイルシステム標準を避けて/usr/local
使用することをお勧めします。/opt/local
/usr/local
これはもともとBSDの遺産です。当時/usr/bin
、オペレーティングシステムのコマンドのソースコードはにあり/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
。
答え2
基本的な違いは、/usr/local
ソフトウェアがシステムパッケージャによって管理されていないが、まだ標準のUNIX展開ルールに従うことです。
だからあなたは/usr/local/bin
、/usr/local/sbin
/usr/local/include
ちょっと...
/opt
一方、これに従わずにモノリシックな方法で配布されるソフトウェアがあります。これには通常、「Windows」スタイルでパッケージ化された商用および/またはクロスプラットフォームソフトウェアが含まれます。
答え3
それらは実際に非常に似ており、どちらかを使用することはコメントの問題です。 Linux Magazineには、このトピックに関する視点/対位法の議論があります。ここ。
答え4
私はこの問題について少し違った見方をしています。
すべてがエリヤ・グレー~の回答あなたは正しいです。クラスターにソフトウェアをデプロイするとき、実際の適用はデフォルトの環境変数とライブラリーのデフォルトの再使用に帰結します。
簡単に言えば、すべてのサブディレクトリは、/usr/local
などの適切な環境変数にあり、ldconfigの()にあります。PATH
MANPATH
/usr/local/lib{,64}
/etc/ld.so.conf.d/
/opt/
OTOHいいえ - 複数のバージョンまたは競合するパッケージがシステムに共存する必要がある場合には利点がありますが、ある種の環境管理(例:環境モジュールまたはソフトウェアコレクション)、欠点は、各インストールが/opt
完全に独立している可能性があるため、共有ライブラリを複製してストレージスペースを「無駄にする」ことができることです。
タスクの共有特性のために、例えばバイナリは、等ではなく(および適切なマニュアルページ)/usr/local
に直接インストールされると仮定します。/usr/local/bin
/usr/local/share/man/...
/usr/local/app/{bin,share/man,...}