シェルスクリプトと tar.gz とかのバイナリアーカイブを結合して、1 ファイルのインストーラにする方法。
最近、よく目にするようになった。
コピペで使えるようにしておく。
仕組みは、自スクリプトの末尾に __ARCHIVE__ マーカーを書いておいて、その後ろにアーカイブを結合。
スクリプト実行時に grep で検索して開始行を取得、tail で切り取って展開という流れ。
1. ベースとなるシェルスクリプトを作成
まずは、ベースとなるシェルスクリプトを作成。
末尾 __ARCHIVE__ の後ろに空行を入れないようにします。
$ vi base.sh #!/bin/sh # ここに処理を書いても良い # アーカイブの開始位置を取得 ARCHIVE_OFFSET=$(($(grep -na -m1 "^__ARCHIVE__$" $0 | cut -d ':' -f1) + 1)) # アーカイブを解凍 tail -n +${ARCHIVE_OFFSET} $0 | tar zxf - # ここに処理を書いても良い # exit 0 を忘れずに exit 0 __ARCHIVE__
2. 上のスクリプトとアーカイブ (tar.gz の例) を cat で結合
$ cat base.sh hogehoge.tar.gz > installer.sh
● シェルスクリプト, インストーラ, 結合, shell script, installer, cat, archive, tar.gz, 自己解凍
0 件のコメント:
コメントを投稿