
Linuxにバイナリを置くことができる場所がなぜそんなにたくさんあるのですか?少なくとも次の5つがあります。
/bin/
/sbin/
/usr/bin/
/usr/local/bin/
/usr/local/sbin/
私のオフィスボックスには、いくつかのアイテムへの書き込みアクセス権がありません。
次のいずれのバイナリタイプに属していますかbin
?
答え1
/bin
(および)は、大きくて同じパーティションをインストールする前に小さなパーティションに配置する必要があるプログラム/sbin
に適しています。もともとの意図は依然としてコンパクトな組み込みデバイスにインストールすることに関連しているかもしれませんが、今日ではWindowsなどの重要なプログラムの標準的な場所として主に使用されています。/
/usr
/bin/sh
/sbin
/bin
とは異なり、マウント前に必要なシステム管理プログラムです(通常、一般ユーザーは使用しません)。/usr
/usr/bin
流通管理に適した共通ユーザープログラムです。/usr/sbin
toと同じ関係を持つtoが存在します。/usr/bin
/sbin
/bin
/usr/local/bin
一般ユーザープログラムに最適いいえローカルにコンパイルされたパッケージなど、配布パッケージマネージャによって管理されます。/usr/bin
将来の展開のアップグレード中に警告なしに修正または削除される可能性があるため、インストールしないでください。/usr/local/sbin
今ごろ推測されたでしょうが、それは〜/usr/local/bin
です。/usr/sbin
/usr/bin
/opt
また、さまざまなディストリビューションで正しく統合される前にGnomeとKDEを配置しましたが、非ディストリビューションパッケージ全体のパッケージもあります。一般的に言えば、Oracleのように規模が大きくパフォーマンスの低いサードパーティ製パッケージ用にこの機能を予約する必要があります。
答え2
ファイルシステム層のマニュアルページを確認することをお勧めします。
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
このディレクトリには、ブートプロセス、インストール、またはシステムの回復には必要ありませんが、システム管理に使用されるプログラムバイナリが含まれています。
答え3
これファイルシステム階層標準Wikipediaのエントリは私が同じ質問に答えるのを助け、非常に説明的な表を持っています。
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.
1 2019年6月19日に検索しました。固有リンク。
答え4
1970年代、UNIXには、すべての公式の実行可能ファイルとユーザーのホームディレクトリ(たとえば)の下に他の人が興味を持っ/bin
ている可能性がある独自のバイナリを保存するために使用できる場所がありました。/usr/bin
/usr/dmr
これらの開示の結果/usr/bin
は文書化されていないソフトウェアのアリーナになったため、Stephen Bourneは毎晩新しいバイナリをチェックし、文書がないか更新されたが文書を更新しなかったバイナリを削除するcronスクリプトを作成しました。
1970年代後半に/usr/bin
オペレーティングシステムベースのディストリビューションに統合され、人々は/usr/local/bin
以前に公開された目的で使用を開始しました/usr/bin
。
しばらくすると、システム管理者は/usr/local/bin
ネットワークからインポートされた非基本ソフトウェア(USENETなど)を保存することに慣れ、UNIX会社は同じミスを繰り返すのが好きではなかったため、/usr/bin
1987年頃にファイルシステム階層会議が開かれました。 UNIX Corporationはこれを放棄し/usr/local/bin
、代わりに使用することに同意しました/opt/<vendor>/bin
。
残念ながら、Linuxディストリビューションはこの決定に従わなかった...