Os arquivos de especificação do RPM suportam scriptlets por instalação ( %pre
) e pós-instalação ( %post
) ou pré-desinstalação ( %preun
) e pós-desinstalação ( %postun
) que podem ser usados para atualizar qualquer configuração do sistema antes de o pacote RPM ser instalado ou quando ele é removido.
Você pode verificar, por exemplo, o pacote httpd em que a seção %pre
está definida para adicionar o usuário do apache e na seção %post
está definida para ativar o serviço httpd na inicialização.
rpm -q --scripts httpd
preinstall scriptlet (using /bin/sh):
# Add the "apache" user
getent group apache >/dev/null || groupadd -g 48 -r apache
getent passwd apache >/dev/null || \
useradd -r -u 48 -g apache -s /sbin/nologin \
-d /var/www -c "Apache" apache
exit 0
postinstall scriptlet (using /bin/sh):
# Register the httpd service
/sbin/chkconfig --add httpd
/sbin/chkconfig --add htcacheclean
preuninstall scriptlet (using /bin/sh):
if [ $1 = 0 ]; then
/sbin/service httpd stop > /dev/null 2>&1
/sbin/chkconfig --del httpd
/sbin/service htcacheclean stop > /dev/null 2>&1
/sbin/chkconfig --del htcacheclean
fi
posttrans scriptlet (using /bin/sh):
test -f /etc/sysconfig/httpd-disable-posttrans || \
/sbin/service httpd condrestart >/dev/null 2>&1 || :
Aqui estão as seções relacionadas no arquivo SPEC para o pacote httpd:
%pre
# Add the "apache" user
getent group apache >/dev/null || groupadd -g 48 -r apache
getent passwd apache >/dev/null || \
useradd -r -u 48 -g apache -s /sbin/nologin \
-d %{contentdir} -c "Apache" apache
exit 0
%post
# Register the httpd service
/sbin/chkconfig --add httpd
Eu sei que o guia RPM Máximo é a fonte definitiva de informações sobre como faça isso.