私が使用したいいくつかの共通コードがあります。%予備そして%郵便はがき私の役割回転速度仕様書。サブルーチンを入れたとき%予備セクションに同じサブルーチンを追加する必要があります。%郵便はがき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
。