¿Hay alguna forma de ver qué hacen exactamente los “desencadenantes de procesamiento” por paquete?

Como he entendido, los ” Procesadores de Procesamiento para ” habituales realizan algunas tareas específicas del paquete y del sistema, como agregar elementos a un menú de inicio o actualizar un archivo de configuración. ¿Hay alguna forma real de ver qué se está haciendo o modificando exactamente durante este paso? ¿Dónde se puede encontrar el comportamiento exacto del paso?

Existe, pero requiere excavar a través de algunos scripts de bash para los paquetes que se activan.

  • Supongamos que la salida de dpkg se ve como:

      Preparándose para reemplazar zim 0.52-1 (usando ... / archives / zim_0.52-1_all.deb) ...
     Desempaquetar recambio zim ...
     Procesando desencadenantes para mime-info compartida ...
     Procesando los disparadores para el menú ... 
  • Internamente, lo que hace dpkg es llamar al script postinst para cada uno de estos paquetes con la opción de línea de comando activada y cero o más opciones de activación.

  • Entonces, simplemente abra /var/lib/dpkg/info/PACKAGE.postinst (es un script de bash), y simplemente busque lo que sucede cuando se triggered $1

Ejemplo: man-db triggers

Uno de los “Desencadenadores de procesamiento” más comunes que verá es para man-db , siempre que el paquete que se está instalando tenga una página de manual .

Si abre /var/lib/dpkg/info/man-db.postinst , encontrará esta sección:

 si ["$ 1" = activado];  entonces
     # No imprimimos un mensaje de estado aquí, como ya dijo dpkg
     # "Procesando desencadenantes para man-db ...".
     run_mandb -pq
     salida 0
 fi

Así que puedes ver que los Processing triggers for man-db ... simplemente dan como resultado que la función run_mandb (que también se encuentra en el script postinst ) se ejecuta con la opción -pq .

Recursos útiles:

  1. Tratar de hacer que los disparadores de dpkg sean más útiles y menos dolorosos
  2. dpkg dispara, el documento perdido de cómo hacerlo