Most init scripts I have seen are defined as noreplace. It has unfortunate effect - if init script is changed, it is not replaced. It means that in postinstall section rpm actually runs restart with _old_ script. Which is obviously wrong (exactly in case when script has changed).
Is there any policy related to init scripts? I see absolutely no reasons to define them as noreplace except for very special cases (like rc.local probably). Is it possible to tell RPM to save old copy in *.rpmold on update? -andrej