Linuxにバイナリを配置する場所が非常に多いのはなぜですか?少なくとも次の5つがあります:
-
/bin/
-
/sbin/
-
/usr/bin/
-
/usr/local/bin/
-
/usr/local/sbin/
そして私のオフィスボックスでは、これらのいくつかへの書き込み権限がありません。
これらのどれにどのタイプのバイナリが入るかbin
s?
コメント
回答
-
/bin
(および/sbin
)は、大きな/
パーティションの前に小さなパーティションに配置する必要があるプログラムを対象としています。/usr
などのパーティションがマウントされました。最近では、/bin/sh
などの主要なプログラムの標準的な場所として機能しますが、元の意図はまだたとえば小さな組み込みデバイスへのインストール。 -
/sbin
は、/bin
とは異なります。/usr
をマウントする前に必要なシステム管理プログラム(通常は通常のユーザーは使用しません)用。 -
/usr/bin
はディストリビューション管理の通常のユーザープログラム用です。 -
ivと同じ関係を持つ
/usr/sbin
がありますid = “256ba3093b”>
as/sbin
は/bin
にする必要があります。
/usr/local/bin
は、配布パッケージマネージャーによって管理されていない通常のユーザープログラム用です。 ローカルでコンパイルされたパッケージ。将来のディストリビューションのアップグレードで警告なしに変更または削除される可能性があるため、/usr/bin
にインストールしないでください。
/usr/local/sbin
は、おそらくこの時点で推測できるように、/usr/local/bin
を/usr/sbin
から。
さらに、モノリシック非配布パッケージ用の/opt
もあります。それらが適切に統合される前に、さまざまなディストリビューションがGnomeとKDEをそこに配置しました。通常、Oracleなどの大規模で動作の悪いサードパーティパッケージ用に予約する必要があります。
コメント
- この回答は、明確にするのに非常に役立ちます。一般的な一連の規則ですが、Rob Landleyからのこの投稿は、ナンセンスについての洞察が必要な場合に非常に役立ちます… lists.busybox.net/pipermail/busybox/2010 -正規の現在の参照については、December / 074114.html
- refspecs.linuxfoundation.org/fhs.shtml 。 @kojiroによるリンクは古く、’新しい仕様はありません。
- インターネットからダウンロードしたビンはどこに置きますか?あなたの説明から、それは/ usr / local / binまたは/ usr / binにあるべきであるように聞こえます。 / usr / binは、手動で触れてはいけないものであり、パッケージマネージャーだけが操作できるようにしますか?
- @DidierA。
~/bin
に配置し、そのディレクトリをユーザーとしてPATHに追加します…メモをありがとうございます。非常に古いコメントを削除しました。 - ここで私の質問の最初の部分に答えてください: superuser.com/a/238993/425838 。優先順位は、システムの
PATH
変数の順序に基づいており、echo $PATH
は/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
を示しています。 、つまり、/usr/local/bin
の実行可能ファイルは/usr/bin
の実行可能ファイルよりも優先されます。。
回答
ファイルシステム階層のマニュアルページを参照することをお勧めします。
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
のマウント、またはシステム修復に不可欠ではないシステム管理用のプログラムバイナリが含まれています。 。
コメント
- これは’ユーザーの質問に答えない’。
- manページには、各binディレクトリのエントリが含まれており、内容が説明されています。質問の1つでした。
回答
ファイルシステム階層ウィキペディアのchyStandard エントリは、私がそれを持っていたときに同じ質問に答えるのに役立ちました。さらに、非常に説明的な表があります。
そのページからの抜粋 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日に取得。 パーマリンク。
回答
sbin
ディレクトリには、通常はシステム管理のみのプログラムが含まれています。通常のユーザー向けのプログラムは絶対に使用しないでください。
起動時にいくつかのプログラムが必要になり、最終的に/bin/
または/sbin/
。これらは、ファイルシステムをマウントする前に使用可能である必要があります。ファイルシステムのチェックとマウントに必要なmount
やfsck
などが存在する必要があります。
ほとんどのパッケージプログラムは最終的に/usr/bin/
と/usr/sbin/
になります。これらは、ルートファイルシステム以外のファイルシステム上にある可能性があります。場合によっては、ネットワークにマウントされたドライブ上にある可能性があります。
ローカルプログラムとスクリプトは/usr/local/bin/
と/usr/local/sbin/
に属します。 。これは、それらが明らかに非標準であり、おそらくサイトでのみ利用可能であることを示しています。
詳細については、コマンドman hier
を実行してみてください。このコマンドは、ディストリビューションに推奨されるファイルシステム階層の説明を提供します。 Wikipediaのファイルシステム階層についても読むことをお勧めします
コメント
- +1 topが少し多すぎる場合は、非常に簡潔な説明です。
- “ローカルプログラムとスクリプトは/ usr / local / bin /と/に属します。 usr / local / sbin / “-“のようなローカルプログラムを意味しますが、OSのすべての部分ではありませんが、インストールすることにしましたそれらを使用したい”?
回答
1970年代、UNIXではすべての公式実行可能ファイルが/bin
にあり、/usr/bin
はユーザーのホームディレクトリの下にありました(例:/usr/dmr
)これは、他のユーザーも興味を持っていた可能性のある独自のバイナリを保存するためにすべてのユーザーが利用できました。
このオープンの結果/usr/bin
は文書化されていないソフトウェアのジャンクヤードだったので、Stephen Bourne wro毎晩新しいバイナリをチェックし、ドキュメントがない、またはドキュメントも更新せずに更新されたすべてのバイナリを削除するcronスクリプトを使用します。
1970年代後半、/usr/bin
はOSベースのディストリビューションに統合され、人々は以前に開いた/usr/bin
の目的で/usr/local/bin
を使い始めました。 。
しばらくすると、sysadminは/usr/local/bin
を使用して、ネットワークからインポートされた非ローカルソフトウェアを保存しました(例: USENET)そしてUNIX企業は/usr/bin
と同じ過ちを繰り返すことを好まなかったため、1987年頃にファイルシステム階層会議があり、すべてのUNIX企業が
そして代わりに/opt/<vendor>/bin
を使用します。
残念ながら、Linuxディストリビューションはこの決定に従わなかった…
コメント
- 非常に興味深いものの、どれも
/opt
についてではなく、UNIXについてではなく、Linuxについての質問に答えようとさえします。これは、”車に4つの車輪があるのはなぜですか?”に”と答えるようなものです。 2!残念ながら、車は’ t。”ではありません。’はOPが理由を理解するのに役立ちません。車には4つあります。 - Linuxの背景とLinuxがUNIXを模倣するのが好きであるという事実の説明として与えられた説明を使用できない場合は、必要な背景が不足している可能性があります。
- 興味深いですが、私が混乱していることで、おそらく歴史的なものにすぎません。今日、ビンをオンラインでダウンロードすることと、会社のビンをダウンロードすることは、’それほど違いはありません。 Joe Blowがプログラムを作成してダウンロードした場合は、/ usr / local / binではなく/ opt / JowBlow / binに入れてみませんか。それは信頼できるプロバイダーと信頼できないプロバイダーの問題ですか? ‘私には意味がないようです。
- この’正確な
数年前の歴史。 a)AIXが/ usr / localを回避し、/ opt / IBMと/ opt / ibmを使用し、bullfreewareが/ opt / freewareを使用する理由と、(/ opt / * sbinだけでなく)別のパスを使用する必要があるのはなぜか疑問に思いました。 Linuxとの半関連性(より優れたGNUツール)に関しては、auto-toolsのデフォルトの–prefixは/ usr / localです。あまりにも悪いautotools(automake、autoconfなどは従いません…。しかし、私たちは皆生き残り、どこに配布するかを学びます。||ベンダーは彼らのプログラムを置きます。
- これらの会議のもう1つを開催できますか?今回は、みんな聞いてください!
/usr/sbin/
を忘れました。~/bin/
。/bin
は/usr/bin
と統合され、/sbin
は/usr/sbin
と統合されました– / usrマージの場合。/usr/local/bin
を使用するべきではありませんか?