A razão pela qual isso não funciona é porque cada scriptlet ( %post
, %pre
, etc.) é escrito como um script independente e passado para o bash / sh para execução. Assim, o shell que o executa desconhece qualquer função definida em outro scriptlet.
Eu recomendaria o uso de macros do RPM para essa finalidade. Você pode colocá-los em ~/.rpmmacros
ou /etc/rpm/macros
. Algo parecido com isto:
%define log \
log_it() { \
log_msg=$1 \
echo -e $log_msg >> $log_file \
}
%pre
%log
log_it test
%post
%log
log_it test
Veja o link para mais informações ou até /usr/lib/rpm/macros
.