
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
ローカル階層にインストールされます。ローカル階層を手動で作成していない場合は$HOME
、make install
ソフトウェア パッケージに必要なディレクトリが作成されます。
にインストールしたら$HOME/bin
、$HOME/bin
を に追加する$PATH
か、絶対 を使ってバイナリを呼び出すことができます$PATH
。ディストリビューションによっては、$HOME/bin
にデフォルトで が含まれています。 と を実行して があるかどうかを確認するか、バイナリを に入れてを実行すること$PATH
で、これをテストできます。 が返された場合は、 はデフォルトで にあります。echo $PATH
$HOME/bin
$HOME/bin
which binaryname
$HOME/bin/binaryname
$PATH
答え2
として言及された、/usr/local
は、基本的にシステム管理者によってインストールされたソフトウェアのプレフィックスとして意図されており、/usr
ディストリビューションのパッケージからインストールされたソフトウェアに使用する必要があります。
この背後にある考え方は、分散ソフトウェア (およびパッケージなど) との衝突を回避しrpm
、deb
管理者に「ローカル」プレフィックスを完全に制御できるようにすることです。
つまり、管理者は 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/bin
fromウィキテック:
/usr/bin
一般ユーザーが使用する OS 提供の実行可能ファイルの場所です。たとえば、通常はコア オペレーティング システムに必要なファイルではなく、ルート ユーザーがアクセスするファイルです。
/usr/local/bin
すべてのユーザーが共通のシステム ファイルとして使用するためにシステムに追加するすべてのアドオン実行可能ファイルの場所ですが、OS でサポートされている公式ファイルではありません。
全体的に、/usr/bin
は OS によって提供されるバイナリが保存される場所です。/usr/local/bin
はユーザーがバイナリをダウンロードする場所です。