Apt dpkg hook, script à l'installation d'un paquet

Bonjour,

Est ce qu’il y a un moyen avec apt ou dpkg qui permet de lancer un script à l’installation d’un paquet précis ?
Je voudrais par exemple lancer un script a chaque fois que j’installe ou que je met à jour un programme par exemple “sl”.

Ça n’a aucun intérêt pour sl, mais c’est un exemple.

A+

Mauvaise section : je déplace dans SD.

Désolé et merci du déplacement.

Le sujet est assez vaste, commence déjà par lire man apt.conf (au minimum les sections “Description”, “Syntaxe”, et “Méthode d’appel de Dpkg(1) par Apt”).
Une fois que tu comprendras comment ça fonctionne, tu pourras aller mettre le nez dans /etc/apt/apt.conf.d/:wink:

Malheureusement, on peut détecter facilement à l’aide des hooks quels paquets vont être installés / modifiés (Pre-Install-Pkgs) mais pas ceux qui viennent de l’être (Post-Invoke). Mais je suis certain qu’avec un peu d’imagination ça doit être facile de faire le pont entre les deux.

Cela dit si tu nous disais pourquoi tu veux faire ça, ça nous aiderait sûrement à t’aider plus efficacement. :mrgreen:

Salut,

Merci pour la précision sur le hook Pre-Install-Pkgs.
J’avais déjà fait des tests, mais avec Pre/Post-Invoke et forcement je n’avais pas lu le man a fond.

Je patch le logiciel sympa pour mes besoin.
Mais je souhaite quand même utiliser le paquet.
Donc je voulais avoir un message d’avertissement lors de ses mises à jour.

Donc j’ai utiliser deux scripts :
/etc/apt/apt.conf.d/99sympa

DPkg::Pre-Install-Pkgs { "if [ -x /root/sympa/alert_sympa.sh ]; then xargs -rL1 /root/sympa/alert_sympa.sh; fi"; };

/root/sympa/alert_sympa.sh

#!/bin/bash

echo ${*} | grep -q "sympa" 
if [ ${?} -eq 0 ]
then
    echo -e "\033[1;31mMise à jour de sympa, pensez à appliquers les patchs !\033[0m" >&2
fi
exit 0

Je marque le sujet comme résolu, mais je suis preneur si quelqu’un sait comment avoir un hook sur un logiciel en post installation.

Quand je disais qu’un peu d’imagination résoudrait le problème… :smiley:

[size=125]/etc/apt/apt.conf.d/99-apt-hooks-test[/size]

DPkg::Pre-Install-Pkgs { "if [ -x /root/apt-hooks-test/hook.sh ]; then /root/apt-hooks-test/hook.sh preinstall; fi"; }; DPkg::Post-Invoke { "if [ -x /root/apt-hooks-test/hook.sh ]; then /root/apt-hooks-test/hook.sh postinvoke; fi"; };

[size=125]/root/apt-hooks-test/hook.sh[/size]

[code]#!/bin/sh
set -e # Arrêter immédiatement si erreur

Nom du paquet à surveiller (syntaxe grep -E)

PAQUET=“acct”

Emplacement du fichier servant de drapeau

FLAG_FILE="/root/apt-hooks-test/.flag"

Routine à exécuter

Appelé en Post-Invoke UNIQUEMENT si $PAQUET a été installé / mis à jour (les suppressions ne sont pas détectées).

hook_postinvoke()
{
echo “====> Ça marche ! <====”
}

Détecter l’installation / MAJ de $PAQUET en Pre-Install-Pkgs

if [ “$1” = “preinstall” ] && grep -E -q “^/var/cache/apt/archives/${PAQUET}_[^/]*”; then
touch “$FLAG_FILE”

Le cas échéant, exécuter la routine en Post-Invoke

elif [ “$1” = “postinvoke” ] && [ -f “$FLAG_FILE” ]; then
hook_postinvoke
rm “$FLAG_FILE”

fi[/code]
:wink:

Oh là là effectivement. :075

Désolé, mes neurones sont un peu surcharger en ce moment.
Merci beaucoup. :023

A+