web-dev-qa-db-ja.com

/ usr / libexecの目的は何ですか?

実行可能ファイルは、Unixライクなシステムでは_/usr/libexec_に格納されます。 FHSによると(セクション4.7. /usr/libexec : Binaries run by other programs (optional)"

_/usr/libexec_には、ユーザーまたはシェルスクリプトによって直接実行されることを目的としていない内部バイナリが含まれています。アプリケーションは、_/usr/libexec_の下の単一のサブディレクトリを使用できます。

Mac OS Xでは、_rootless-init_ブート直後にlaunchdによって呼び出されるプログラムが_/usr/libexec_に格納されます。 _/usr/libexec_または_/usr/bin_に格納できるスタンドアロンの実行可能ファイルであるのに、なぜ_/usr/sbin_に格納されるのですか? initおよびシェルスクリプトから直接呼び出されない他のプログラムも_[/usr]/{bin,sbin}_のようなフォルダーに保存されます。

31
Melab

これはサポート性の問題です。プラットフォームプロバイダーは長年の経験から、デフォルトでPATHにバイナリを配置すると、人々来ることを学びましたそれらがそこにあることに依存し、willがそれらがサポートする特定の引数とオプションに依存するようになります。

対照的に、何かが/usr/libexec/これは、内部実装の詳細と見なされていることを明確に示しており、エンドユーザーとして直接呼び出すことは正式にはサポートされていません。

とにかく、これらのバイナリに直接アクセスすることもできますが、将来のアップグレードで使用しているプラ​​イベートインターフェイスが壊れた場合でも、プラットフォームプロバイダーからサポートや同情を得ることはできません。

16
ncoghlan

私はそれがinitより新しいと思います-その考えは、それが言ったように、実行可能ファイルを持っていることです(したがって、それらは/usr/lib)誰かの中にあるとは決して期待しないであろう$PATH

7

OS XはFHS標準に準拠していません。独自のファイルシステム階層があります(FreeBSDファイルシステム階層と同様)。マニュアルページhier

libexec/ system daemons & system utilities (executed by other programs)

4
fd0

libexecは、他のプログラムによって実行されるシステムデーモンおよびシステムユーティリティ用です。つまり、この名前空間のディレクトリに置かれたバイナリは、他のプログラムで使用するためのものであり、ユーザーが直接実行することを意図したものではありません。

4
TheExorcist