これは、スクリプトを自己解凍アーカイブに入れ、それを rpm スクリプトにすることで可能になります。これはMakeself (ダウンロードへの直接リンク) で可能です。
例の名前としてfootestを使用して、これを実行します。
makeself.sh --base64 /path/to/footest \
/path/to/rpm/sources/footest.sh "My foo test" ./run.sh
は/path/to/footest
実行するスクリプトを./run.sh
含むディレクトリであり、展開時に実行される footest ディレクトリ内のスクリプトです。
.spec
ファイルにソースとして追加し、footest.sh
これをスクリプトとして配置します。
%pre -f footest.sh
スクリプトの rpm をクエリすると、footest.sh
実行するテスト スイートの base64 エンコーディングが続く makeself である の内容が表示されます。
注:これを機能させるには、base64 エンコーディングを使用するように makeself にパッチを適用する必要があり (現在のリリースにはこの機能がありません)、rpm はスクリプト内のバイナリ データを好みません:
makeself-2.1.5-base64.patch:
diff -ruNp makeself-2.1.5/makeself.sh makeself-2.1.5-base64/makeself.sh
--- makeself-2.1.5/makeself.sh 2008-01-04 16:53:49.000000000 -0700
+++ makeself-2.1.5-base64/makeself.sh 2012-01-17 06:01:42.000000000 -0700
@@ -91,6 +91,7 @@ MS_Usage()
echo " --gzip : Compress using gzip (default if detected)"
echo " --bzip2 : Compress using bzip2 instead of gzip"
echo " --compress : Compress using the UNIX 'compress' command"
+ echo " --base64 : Instead of compressing, encode the data using base64"
echo " --nocomp : Do not compress the data"
echo " --notemp : The archive will create archive_dir in the"
echo " current directory and uncompress in ./archive_dir"
@@ -150,6 +151,10 @@ do
COMPRESS=Unix
shift
;;
+ --base64)
+ COMPRESS=base64
+ shift
+ ;;
--encrypt)
COMPRESS=gpg
shift
@@ -278,6 +283,10 @@ bzip2)
GZIP_CMD="bzip2 -9"
GUNZIP_CMD="bzip2 -d"
;;
+base64)
+ GZIP_CMD="base64"
+ GUNZIP_CMD="base64 -d -i"
+ ;;
gpg)
GZIP_CMD="gpg -ac -z9"
GUNZIP_CMD="gpg -d"