今回は Linux インストーラの話題です。bash の知識が必要です。Linux のインストーラは rpm(yum)、dpkg 等多数代表的なものがあります。
ただ、[JDK・JRE] をインストールするパッケージはこれらを使わず独自形式となっています。
インフラをやっていてインストーラを作成するような仕事は結構これまでもあったのですが非常に特徴的なので中を覗いてみます。
JDK・JRE パッケージの仕組み
JDK も JRE パッケージも主に bash で出来ています。これは主にインストール前の重要事項の説明や同意を求める為にユーザインタラクション(キー入力)が必要な為と考えられます。
ただ、おもしろいのは bash と zip が組み合わさっていることです。このパッケージは vi 等のエディタで確認できます。最初の方は bash プログラムになっていますが途中からいきなりバイナリファイルとなっています。
このバイナリファイル部分が zip 形式になっておりプログラム内にデータも埋めこまれています。
JDK・JRE インストーラ実行手順
この JRE・JDK パッケージは実行されると以下のような手順で処理を進めます。
- ディスクスペースの確認
- 自身のプログラムからバイナリデータの抜き出し
- 抜き出したバイナリデータのチェックサム値の確認
- バイナリデータに実行権限を付与(実はこのデータは自己解凍 zip ファイル)
- バイナリデータを実行
- 後処理(jar の生成)
RPM インストーラを作成する場合、RPM はテストの為一度テンポラリディレクトリに RPM インストールしたり、デバッグ情報を削除したりと色々なことをしてくれます。
他のパッケージシステムも土台が出来上がっていて素晴らしい点が多々あるのですがこういったインストール形式も非常に勉強になります。
これらを参考に一度自分でもつくってみるのがいいかもしれません。