Esiste un modo per vedere quali sono esattamente i "trigger di elaborazione" in base al pacchetto?

13

Come ho capito, i soliti " Trigger di elaborazione per & lt; packagename & gt; " eseguono alcune attività specifiche del pacchetto e del sistema come aggiungere elementi a un menu di avvio o aggiornare un file di configurazione . C'è un modo reale per vedere cosa viene fatto o modificato esattamente durante questo passaggio? Dove si può trovare l'esatto comportamento del passo?

    
posta zxcdw 22.08.2012 - 01:57
fonte

1 risposta

15

Esiste, ma richiede di scavare attraverso alcuni script di bash per i pacchetti attivati.

  • Supponiamo che l'output dpkg assomiglia a:

    Preparing to replace zim 0.52-1 (using .../archives/zim_0.52-1_all.deb) ...
    Unpacking replacement zim ...
    Processing triggers for shared-mime-info ...
    Processing triggers for menu ...
  • Internamente, ciò che dpkg fa è chiamare lo script postinst per ciascuno di questi pacchetti con l'opzione della riga di comando triggered e zero o più opzioni di trigger.

  • Quindi apri semplicemente /var/lib/dpkg/info/PACKAGE.postinst (è uno script di bash) e cerca semplicemente cosa succede quando è triggered

Esempio: man-db trigger

Uno dei più comuni "trigger di elaborazione" che vedrai è per man-db , ogni volta che il pacchetto che viene installato ha una pagina man .

Se apri /var/lib/dpkg/info/man-db.postinst , troverai questa sezione:

if [ "" = triggered ]; then
    # We don't print a status message here, as dpkg already said
    # "Processing triggers for man-db ...".
    run_mandb -pq
    exit 0
fi

Quindi puoi vedere che Processing triggers for man-db ... semplicemente dà come risultato la funzione run_mandb (trovata anche nello script postinst ) che viene eseguita con l'opzione -pq .

  

Risorse utili:

     
  1. Cercando di rendere più dpkg trigger più utile e meno doloroso
  2.   
  3. trigger dpkg, il documento di istruzioni perso
  4.   
    
risposta data ish 22.08.2012 - 04:22
fonte

Leggi altre domande sui tag