シェルスクリプトと 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 件のコメント:
コメントを投稿