Tutaj nie ma wiele do powiedzenia - te sekcje po prostu służą do wywoływania shellowych poleceń ,,na styku'' czynności, które wykonuje rpm. Czyli zwykle wywołują jakieś polecenie shella przed/po instalacji/deinstalacji pakietu.
Mam tutaj prosty przykład - pliki dokumentacji info. Oryginalna przeglądarka plików info używa specjalnych indeksów, plików ,,dir''. Indeksy te zawierają po prostu spis wszystkich stron info, razem z jednolinijkowymi opisami. Indeks widzi się po wpisaniu ,,info'' bez nazwy strony. Ale tutaj występuje pewna niedogodność - pliki z indeksem trzeba ręcznie aktualizować, to znaczy każdy nowy plik info musi zostać zarejestrowany w pliku ,,dir'', musi także w razie usuwania zostać z pliku ,,dir'' wyrejestrowany. Robi się to narzędziem ,,install-info''. Wymogi, które trzeba spełnić są następujące: pakiet musi zostać zainstalowany, pliki skopiowane na swoje miejsca w systemie, a potem trzeba uruchomić install-info z odpowiednimi parametrami. Przy odinstalowywaniu pakietu trzeba jeszcze raz uruchomić install-info, jedyny haczyk polega na tym, że do wyrejestrowania pliku info z indeksu konieczna jest obecność tego pliku info. Żeby go wyrejestrować, musi on być obecny w systemie. Głupota, ale niestety tak jest. Dlatego przykładowa sekcja może wyglądać tak, zakładając że nasz plik to /usr/share/info/gpm.info.gz
%post
install-info %{_infodir}/gpm.info.gz %{_infodir}/dir

%preun
install-info --delete %{_infodir}/gpm.info.gz %{_infodir}/dir
Sekcja %post odpowiada za fazę po zainstalowaniu pakietu. Sekcja %preun oznacza etap zaraz przed usunięciem plików z dysku. I tak to w sumie działa. Teraz jeszcze warto tylko w preambule dopisać tag ,,PreReq: /sbin/install-info'', żeby rpm z góry wiedział, że install-info jest potrzebne do poprawnego zainstalowania tego pakietu.
Innym popularnym zastosowaniem sekcji %post i pokrewnych jest uruchamianie ldconfig - jeśli zrobi to pakiet, to użytkownik nie będzie musiał o tym pamiętać. Można też połączyć instalowanie pakietu z konfiguracją, np. po zainstalowaniu glibc uruchomić od razu jakiś skrypt regenerujący locale, albo uruchamiający timeconfig. Możliwości są tutaj takie same, jak w skryptach shellowych.