pacman, the package manager that was created as fundamental feature of Arch Linux, has a long and successful development history. The pace of development might not be speedy but it’s always been very sensible.

Recently install hooks were introduced to pacman. In short this means, for example, that rather than each font package updating the font cache itself, the font cache is updated once when all the font installations are completed. It’s not ground breaking but it’s a neat, tidy and important solution.

However, I was bit concerned when the post-install script that builds the kernel initramfs wasn’t one of the first scriptlets moved to a hook. I was further dismayed when a discussion on arch-dev-public suggested that some developers might not see the point of doing so.

Part of the fun I have with Linux is fixing things. It probably doesn’t sound like fun but it can be a challenge that rewards with knowledge. However, when the problem is that you can’t boot, well, that’s no fun. It means rescue disks and chroot, and a second box to look up solutions on.

The most frequent cause of a non-booting Arch Linux system (after an update) is not having read the recent News Announcements or followed post-install messages. One time, though, I just got really unlucky. A module that needed to updated in the initramfs was installed after the kernel had been updated and the initramfs had already been rebuild. That really sucked. Since then I have rebuilt the initramfs manually after every system update has completed.

So, I was actually very relieved, when other developers did see the point of moving the scriptlet to a hook. This doesn’t fully solve the problem because that hook still needs to run after other hooks to be as bullet-proof as possible and the current process didn’t seem to support that. Fortunately, this was identified too.

Awesome.

This is great example of open source development going right. Too often it disintegrates in to disagreement and death by committee.

Leave a Reply

Your email address will not be published. Required fields are marked *