RPMで一般的に使用されるサブルーチン

RPMで一般的に使用されるサブルーチン

私が使用したいいくつかの共通コードがあります。%予備そして%郵便はがき私の役割回転速度仕様書。サブルーチンを入れたとき%予備セクションに同じサブルーチンを追加する必要があります。%郵便はがきRPMセクション。同じサブルーチンを2回維持することはお勧めできません。例は次のとおりです。

回転速度仕様書%予備そして%郵便はがき部分:

%pre
log_file=/var/log/myrpminstall.log
#-------------------------------------
# Send text log_file
#-------------------------------------
log_it() {
  log_msg=$1
  echo -e $log_msg >> $log_file
}

log_it "pre section log information"

%post

log_it "Post section log informations"

現在いつ%郵便はがき部分回転速度インストール中に実行中に次のエラーメッセージが表示されました。

/var/tmp/rpm-tmp.36557: line 5: log_it: command not found

それでは、このようなサブルーチンを作成する方法はありますか?丸太(グローバル機能)の全部にアクセス可能回転速度??現在やるべきこと丸太機能する%郵便はがきそこに使いたいなら。

答え1

これがうまくいかない理由は、各スクリプトレット(%postなど%pre)がスタンドアロンスクリプトで作成され、実行のためにbash / shに渡されるためです。したがって、これを実行するシェルは、他のスクリプトレットで定義されている関数については知りません。

この目的のためにRPMマクロを使用することをお勧めします。~/.rpmmacrosまたはに入れることができます/etc/rpm/macros。このような:

%define log \
log_it() { \
  log_msg=$1 \
  echo -e $log_msg >> $log_file \
}

%pre
%log

log_it test

%post
%log

log_it test

バラよりhttp://rpm5.org/docs/rpm-guide.pdf詳細については/usr/lib/rpm/macros

関連情報