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