Thanks for looking, Greg!  I learned a few things following your note
though, line, by line...

On Sun, Jun 15, 2025 at 11:33 AM Greg Wooledge <g...@wooledge.org> wrote:
>
> On Sun, Jun 15, 2025 at 11:07:41 -0400, Boyan Penkov wrote:
> > So ultimately, my problem is addressed; however, the larger question
> > is still open: is there in fact a straightforward way for a user, not
> > the package maintainer, to tell the package management system: "If and
> > only if your operation touched package x, also do this one thing
> > locally."?  I can think of about a million use cases for this: "if you
> > touched maildir-utils, run mu  index." "if you touched offlineimap,
> > run offlineimap" "if you touched etckeeper, re-commit the /etc files"
> > and so on ...
>
> Since the apt documentation is such complete rubbish, the only ways
> to actually figure out how anything *works* are source diving and
> experimenting.  I do not feel like trying to source-dive through apt
> and its libraries, so I tried an experiment.
>
> According to the apt.conf(5) man page:
>
>        Pre-Invoke, Post-Invoke
>            This is a list of shell commands to run before/after invoking
>            dpkg(1). Like options this must be specified in list notation. The
>            commands are invoked in order using /bin/sh; should any fail APT
>            will abort.
>
> That's clear as mud.  What is "list notation"?  Again, I had to experiment.
> I tried looking for examples, learned that the
> /usr/share/doc/apt/examples/configure-index.gz file documented at the end
> of the man page does not exist, discovered that the file
> /usr/share/doc/apt/examples/configure-index exists instead, read that, and
> found nothing helpful in deciphering what an apt.conf.d/* file should
> look like.
>
> I looked at other files in /etc/apt/apt.conf.d/ for inspiration, and
> tried searching for the word "list" in the man page, but ultimately it
> came down to experimenting until I got it right.
>
> Here's what I did:
>
> 1) I created the file /etc/apt/apt.conf.d/99localexperiment with the
> following contents:
>
> ====================================================================
> DPkg::Post-Invoke { /usr/local/sbin/dpkg-experiment; };
> ====================================================================
>
> 2) I created the script /usr/local/sbin/dpkg-experiment with the following
> contents:
>
> ====================================================================
> #!/bin/sh
> exec > /var/tmp/dpkg-experiment
> printf '%s args' "$#"
> if test "$#" != 0; then
>     printf :
>     printf ' <%s>' "$@"
> fi
> echo; echo
> ps -fp "$$,$PPID"
> echo
> env
> ====================================================================
>
> and gave it 755 permissions.
>
> 3) I installed a package by running "sudo apt-get install sl".
>
> Here's the /var/tmp/dpkg-experiment file that was created as a result:
>
> ====================================================================
> 0 args
>
> UID          PID    PPID  C STIME TTY          TIME CMD
> root      487061  487060  0 11:19 pts/27   00:00:00 sh -c 
> /usr/local/sbin/dpkg-experiment
> root      487062  487061  0 11:19 pts/27   00:00:00 /bin/sh 
> /usr/local/sbin/dpkg-experiment
>
> SUDO_GID=1000
> DPKG_FRONTEND_LOCKED=true
> MAIL=/var/mail/root
> LC_TIME=C
> USER=root
> HOME=/root
> COLORTERM=rxvt-xpm
> SUDO_UID=1000
> LOGNAME=root
> TERM=rxvt-unicode-256color
> PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
> DISPLAY=:0
> LANG=en_US.utf8
> XAUTHORITY=/home/greg/.Xauthority
> LS_COLORS=ln=31:ex=35:cd=44;37:bd=44;37:pi=32
> SUDO_COMMAND=/usr/bin/apt-get install sl
> SHELL=/bin/bash
> SUDO_USER=greg
> PWD=/tmp
> ====================================================================
>
> Conclusion: there is nothing at all in the environment or arguments
> passed to the Post-Invoke script(s) that indicate what has been done.
> Any such scripts created by the local sysadmin will have to take their
> own investigative steps to try to figure out what happened, and what
> they should do about it.
>
> Unless of course there's some *other* hook that we don't know about
> because the documentation is so poor.
>


-- 
Boyan Penkov

Reply via email to