Part of the Arch Linux system maintenance is to actively read
latest news. Mostly anyone who uses Arch has
come across this piece of advice: read the news before updating! In other
words, before running the dreaded sudo pacman -Syu
command, one should be
prepared to act upon any breaking changes by making sure to read about them
first.
The sad reality is that people are lazy. I am lazy. Either I forget to read the news, or I blatantly ignore them, so I have a false right to brag about the damage that has been don to me on my social networks. Well, maybe network, I only publish posts in the Fediverse right now. I wish the system would tell me to read the news before the installation.
Hook types
Of course, there is a way to do this automatically. Arch Linux package
manager, pacman
offers a piece of functionality called
hooks. I have written
about hooks previously when
streamlining yadm or
hacking on Cypress and
even when
automating calendar (I
do not use that anymore). All these were git hooks.
Pacman however is using a different kind of hook, an alpm hook. The abbreviation stands for Arch Linux Package Management. Although the documentation looks very solid, I must admit that this is exactly the type of thing I do not want to study. From my understanding, I could probably use it only for exactly this one use case - preventing pacman updating the system before reading the fresh news. Unless I became an Arch contributor or a maintainer or something similar. Wish someone did this already.
Enter Informant
Fortunately, someone already made this working. A pacman hook that prevents updating, unless user confirmed he read the news. It's called Informant. I am quite surprised I did not find about it sooner, the system maintenance page about Reading before upgrading the system has been mentioning it since November 2019. It probably shows something about how little I cared about that specific paragraph. Better late than never.
Informant is exactly a piece of technology that automates the whole workflow, saving time and cognitive capacity in the process, which should somehow be the point of automation I believe. The details about the usage are described in the project's README. After installing manually or via AUR there is just an initial read command and after that is basically set it and forget. Very convenient.
Internal workings
Hooks are in fact usually quite simple in their nature and maybe I am scared of them only because of the fear of the unknown. I mean, I have learned to use git hooks already, and they feel simple now. Curiosity made me look at the alpm hook behind Informant.
[Trigger]
Operation = Install
Operation = Upgrade
Type = Package
Target = *
[Action]
Description = Checking Arch News with Informant ...
When = PreTransaction
Exec = /usr/bin/informant check
AbortOnFail
Looking at the hook from this perspective it does not look so mysterious
after all, just a small digestible, self-explanatory pieces. Of course, by
digging deeper, the /usr/bin/informant
is actually a Python script doing
the fetching and keeping track of already read news, among other things.
But now that I see the pacman hooks aren't actually that scary, I might
find myself automating something regarding the packages management. Would
definitely love to hear some nice ideas!
This is a 26th post of #100daystooffload.