Disparadores RPM - diferencie entre a ativação do pacote e ativação do gatilho

1

Estou criando um pacote RPM (vamos chamá-lo de pacote A). Eu preciso reagir se outro pacote (pacote B) for reinstalado ou atualizado. Então eu criei um gatilho dentro do pacote specfile B:

%triggerin -- B
#myscript

Infelizmente, o acionador é ativado mesmo quando eu instalo ou atualizo o pacote A e o pacote B já está no sistema. Eu preciso executar o código de gatilho somente se o pacote A estiver instalado e o pacote B for reinstalado ou atualizado. Como posso diferenciar entre esses dois tipos de ativação?

    
por user318972 28.04.2014 / 17:05

2 respostas

3

% triggerin é executado após o seu RPM ser instalado se o destino for já instalado e depois que o destino for instalado enquanto o seu RPM estiver instalado

% triggerun é executado antes que seu RPM seja desinstalado se o destino for instalado e antes que o destino seja desinstalado enquanto o seu RPM estiver instalado

% triggerpostun é executado após o destino ser desinstalado enquanto seu RPM é instalado, mas não é executado se o seu RPM for desinstalado

Dito isto, você poderia usar% triggerin com um condicional para evitar a execução do código quando você instala o A. Você pode conseguir isso atribuindo um valor a uma variável na seção% pre.

algo como isto:

% define install_ed% (rpm -qa | grep A)

% triggerin

if [$ install_ed ne "A"]; então     ...

Eu não estou em uma máquina baseada em rpm agora, então não posso testar a solução, mas ela deve funcionar

    
por 14.05.2014 / 21:23
0

Você pode tentar verificar o %{installtime:date} no seu gatilho. Apenas faça coisas se for recente o suficiente.

    
por 28.04.2014 / 17:24

Tags