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
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.