Linuxのバイナリファイルを含むディレクトリ

Linuxのバイナリファイルを含むディレクトリ

新しいアプリケーションをインストールすると、生成されたバイナリを配置できるディレクトリが複数あることがわかりました。

パッケージングマネージャを使用してインストールし、Pythonmakeなどをeasy_install使用してコンパイルできます。

私の$PATH外観は次のとおりです。

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

生成されたバイナリ(またはライブラリ)をどのディレクトリに配置する必要があるかを決定するいくつかの規則または規則はありますか?

ソースコードをコンパイルするときの結果は通常/usr/local/bin/

バイナリに関してUnix哲学(デザインとルールの決定)を説明する答えを書くことはできますか?これが起こる理由は何ですか(すべてのバイナリに1つのディレクトリを使用しないのはなぜですか?)

答え1

厳格で高速なルールはありませんが、各展開には独自のロジックがあります。通常/bin、システムバイナリ、/usr/bin展開に付属の基本アプリケーション、および/usr/local/bin一般展開の外部にインストールされたコンテンツに使用されます。X11X11バイナリ用を追加できますが、/usr/X11/binこれは/usr/local/X11/bin非常に一般的です。一部のソフトウェアもインストールされます/opt

これ記事の内容の詳細な説明です/。そしてもちろん、ウィキペディアページがあります。

答え2

また@サルダトリオン答えは、sbinディレクトリが通常、さまざまなシステム管理ツール、低レベルのシステムアプリケーション、およびさまざまなシステムデーモンのバイナリファイルを保存するために使用されることです。

たとえば、sでは(カーネルが内部初期化を完了した後の起動プロセスの制御)、(ハードディスクの動作パラメータの読み取りと設定)、(デーモンの印刷)、(ハードディスクからのSMARTデータの読み込み)などがありsbinます。に。/sbin/init/sbin/hdparm/usr/sbin/cupsd/usr/sbin/smartctl

一般ルールも/usrパッケージ管理者によって管理され、/usr/localユーザーまたはシステム管理者によって管理されます(両方が異なる場合)。これについての歴史的先例があります。ディスク容量が高いと、/ usrはネットワーク経由で読み取り専用でマウントでき、システムが直接ネットワーク起動をサポートしていなくても、多くのワークステーションで共有できます。これにより、各ワークステーションは、比較的小さい独自の/usr/localと(比較的軽い)ルートファイルシステム(/)を持つことができます。 /usrと/usr/localの違いは、ソースからビルドするときにほとんどのパッケージがデフォルトで/usr/localにインストールされる理由である可能性があります。

答え3

これファイルシステム階層標準指定するLinuxディストリビューションがファイルを配置する場所

binディレクトリにはすべてのユーザーが使用できる実行可能ファイルが含まれ、ディレクトリにはsbinシステム管理者のみが使用できる実行可能ファイルが含まれています。sbinディレクトリは通常ルートの$PATH

/bin(および/sbin)は別々のパーティションにインストールできるため、起動プロセスの初期に必要なプログラムが含まれています/usr(最近はまれですが)。

/usr/bin(および/usr/sbin)には、ディストリビューションに付属しているが/bin含まれていないプログラムが含まれています/sbin。一般的なシステムでは、ほとんどの実行可能ファイルは/usr/bin

階層/usr/localは管理者のドメインです。ディレクトリは/lib通常/bin配布用に予約されており、通常はシステムパッケージマネージャが提供するファイルのみが含まれています/sbin。 (特におよび)はパッケージマネージャの影響を受けないため、ローカル管理者は手動でインストールされた実行可能ファイルをここに配置できます。/usr/usr/local/usr/local/bin/usr/local/sbin

/usr/gamesディストリビューションで提供され、純粋に娯楽目的と見なされる実行可能ファイルを含めることができます。これは概して歴史の遺物です(長い間、一日の特定の時間/usr/gamesにアクセスが禁止されている可能性がありますが、とにかく簡単に修正できるこれらの慣行は消えました)。

Linuxシステムの他の一般的な実行可能な場所は次のとおりです。

  • /usr/X11R6/binまたは/usr/bin/X11Xプログラムの場合。 Xプログラムと非Xプログラムを分離する慣行は徐々に消えています。今彼らは皆に住んでいます/usr/bin
  • /usr/bin/mh実行ファイルの場合MH Eメールクライアント、MHユーザーのみが使用する単一目的のシェルコマンド(showメッセージ表示、forw電子メール転送...)を使用して電子メールを操作します。/usr/bin/mh$PATH
  • /opt/bin存在する場合は、インストールされているアプリケーションへのシンボリックリンクが含まれます/opt

Linuxの規則は、ほとんどのUNIXシステムが従う一般的なガイドラインに触発されましたが、各UNIXのバリエーションには独自の特徴があります。たとえば、

  • * BSDにはデプロイの中心/のみが含まれています。つまり、デプロイメント・マネージャーが直接保守する基本サービスとアプリケーションです。/usr第三者プログラム(「パッケージ」または「ポート」)は、/usr/localパッケージマネージャによって管理されていてもインストールされます。システム管理者が提供するプログラムに対して普遍的に許可されている別の場所はありません。
  • 一部のUNIXシステムにはディレクトリがなく、これは/binシンボリックリンクです。/sbin/usr/bin
  • 一部のシステムでは、オプションのパッケージを含む追加のディレクトリがそれぞれ独自のbinディレクトリにある場合があります$PATH
  • $PATH一部のシステムには、実行環境の互換性が必要なターゲット(たとえば/usr/bin/posix、POSIX / Single Unixとの互換性、または従来の/usr/xpg4/binBSDシステムとの互換性)に応じて配置することも、配置しない可能性がある追加のディレクトリもあります。/usr/xpg6/bin/usr/ucb

関連情報