When creating an rpm package, the spec file can specify a number of scripts to be run before and after package install and uninstall. For the simple cases of a new install or an uninstall it is obvious which script runs when. However, the documentation didn’t seem very clear on the behavior during a package upgrade (rpm -U).
Documenting this as a note to my future self, for the next time I need it… The table shows which script runs when (and in what order) and what integer parameter it is given:
| Fresh install (rpm -i) | %pre 1 %post 1 |
| Upgrade (rpm -U) | %pre 2 %post 2 %preun 1 %postun 1 |
| Uninstall (rpm -e) | %preun 0 %postun 0 |
With this, the scripts can do something like:
%pre
case "$*" in
1)
echo package is about to be installed for first time
;;
2)
echo package is about to be upgraded, prepare component
echo for upgrade (e.g. stop daemons, etc)
;;
esac
exit 0