助けてください
私のソフトウェア(Javaベース)の「インストールプログラム」を作成するときに心に留めておくべきベストプラクティスや考慮事項は何ですか?
これを達成するにはどのようなステップまたはステップを実行する必要がありますか?
調査の結果、パッケージマネージャを介してこれを行うのが良い方法であることがわかりました。
よろしくお願いします!
ベストアンサー1
Windowsスタイルの自動解凍インストーラパッケージは間違いなく悪い習慣です。
- 自動解凍プログラムはマルウェアのベクトルになる可能性があります。インストーラを管理者として実行する必要がある理由について、誰も疑問に思いません。
- 単純なインストーラジェネレータを使用している場合は、一般的な抽出ツールとマルウェア対策ツールでパッケージのコンテンツにアクセスできないため、マルウェアを非表示にする別の方法が作成されることがあります。
既存のパッケージマネージャは完璧ではないかもしれませんが、そのパッケージ形式を使用するといくつかのセキュリティ上の利点があります。
- パケット形式はよく知られており、暗号化され署名されているため、変調を簡単に検出できます。
- 必要に応じて、パッケージ自体でシングルバイトコードを実行せずに、チェックのためにこれらのパッケージを抽出するツールが常にあります。
- パッケージ形式は、必要なカスタム構成手順を実行できるインストール前/インストール後/削除スクリプトの実行をサポートします。
- 少なくとも
.deb
パッケージング形式には、完全に自動化された非対話型インストール用のパッケージ構成(Debian / Ubuntuの世界では「プリセット」と呼ばれる)を指定する統合された方法が含まれています。
何をしても、ソフトウェアをサーバーで使用する場合は、ソフトウェアを非対話型で簡単にインストールできることを確認する必要があります。そうしないと、Ansible、Salt、docker-composeなどのツールを使用している管理者は、あなたのソフトウェアを嫌います。
パッケージマネージャが依存ライブラリまたは他のパッケージを自動的にインストールするには、パッケージメタデータに依存関係を記録する必要があります。適切なディストリビューションの「最小」インストールでは、パッケージを仮想マシンにインストールしてパッケージをテストし、依存関係がパッケージに必要なすべてを自動的にインポートすることを確認する必要があります。
また、すべての依存関係がセキュリティ更新を許可していることを確認する必要があります。 「パッケージ Y のバージョン 1.2.3.4 が必須」より、「パッケージ Y のバージョン X 以降が必要」としてパッケージの依存関係を指定する方がよいでしょう。
主なディストリビューションでは、推奨されるソフトウェアパッケージング方法に関するドキュメントを提供できます。例えば Debian ではJavaソフトウェアポリシーマニュアル。ソフトウェアをディストリビューションに含める予定がない場合は、ここから離れることができますが、パッケージ化され.dpkg
たJavaソフトウェアの処理方法については、このページを読んでください。