FHSより

FHSより

Perforce バージョン管理クライアント ( ) の実行可能ファイルがあります。ルート権限がないため、p4に配置することができません。 の下に配置する必要がある標準的な場所はありますか?/opt/local$HOME

ファイル システム階層には、ローカル実行可能ファイル/バイナリを配置する必要があるという規則がありますか$HOME/bin?

そのような慣習については、FHS に関する Wikipedia の記事

また、実際に規則がある場合、ディレクトリへのパス$HOME/binやディレクトリの場所を明示的に含める必要がありますかbin?

答え1

一般に、システム以外でインストールおよび保守されるバイナリをシステム全体で複数のユーザーがアクセスできるようにする必要がある場合、管理者は に配置する必要があります。 の下には、ローカルでコンパイルおよびインストールされたソフトウェア パッケージに一般的に使用される/usr/local/bin完全な階層があります。/usr/local

バイナリの唯一のユーザーである場合、$HOME/binまたは$HOME/.local/binは、自分でインストールでき、唯一の消費者となるため、適切な場所です。ソースからソフトウェア パッケージをコンパイルする場合は、$HOMEまたは$HOME/.localディレクトリに部分的または完全なローカル階層を作成するのも適切です。 を使用すると$HOME、完全なローカル階層は次のようになります。

  • $HOME/bin ローカルバイナリ
  • $HOME/etc ローカルバイナリのホスト固有のシステム構成
  • $HOME/gamesローカルゲームバイナリ
  • $HOME/include ローカル C ヘッダー ファイル
  • $HOME/lib 地元の図書館
  • $HOME/lib64ローカル 64 ビット ライブラリ
  • $HOME/man ローカルオンラインマニュアル
  • $HOME/sbin ローカルシステムバイナリ
  • $HOME/shareローカルアーキテクチャに依存しない階層
  • $HOME/src ローカルソースコード

を実行するときは、インストールのデフォルトのプレフィックスとして をconfigure指定して、インストールのローカル階層を定義する必要があります。$HOME

./configure --prefix=$HOME

を実行するとmake && make install、コンパイルされたバイナリ、パッケージ、マニュアル ページ、ライブラリが$HOMEローカル階層にインストールされます。ローカル階層を手動で作成していない場合は$HOMEmake installソフトウェア パッケージに必要なディレクトリが作成されます。

にインストールしたら$HOME/bin$HOME/binを に追加する$PATHか、絶対 を使ってバイナリを呼び出すことができます$PATH。ディストリビューションによっては、$HOME/binにデフォルトで が含まれています。 と を実行して があるかどうかを確認するか、バイナリを に入れてを実行すること$PATHで、これをテストできます。 が返された場合は、 はデフォルトで にあります。echo $PATH$HOME/bin$HOME/binwhich binaryname$HOME/bin/binaryname$PATH

答え2

として言及された/usr/localは、基本的にシステム管理者によってインストールされたソフトウェアのプレフィックスとして意図されており、/usrディストリビューションのパッケージからインストールされたソフトウェアに使用する必要があります。

この背後にある考え方は、分散ソフトウェア (およびパッケージなど) との衝突を回避しrpmdeb管理者に「ローカル」プレフィックスを完全に制御できるようにすることです。

つまり、管理者は Debian などのディストリビューションを使用しながら、カスタムコンパイルされたソフトウェアをインストールできます。

FHSより

/ または /usr に配置されたソフトウェアは、システムのアップグレードによって上書きされる可能性があります (ただし、このような状況ではディストリビューションで /etc のデータを上書きしないことをお勧めします)。このため、正当な理由がない限り、ローカル ソフトウェアを /usr/local の外部に配置してはなりません。

ユーザー固有のソフトウェアをインストールする場合、ユーサーは示唆する$HOMEプレフィックスとして を使用すると、書き込み権限が確保されます。個人的には、 を使用する$HOME/.local方が、(うまくいけば) 整頓されたホーム ディレクトリが乱雑になることがないので、よりエレガントなソリューションだと感じています。

$HOME/.local/share$HOME/.local/binすでに使用されているfreedesktop.org XDG ベースディレクトリ仕様$HOME/.local/bin、および配布はに追加するように要求されるため、ついでに など$PATHを作成することを想像するのにそれほど時間はかかりません。$HOME/.local/lib

プレフィックスを隠しディレクトリにしたくない場合は、次のようにシンボリック リンクを簡単に作成することもできます。

ln -s .local ~/local

サイドノート

.config(not .local/etc)は、$XDG_CONFIG_HOMEユーザー固有の設定ファイルに使用されます。また、残念ながら、ソフトウェアの大部分は XDG を無視し、任意の場所 (通常は のルート$HOME) に設定ファイルを作成することにも注意してください。また、$XDG_CONFIG_HOMEデフォルトが必要な場合は を設定解除できることに注意してください$HOME/.config

奇妙なことに、ディストリビューションのデフォルトの設定ファイル用に予約されたディレクトリは存在しないため、その中のファイルが/etcディストリビューションによって提供されたのか、システム管理者によって編集されたのかを知る方法はありません。

答え3

XDG ベースディレクトリ仕様バージョン0.8では、ローカル実行ファイルはローカル:

ユーザー固有の実行可能ファイルは、$HOME/.local/bin に保存される場合があります。ディストリビューションでは、このディレクトリが UNIX $PATH 環境変数の適切な場所に表示されるようにする必要があります。

あなたのディストリビューションが仕様に従っているなら、「パスを明示的に含める」必要はないはずです。前の質問どのディストリビューションがこれを実行するかを確認しようとします。

答え4

による/usr/local/binと、インターネットウェブサイトWikitechy

/usr/binからの情報ファイルシステム階層標準、フォルダーをシステム上の実行可能コマンドのプライマリ ディレクトリとして定義します。

追加情報 between/usr/bin/usr/local/binfromウィキテック:

  /usr/bin一般ユーザーが使用する OS 提供の実行可能ファイルの場所です。たとえば、通常はコア オペレーティング システムに必要なファイルではなく、ルート ユーザーがアクセスするファイルです。

  /usr/local/binすべてのユーザーが共通のシステム ファイルとして使用するためにシステムに追加するすべてのアドオン実行可能ファイルの場所ですが、OS でサポートされている公式ファイルではありません。

   全体的に、/usr/binは OS によって提供されるバイナリが保存される場所です。/usr/local/binはユーザーがバイナリをダウンロードする場所です。

関連情報