Forum Linux.debian/ubuntu Paquets Debian: triggers, triggers pour man-db

Posté par  .
Étiquettes :
0
23
mar.
2010
Salut,

Pour rendre façile l'installation de mon petit script Python, j'utilise des paquet DEBs, et jusqu'à maintenant, pour ajouter une entrée dans le manuel (commande man), je mettais tout simplement mon fichier de macros dans "/usr/share/man/man1/", et ça marchait.

Mais je me suis rendu compte que les autre paquets utilisaient des "triggers pour man-db", et je me suis demandé ce que c'était...

J' ai donc fait quelque recherche, qui mon apprisent que les "triggers" étaient des déclenchements d'actions d'autres paquets (comme le trigger pour génerer l'initramfs du noyeau), mais je n'en ai pas trouvé plus, car les termes "triggers" renvoient des résultats de recherches sur tous les logs de DPKG que postent les gens quand ils ont un problème pour installer un paquet, et qu'on ne parle pas des triggers dans les tutoriel sur les paquets Debian que j'ai trouvé...

Je voudrais donc savoir si quelqu'un à un lien ou un renseignement sur comment créer un "trigger" et sur l'utilitée d'un trigger pour mand-db...

Merci d'avance :-)
  • # man

    Posté par  (site web personnel) . Évalué à 2.

    Effectivement la documentation est difficile à trouver.
    $ man -k triggers
    deb-triggers (5)     - actions différées du paquet
    
    Au pire, tu peux regarder les sources des paquets qui les utilisent, et si ça t'intéresse les sources du paquet man-db pour voir comment les déclarer.
    • [^] # Re: man

      Posté par  . Évalué à 3.

      J'ai regardé la source de man-db et ils utilisent "interest" comme ceci:
      interest /un/chemin/
      Cela voudrais dire qu'un scritp s'execute à chaque fois qu'on touche au répertoire "/un/chemin/"... mais quel script?!

      Dans le fichier "postinst" de man-db je vois ceci:


      run_mandb () {
      db_get man-db/auto-update
      [ "$RET" = true ] || return 0
      # start-stop-daemon isn't available when running from debootstrap.
      perl -e '@pwd = getpwnam("man"); $( = $) = $pwd[3]; $< = $> = $pwd[2];
      exec "/usr/bin/mandb", @ARGV' -- "$@" || true
      }

      if [ "$1" = 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

      Donc, apparement, le fichier "postinst" du paquet ayant créé le trigger est exécuté et on peut détecter s'il est exécuté en trigger comme ci-dessus.
      D'autres part, on peut apparement "forcer" un trigger avec la directive activate < trigger >

      Donc, si je ne me trompe pas dans ce que j'avance ci-dessus, mon problème est résolu, merci :-)

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.