ベンダーが提供するバイナリのFHS準拠のインストールディレクトリは何ですか?

ベンダーが提供するバイナリのFHS準拠のインストールディレクトリは何ですか?

ソフトウェアベンダーは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/binDebianベースのシステムにサードパーティの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/localinstallと同様に、ディレクトリ階層にソフトウェアをインストールできます/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

関連情報