[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Trigger in package meerdere keren uitgevoerd



On 28-10-10 16:34, Geert Stappers wrote:
> Op 20101028 om 15:13 schreef Martijn Grendelman:
>> Hoi lijst,
>>
>> Voor een pakket dat ik aan het maken ben, probeer ik gebruik te maken van
>> triggers. Het idee is precies hetzelfde als bijvoorbeeld bij de
>> installatie van een of meerdere PHP-extensies. Aan het einde van de
>> installatie wordt Apache eenmalig (dus niet voor elke extensie) herstart.
>>
>> Het definiëren van de trigger in mijn pakket is gelukt. Dit is niet
>> moeilijker dan het meeleveren van een 'triggers' control file, met daarin
>> de regel:
>>
>>   interest <trigger naam>
>>
>> en de feitelijke trigger programmeren in het postinst script. Nou heb ik
>> een ander pakket, dat de trigger dient te activeren. Ik wil graag, dat aan
>> het einde van de installatieprocedure de trigger eenmalig wordt
>> uitgevoerd. Ik heb in de 'triggers' control file de volgende regel opgenomen:
>>
>>   activate <trigger naam>
>>
>> Ook dat werkt, in principe, alleen het probleem waar ik tegenaan loop, is
>> dat de trigger meerdere malen wordt uitgevoerd, namelijk:
>>
>> - na 'Unpacking <pakketnaam> (<versie>) ...'
>> - nogmaals na 'Setting up <pakketnaam> (<versie>) ...'
>>
>> als er dan vervolgens iets misgaat tijdens de configuratie, dan krijg je:
>>
>>   E: Sub-process /usr/bin/dpkg returned an error code (1)
>>   A package failed to install.  Trying to recover:
>>   Setting up <pakketnaam> (<versie>).
>>
>> en vervolgens wordt de trigger /nog een keer/ uitgevoerd.
>>
>> Hoe kan ik ervoor zorgen, dat de trigger maar EEN keer wordt uitgevoerd?
>>
>> Overigens zie ik het bovenstaande gedrag als ik het pakket installeer met
>> aptitude, maar niet als ik de deb installeer met dpkg -i. Met dpkg wordt
>> de trigger daadwerkelijk maar 1 x uitgevoerd, aan het einde.
> 
> 
> Als ik het goed lees, zijn er twee packages gemaakt en is er een
> verwijzig van het ene package naar het andere package.

Correct.

> Mijn verzoek is om het "probleem E-mailtje" nog een keer te schrijven.
> En dan de (fictieve) package namen gebruiken. Zodat ook echt duidelijk
> wordt dat er meerdere packages in het spel zijn.

Ok.

Ik gebruik Puppet om mijn firewall te beheren. Nou ben ik een pakket (noem
het 'xyz') aan het maken, dat een service installeert, waarvoor er een
gaatje in de firewall moet worden geprikt. Het pakket levert zelf de
firewall rules aan in een file, en na installatie moet Puppet een 'reload'
krijgen, om de firewall te reloaden met de nieuwe rules.

Ik heb daarom in Puppet een trigger gedefinieerd, genaamd 'puppet-reload'.
In de 'triggers' file van Puppet staat:

  interest puppet-reload

In de triggers file van mijn pakket 'xyz' staat:

  activate puppet-reload

>    Plus:   SHOW US THE SOURCE CODE!
> 
> Op zijn minst de post install files en de triggerscripts.

Dat had ik toch al grotendeels gedaan. De code in het postinst script is
niet relevant, want die werkt gewoon, maar voor de volledigheid:

  if [ "$1" = "triggered" ]; then
          invoke-rc.d puppet reload || true
  fi

Het probleem is dus, dat tijdens een installatie met aptitude deze code
twee keer wordt uitgevoerd, terwijl ik dat eigenlijk maar 1 x zou willen.

Bij installatie met 'dpkg -i' treedt dit probleem niet op.

Is dit een bug in Apt(itude)?

Groeten,
Martijn.


Attachment: smime.p7s
Description: S/MIME Cryptographic Signature


Reply to: