web-dev-qa-db-ja.com

ローカル実行ファイルはどこに配置する必要がありますか?

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

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

WikipediaのFHSに関する記事 で言及されているような規則は見つかりませんでした。

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

72
user640378

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

あなたがバイナリの唯一のユーザーである場合は、$HOME/binにインストールするのが適切な場所です。自分でインストールでき、あなただけが消費者になるからです。ソースからソフトウェアパッケージをコンパイルする場合は、$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にあります。

75
George M

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

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

これは、debianのようなディストリビューションを使用しながら、管理者がカスタムコンパイルソフトウェアをインストールできることを意味します。

FHSから

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

ユーザー固有のソフトウェアをインストールする場合、 さらに$HOMEを接頭辞として使用することを提案します 。これにより、書き込み権限があることが保証されます。個人的には、$HOME/.localを使用すると、よりエレガントなソリューションになると思います。

$HOME/.local/shareは、 freedesktop.org XDGベースディレクトリ仕様 ですでに使用されているため、$HOME/.local/bin$PATHに追加して、 $HOME/.local/libなど。

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

ln -s .local ~/local

サイドノート

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

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

30
MattSturgeon