ソフトウェアベンダーはLinuxファイルシステム階層標準(FHS)互換性のある Debian パッケージ。バイナリにはどのインストールディレクトリを使用する必要がありますか?
システムのアップグレードに含まれるソフトウェア、または/bin
システム/usr/bin
のアップグレードに含めることができるソフトウェア。このディレクトリにバイナリをインストールできますか?または、このディレクトリはデフォルトのシステムディストリビュータ用に予約されていますか?
/usr/local/bin
システム管理者インストール用のソフトウェアです。以下の内容はすべて、/usr/local
システムのアップグレードにより変更してはいけません。ベンダーから提供された Debian パッケージをパッケージリポジトリからダウンロードし、リポジトリがapt-add-repository
.
/opt/<vendor>/bin
大丈夫そうです。しかし、他のベンダーとの競合を避けるために、このディレクトリをどこかに登録する必要はありませんか?そして、このディレクトリが$PATH
機能するようにFHS準拠の方法で統合するにはどうすればよいですか?
答え1
相談しようDebian メソッドの概要/選択:
/opt/ 追加のアプリケーションパッケージのプリコンパイル済み「.deb」ではなく、バイナリディストリビューション(tar'ed..)がここにあります。
/opt/bin/ : 最上位階層と同じ
/opt/include/ : 最上位階層と同じ
/opt/lib/ : 最上位階層と同じ
/opt/sbin/ : 最上位階層と同じ
/opt/share/ : 最上位階層と同じ
.deb
実際、私はまた、アプリケーションがそこにパッケージをインストールするのを見ました。理想的には、/bin
特に次のように定義されるため、/usr/bin
保存する必要があります。/bin
すべてのユーザーのためのデフォルトのコマンド実行可能ファイル(バイナリ)(例:cat、ls、cp)(特にシステムの起動または回復に必要なファイル)
実際、 /usr/bin
DebianベースのシステムにサードパーティのDebianパッケージがインストールされていることがよくあります。これは/usr/bin
通常変数の一部PATH
なので、コマンドラインから簡単に起動できるためです。 「/binまたは/usr/binにあるソフトウェアは、システムアップグレードで上書きされる可能性があります」と言われました。アップグレードの目的は、ファイルから特定のファイルを削除することであるため、上書きできますが、/usr/bin
一部の.deb
パッケージが明示的にファイルの削除を指定しない限り(たとえば、以前のバージョンのドッキングステーションを削除した小さなパッケージが見つかりました)。ソフトウェアが特定のバイナリに依存している場合、アップグレードは危険です。バージョン表示されます/usr/bin
。
私が見たもう一つの一般的なものはシンボリックリンクです。入力は/usr/bin
他の場所へのシンボリックリンクです。$PATH
あなたの質問で述べたように、これはバイナリを統合する実行可能なオプションかもしれません。さらに、これはDebianの方針とも一致しています。FHSに関する包装パンフレット状態:
4.4。 /usr/bin: ほとんどのユーザーコマンド
4.4.1.目的
これはシステムで実行可能なコマンドのホームディレクトリです
。4.4.2.要件
/usr/bin にはサブディレクトリはありません。
したがって、アプリケーションにサブディレクトリ(サブモジュールディレクトリがあるPythonモジュールなど)が必要な場合は、アプリケーションを別の場所に配置するのが最善です(Pythonならつまり、/usr/lib/python*/dist-packages
ディレクトリ)とサブディレクトリを作成し、シンボリックリンクを作成します。/usr/bin/my_binary
$PATH
一部のベンダーから見た別の統合は、ユーザーの$PATH
変数を編集することによって~/.bashrc
。
「しかし、他のプロバイダとの競合を避けるために、このディレクトリをどこかに登録する必要はありませんか?上記のDebianドキュメントにはディレクトリの登録について何も記載されていないので、答えは次のようになります。そうする必要はありません。しかし、衝突を本当に避けたい場合は、パターンに従うことができます/opt/vendor/package-v-1.2/bin
。つまり、パッケージとリリースバージョンを指定します(おそらく1年)。
答え2
/usr/local
installと同様に、ディレクトリ階層にソフトウェアをインストールできます/usr
。 「システム管理者によるインストール」は、単に管理者(またはシングルユーザーデスクトップシステムの場合)がシステムのパッケージ管理を使用せずに直接インストールすることを決定したことを意味します。ファイルが見つかると($PATH
ライブラリの検索だけでなく検索にも適用されます)、/usr/local
優先順位が与えられます/usr
。
使用例については、GNU Autotools、CMake、Mesonなどの一部のビルドシステムのデフォルト設定を参照してください。これらはすべてデフォルトでインストールされていますが、/usr/local
オペレーティングシステムの発行者がそれを使用するように設定する必要があります/usr
。管理者は何も変更する必要はありません。
通常、インストールとは、アプリケーション/usr/local
がソースコードからビルドされたことを意味し、インストールとは、アプリケーションが/opt
他の人のコンピュータでコンパイルされたバイナリであることを意味します。
.local
各ユーザーは自分のアセンブリを含めることができる隠しディレクトリを自宅に持つこともできます。それは次のように使用されます - などが/usr/local
あるかもしれません。~/.local/bin
~/.local/share
アーカイブからアプリケーションをインストールする一般的な方法の1つは、アーカイブの内容を適切なサブ/opt
ディレクトリ(たとえば)にダンプし、ファイルと/opt/graalvm-ce-java11-22.0.0.2
アプリケーションファイルの下にある他のディレクトリへのシンボリックリンクを作成することです。例は次のとおりです。/usr/local/bin
/usr/local
/usr/local/bin/java -> /opt/graalvm/bin/java
/opt
また、ディレクトリ名(たとえば)にバージョン情報を追加し、そのディレクトリへのシンボリックリンク(たとえば)を作成して、インストールされている/opt/graalvm-ce-java11-22.0.0.2
アプリケーションの複数のバージョンを簡単に切り替えることができるようにすることも一般的です/opt/grallvm
。