web-dev-qa-db-ja.com

Linuxの/ usr / binと/ usr / local / bin

Linuxにバイナリを配置する場所がそれほど多くあるのはなぜですか?少なくとも次の5つがあります。

  1. /bin/
  2. /sbin/
  3. /usr/bin/
  4. /usr/local/bin/
  5. /usr/local/sbin/

私のオフィスボックスでは、これらの一部に対する書き込み権限がありません。

これらのbinsには、どのタイプのバイナリが入りますか?

487
Lazer
  1. /bin(および/sbin)は、大きな/などのパーティションをマウントする前に、小さな/usrパーティションに置く必要があるプログラムを対象としています。最近では、主に/bin/shなどの主要なプログラムの標準の場所として機能していますが、元の意図はまだ関連している可能性があります。小さな組み込みデバイスへのインストール。

  2. /sbinは、/binとは異なり、/usrがマウントされる前に必要なシステム管理プログラム(通常は使用されません)向けです。

  3. /usr/binは、ディストリビューション管理の通常のユーザープログラム用です。

  4. /usr/sbinは、/usr/bin/sbinと同じように/binと同じ関係にあります。

  5. /usr/local/binは通常のユーザープログラム用ですnot配布パッケージマネージャーによって管理されます。ローカルでコンパイルされたパッケージ。これらを/usr/binにインストールしないでください。将来のディストリビューションアップグレードにより、警告なしに変更または削除される可能性があります。

  6. この時点でおそらく推測できるように、/usr/local/sbin/usr/local/bin/usr/sbinから/usr/binに変換したものです。

さらに、モノリシックな非配布パッケージ用の/optもありますが、適切に統合される前に、さまざまな配布がGnomeとKDEを配置しました。一般的には、Oracleなどの動作が不十分なサードパーティのパッケージ用に予約する必要があります。

600
geekosaur

ファイルシステム階層のマニュアルページを確認することをお勧めします。

man hier

これはオンラインでも利用できます。例: http://linux.die.net/man/7/hier 。関連する部分を以下にコピーしました。システムによっては、別のことを言うかもしれません。

名前

    hier-ファイルシステム階層の説明

説明

    典型的なLinuxシステムには、特に次のディレクトリがあります。

    /bin
      このディレクトリには、シングルユーザーモードでシステムを起動または修復するために必要な実行可能プログラムが含まれています。
    /sbin
      /binと同様に、このディレクトリにはシステムを起動するために必要なコマンドが含まれていますが、通常は通常のユーザーによって実行されません。
    /usr/bin
      これは、実行可能プログラムのプライマリディレクトリです。ブートやシステムの修復に必要のない、ローカルにインストールされていない通常のユーザーが実行するほとんどのプログラムは、このディレクトリに配置する必要があります。
    /usr/local/bin
      サイトにローカルなプログラムのバイナリ。
    /usr/local/sbin
      システム管理用にローカルにインストールされたプログラム。
    /usr/sbin
      このディレクトリには、ブートプロセス、/usrのマウント、またはシステムの修復に必須ではないシステム管理用のプログラムバイナリが含まれています。
69
davitenio

Wikipediaの Filesystem Hierarchy Standard エントリは、私が持っていたときと同じ質問に答えるのに役立ち、それに非常に説明的な表があります。

そのページからの抜粋1

/bin        Essential command binaries that need to be available in single user mode; for all users, e.g., cat, ls, cp.
/usr/bin    Non-essential command binaries (not needed in single user mode); for all users.
/usr/local  Tertiary hierarchy for local data, specific to this Host. Typically has further subdirectories, e.g., bin, lib, share
/usr/sbin   Non-essential system binaries, e.g., daemons for various network-services.
/sbin       Essential system binaries, e.g., fsck, init, route.

12019年6月19日に取得。 パーマリンク

36
Humphrey Bogart

sbinディレクトリには、通常システム管理のみを行うプログラムが含まれています。一般ユーザー向けのプログラムは絶対に使用しないでください。

起動時にいくつかのプログラムが必要で、最終的には/bin/または/sbin/になります。これらは、ファイルシステムがマウントされる前に使用可能でなければなりません。ファイルシステムのチェックとマウントに必要なmountfsckのようなものが存在する必要があります。

ほとんどのパッケージプログラムは、最終的に/usr/bin/および/usr/sbin/になります。これらは、ルートファイルシステム以外のファイルシステムにある場合があります。場合によっては、ネットワークにマウントされたドライブ上にある可能性があります。

ローカルプログラムとスクリプトは/usr/local/bin//usr/local/sbin/に属しています。これにより、それらは明らかに非標準であり、おそらくサイトでのみ入手可能であることがわかります。

詳細については、コマンドman hierを実行してみてください。これにより、ディストリビューションに推奨されるファイルシステム階層の説明が提供されます。また、Wikipediaで File System Hierarchy について読むこともできます。

17
BillThor

1970年代、UNIX/binにすべての公式の実行可能ファイルがあり、/usr/binはユーザーのホームディレクトリ(例:/usr/dmr)の下の場所で、どのユーザーも保存できました。他の人にとっても興味があったかもしれない独自のバイナリ。

このオープン/usr/binの結果は、文書化されていないソフトウェアのジャンクヤードでした。そのため、Stephen Bourneは、毎晩新しいバイナリをチェックし、ドキュメントがないか、またはそのバイナリを削除するcron scriptを作成しました。ドキュメントも更新せずに更新されました。

1970年代後半、/usr/binがOSベースのディストリビューションに統合され、以前のオープン/usr/local/binの目的で/usr/binを使用するようになりました。

しばらくして、システム管理者は/usr/local/binを使用して、ネットワーク(USENETなど)からインポートされたnon-localソフトウェアを格納しました。また、UNIX企業は、/usr/binと同じ間違いを繰り返すのを嫌がっていました。 、1987年頃にファイルシステム階層会議があり、すべてのUNIX企業が/usr/local/binをあきらめ、代わりに/opt/<vendor>/binを使用することに同意しました。

残念ながら、Linuxディストリビューションはこの決定に従わなかった...

11
schily