/usr/local/binとは何ですか?

/usr/local/binとは何ですか?

今日以前は、端末を使用してディレクトリの内外に移動し、コマンドを使用してファイルの日付を変更しましたtouch。私のMacに興味深いスクリプトをインストールし、chmod 755そのファイルを使用して実行可能にした後、端末のすべての機能を実現しました。

しかし、私は/usr/local/binそれが何であるか疑問に思います。/usr/私はそれがコンピュータユーザーであると仮定します。しかし、なぜ/local/そこにいるのかよくわかりません。当然Local Computerの略なのですが、コンピュータ(あるいはサーバ)にあるので必ず必要なのでしょうか?/usr/binいいじゃないですか?

それは何ですか/bin?この領域が通常端末にスクリプトをインストールするために使用されるのはなぜですか?

答え1

/usr/local/bin一般ユーザーが実行できるプログラムに適しています。

  • この/usr/local階層は、システム管理者がソフトウェアをローカルにインストールするときに使用されます。
  • システムソフトウェアが更新されたら上書きしないでください。
  • ホストグループ間で共有できるプログラムやデータに使用できますが/usr
  • /usr/localローカルにインストールされているソフトウェアは、ソフトウェアを交換またはアップグレードするためにインストールしない限り、/usrではなく/usrに配置する必要があります/usr

このソースは説明に役立ちます。ファイルシステム階層標準より深いレベルで。

あなたは見つけることができます使用と乱用に関するこの記事/usr/local/binまた、非常に興味深いです。

答え2

/usr/、コンピュータユーザーだとします。

閉鎖。

Unixはもともとマルチユーザーオペレーティングシステムだったので、「ユーザー」ではなく「ユーザー、"複数型。

AT&T Unixの移行システムVバージョン4(SVR4)は1988年にリリースされ、ユーザー管理ツールはデフォルトで既存の場所/homeであるユーザーホームディレクトリを作成しました/usr。 ¹あなたの$HOMEディレクトリは/usr/jfw次の場所にあります。システム3ボックス。

/usr/usr/bin経験によれば、/usr/libホームディレクトリを分離するのは良いシステム管理方法であるため、/homeSVR4のポリシーの変更により、現在私たちが属していると考えているすべての項目はそのまま残ります/usr

/usrこの名前を維持する理由はまだあります。これは、通常の対話型使用をサポートするのに十分なほど、システムが起動するまで使用する必要のないファイルが残っているためです。つまり、残っているのはユーザー- オペレーティングシステムの主要部分。これは/usrそれが別の物理ボリュームにある可能性があることを意味し、当時は良いことでした。92MB洗濯機サイズのハードドライブ

初期のUnixシステムは、何らかの理由で/usrボリュームをマウントできなかった場合でも、シングルユーザーモードで起動できるようにコアオペレーティングシステムファイルを慎重に保存しました。/usrルートボリュームには、/usrボリュームをオンラインに戻すのに十分なツールが含まれています。

一部のUnixバージョンでは、小さな組み込みシステムでも既存のルートボリュームファイルを収容するのに十分なスペースがあるため、この古いデザイン原則を無視しています。そしてこれらすべてが/usr一つのロールにあります。 ³Red Hat Enterprise Linux、Solaris、およびCygwinシンボリックリンクを使用して、/binこれらのディレクトリ間に違いがなくなります。/usr/bin/lib/usr/lib

.../local/...はっきりとローカルコンピュータを表します...

はい。これは、/usr/local以下のファイルが対応する単一のシステムにのみ適用される必要があることを示しています。共通ファイルは他の場所に保存する必要があります。

これはまた、Unixシステムがすべて標準化されてから数十年前に一般的に使用されていた方法に由来します。同様に、当時のハードドライブはかさばり、価格が非常に高く、今日の標準と比較してストレージスペースがほとんどありませんでした。コストとディスク容量を節約するために、Unixシステムでいっぱいのコンピュータルームでは、ほとんど/usrのコンテンツをNFSや他のネットワークファイル共有プロトコルで共有するため、各システムに独自の冗長コピーは必要ありません。 ⁴単一システム固有のファイルボックスは下に配置され、/usr/local別々のボリュームになります/usr

これらの歴史的遺産のため、手動で/usr/localインストールすると、ほとんどのサードパーティのUnixソフトウェアがまだデフォルトのインストールとして使用されます。ほとんどのこれらのソフトウェアでは、パッケージを他の場所にインストールできますが、選択しないと、より具体的な目的を持つ他の一般的なインストール場所を妨げない安全なデフォルト値が得られます。

ソフトウェアを他の場所にインストールするには、その理由があります。 AppleのmacOSチームは、ビルドbash時にこれを行います。GNU Bashのソースコード。 Bashは//usr/local/bin

もう1つの例は、以前のLinuxシステムがGUIソフトウェアを分離し、/usr/X11R6既存のコマンドラインとは別に保ったことです。cursesソフトウェアに基づいています。 .⁵/usr/localでデフォルトのプレフィックスをオーバーライドするだけ/usr/X11R6です。

/ binとは何ですか?

「バイナリ」の略語ですが、この場合は「プレーンテキストではないファイル」を意味します。このファイルのほとんどは実行可能ファイルUnixシステムでは、2つの用語が一部の集団では同義語になりました。 (「フレッドさん、私のためにRHEL 7バイナリを作ってください」)

/etcUnix システムのテキストファイルは、などの/usr/include他の場所にあります。/usr/share

昔はシェルスクリプト(通常のテキストファイル)もディレクトリの外binに保存されていましたが、この境界線はぼやけていました。今日のbinディレクトリには、厳密に「バイナリ」であるかどうかにかかわらず、通常はあらゆる種類の実行可能ファイルが含まれています。 ⁶


脚注と余談:

  1. SVR4以前のユーザー管理ツールのプリミティブな性質は、このHOME=/usr/$NAMEスキームがソフトウェアツールによってデフォルトに適用されず、慣例でのみ文書化されていることを意味します。

    この内容は4〜8ページで確認できます。AT&T Unix System V バージョン 3.2 システム管理者ガイド/usr/$NAME:ここでは、AT&TがSVR4より前の最後の主要なUnixバージョンで以前の方法を推奨していることがわかります。

    以前のUnixシステムでは、システム管理者が自分に適した他のソリューションを選択することは非常に一般的でした。人は人なので、さまざまな解決策が発明されています。

    /home/$NAME標準になる前に私が遭遇した一つの計画は/u/$NAME

    私が使用する別のシステム1990年代初頭にはユーザーが多すぎてすべてのホームディレクトリを1つの物理ボリュームに入れることができなかったため、などの方式を使用したことを覚えてい/u1/$NAMEます/u2/$NAME。ホームディレクトリがどのディスクに配置されるかは、アカウントを作成するときにどのディスクにスペースがあるかによって異なります。

  2. 起動中にmacOSボックスを長押しすると、シングルユーザーモードで起動できますCmd-S。画面が黒くなると、手を離すと薄い灰色のテキストが表示されます。これは端末で実行しているのと同じですが、GUIがまだ起動していないため、フルスクリーンを占めます。

    気をつけて、あなたはroot...

    シングルユーザーモードを終了してマルチユーザーGUIモードで起動し続けるには、シングルユーザールートプロンプトに「exit」と入力します。

  3. Unixy オペレーティングシステムはまだ現れる/usr実際、最近では重要なシングルユーザーモードファイルを除いては効果がありません。一度は/usr、ZFSボリュームに移動してFreeBSD 9システムを起動できないようにしたことがあります。 FreeBSD 10まではZFS-on-root機能が存在しなかったことを忘れてキャッチ22:オペレーティングシステム/usrをインストールするにはファイルが必要です/usr

    これは十分に悪いですが、/usrFreeBSD 9がまだシングルユーザーブート機能を維持していた場合は、それを修正できました。シングルユーザーモードで起動もインストールもできない/usrため、どのような方法でも伝統に違反していることは明らかです。システムを復元するには、回復CDから起動する必要がありました。

  4. これも私たちが得るものです/usr/share。これは、異なるプロセッサタイプを使用するUnixシステム間で共有できる(たとえば、NFS経由で)ファイルを分離します。通常、テキストファイル:マニュアルページ、辞書など

  5. 「X11R6」はこのバージョンを表します。Xウィンドウシステムこのルールが普及したとき、Linux GUIの基礎を提供しました。 X11R6 が Linux システムに置き換えられると、Linux システムは通常 GUI ソフトウェアの分離を停止します。X組織

  6. 元のUnixシステム/etc/bin

答え3

/usr/local/bin最新のMacオペレーティングシステム(BSDベース)のUNIXに似たルートを示しています。

  • 「usr」はUNIXシステムリソースを表します。これにはシステムプログラムとライブラリが保存されます。
  • 「ローカル」とは、標準のディストリビューションには付属しておらず、通常サイトごとにコンパイルおよび保守されるリソースを意味します。
  • 「bin」は、バイナリコンパイルされた実行可能ファイルを表します。

これは、UNIXがLinuxおよびBSDとして最初に実装されてから変更されましたが、ルールはそのまま残ります。これで、/usr/bin「基本」またはコアプログラムとライブラリに使用され、アドインおよび/usr/local/bin重要でないプログラムとライブラリに使用されます。

答え4

/usr/local/bin実行可能ファイル、特にオープンソースファイルの最も人気のあるデフォルトの場所です。

/usrただし、これは90年代初頭にUnixシステムのオペレーティングシステムに属するファイル階層を含めるように標準化されているため、そのオペレーティングシステムを使用する複数のシステムで共有される可能性があるため、これは間違った選択かもしれません。

これらのファイルは静的であるため、/usrファイルシステムを読み取り専用でマウントできます。/usr/localこの標準は基本的に設計されているので非共有であるため、基本的なコンパイルを可能にするために読み書きが必要であり、オペレーティングシステムの一部ではないため無効になっています。/opt/local似たようなものを選ばなかったのは残念です...

関連情報