Qual é a maneira correta de atualizar a configuração de componentes de terceiros ao usar o RPM?

2

Estamos usando o RPM para empacotamento e implantação de nosso produto. Nosso produto depende de outros componentes, como o banco de dados postgresql, etc., especificados em nosso arquivo .spec. Digamos que um dos arquivos de configuração do componente de terceiros seja corrigido antes que nosso produto seja instalado (e revertido após sua desinstalação). Qual é o procedimento correto de fazer isso? Existem alguns exemplos de pacotes RPM que fazem o mesmo?

Obrigado!

    
por spektom 17.09.2013 / 11:12

1 resposta

1

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.

    
por 17.09.2013 / 12:35

Tags