Events autour de apt

Bonjour,

Je cherche à être informé des events autours de apt :

  • si ajout d’applications (et quoi)
  • si suppression
  • si update
    Pour cela, je me suis penché sur dbus et les signaux.

Si je lance :
bus-monitor --system "type='signal',sender='org.debian.apt'"

et que je fais des install/suppression : j’ai strictement aucun event. (alors que pour d’autres sender, ça marche très bien)

Est-ce que je fais mal les choses ?
Est-ce qu’il n’y a pas une autre méthode pour arriver à mes fins ?

Merci d’avance !

Hello
Hum…c’est pas dpkg.log?

C’est ma solution actuelle oui : faire de l’inotify sur /var/log/apt/history.log et /var/log/dpkg.log
Mais je trouve ça laid et hasardeux. Ça veut dire parser des fichiers de logs et anticiper tous les cas possibles.
D-bus propose à la base des API donc un moyen élégant d’interagir entre application.
Là, j’ai l’impression que la brique dbus de apt ne fonctionne juste pas bien.

aptdaemon correspond à la demande, mais retiré de Debian depuis 2016.

C’est probablement maintenant du côté de packagekit / packagekit-tools que tu trouveras ton bonheur, ou au moins pour investigation.

/etc/dbus-1/system.d/org.freedesktop.PackageKit.conf
/usr/bin/pkcon
/usr/bin/pkmon
1 J'aime

Ah, super, merci ! En effet, je vois des choses passer avec PackageKit côté d-bus.
C’est pas complètement parfait (ça gère les install/suppression de apt mais pas les install à la mano via dpkg)

Mouai, je suis qd meme sceptique:

Although bug fixes are still released, no major features have been developed since around 2014, and the package’s maintainer predicts that it will gradually be replaced by other tools as technologies such as Flatpak and Snap become more popular.[6]

Sinon il y a le bon vieux synaptic

Le sujet ici n’est du tout de de choisir un outil de gestion de paquets, mais de gérer le traffic apt par d-bus, ce que ne gère absolument pas synaptic.
Les différents outils X, Y, Z ne sont que des surcouches secondaires de dpkg/apt.
Flatpak et Snap n’ont rien à voir non plus.

1 J'aime

j’ai du mal à voir l’intérêt je pense que c’est mon pb

L’intérêt c’est d’avoir un programme autonome qui est en interaction direct avec apt.
Ex : si tu apprends que tel soft est installé, tu peux avoir un comportement diff sur ton appli en temps réel.
D-Bus a l’avantage d’avoir une API pour interagir avec d’autres applications via des methodes, propriétés et signaux (event).
Bien évidemment, tu peux faire la même chose via de la ligne de commande encapsulé dans ta propre API (ex: lancer en python une commande via subprocess) mais c’est bcp plus complexe et bancal.

Ma question désormais : avec dbus, est-ce qu’on peut avoir l’équivalent de « pkcon get-packages » ou « apt list --installed » ?

Bien que aptdaemon ne soit plus disponible chez Debian, il reste disponible sur launchpad/ubuntu/mint.
En ouvrant et décortiquant le contenu du paquet, tu trouveras peut-être des commandes d-bus directement exploitales, ou au moins t’en inspirer.

aptdaemon_1.1.1+bzr982-0ubuntu39mint1_all.deb
aptdaemon_launchpad

Sinon, je pose ça là, mais il me semble qu’il y a un fichier de journal qui indiquent toutes les opération effectuées par dpkg : /var/log/dpkg.log.

1 J'aime

:smiley:
C’est ce que je disais plus haut

ouais, au final, je surveille avec inotify et je fais un diff de « apt list --installed »

Bien que ce ne soit pas la réponse relative au tracking apt avec dbus, ce ne sont pas les solutions qui manquent directement avec dpkg.

apth(){ # bash
[ -z "$Q" ] && read -p 'install|upgrade|remove|rollback|all ? -> ' Q
      case "$Q" in
        install) grep 'install ' /var/log/dpkg.log ;;
        upgrade|remove) grep $Q /var/log/dpkg.log  ;;
        rollback) cat /var/log/dpkg.log | grep upgrade |
                  grep "$2" -A10000000 |
                  grep "$3" -B10000000 |
                  awk '{print $4"="$5}' ;;
        all)  cat /var/log/dpkg.log ;;
      esac
}

Ah ?

Effectivement, je n’avais pas vu.

1 J'aime