Os scripts %
são chamados da versão relevante do arquivo rpm
. Portanto, se você atualizar da versão 1.0 para a versão 1.1, os scripts pré / pós instalação serão executados a partir da versão 1.1 do rpm e os scripts pré / pós-desinstalação serão executados a partir da versão 1.0.
Isso facilita bastante para os scripts lidarem com a própria versão corretamente.
Por exemplo, aqui está um extrato de um arquivo SPEC
%pre
echo Pre called with version %{version}-%{release}
%post
echo Post called with version %{version}-%{release}
%preun
echo Pre-un called with version %{version}-%{release}
%postun
echo Post-un called with version %{version}-%{release}
Eles são muito simples, apenas para demonstrar isso. Quando você constrói o rpm, esses valores são incorporados na rpm
por exemplo
% rpm -q --scripts -p sweh-test-1.0-0.x86_64.rpm
preinstall scriptlet (using /bin/sh):
echo Pre called with version 1.0-0
postinstall scriptlet (using /bin/sh):
echo Post called with version 1.0-0
preuninstall scriptlet (using /bin/sh):
echo Pre-un called with version 1.0-0
postuninstall scriptlet (using /bin/sh):
echo Post-un called with version 1.0-0
Agora vamos instalar a versão 1.0.0 deste pacote:
% sudo rpm -i sweh-test-1.0-0.x86_64.rpm
Pre called with version 1.0-0
Post called with version 1.0-0
Até agora, muito esperado. Os scripts de pré / pós-instalação são executados.
Agora vamos atualizar para a versão 1.1:
% sudo rpm -U sweh-test-1.1-0.x86_64.rpm
Pre called with version 1.1-0
Post called with version 1.1-0
Pre-un called with version 1.0-0
Post-un called with version 1.0-0
Observe a ordem das chamadas e os números de versão; pre / post install são chamados e o release da versão corresponde à nova versão, e então pre / post uninstall são chamados com o número da versão antiga.
Então a idéia é que você não precisa derivar essa informação, você pode incluí-la diretamente no arquivo de especificação do rpm através do uso das macros %
.