KnoxBUG had the pleasure of having PacBSD's Adam Jimerson back. This time he took a deep dive on how PacBSD managed to integrate Arch Linux's package manager on top of an operating system built on top of FreeBSD's kernel and ports.
PacBSD vs FreeBSD
For the uninitiated, you may be wondering what PacBSD is. PacBSD is an Arch Linux inspired BSD built on top of the FreeBSD kernel. It's surprisingly well put together BSD from a very small group of developers. Unlike most BSDs, PacBSD has a flattened file system so no base system. The other main difference is their use of pacman instead of pkg for package management. In a nutshell, you have some talented individuals that like Arch but want to leverage FreeBSD's native support for jails/zfs and (subjectively) better code quality. There are even more interesting features to be found in PacBSD, so check out the slides for more info.
Why pacman and not pkg?
There are a few really good reasons that Pacman would be a desirable package manager for any operating system. Pacman is fast and simple to use. It is built for rolling systems. Most importantly though, it makes powerful use of shell scripts instead of make files.
The use of shell scripts in place of make files allows for powerful features. This includes, smart management of dependencies, which allows it to do a better job of cleaning up when removing packages. It also allows PacBSD to be able to use a mix of the ports tree and Arch's build system to build it's packages.
For more info.
Adam did a thorough deep dive on the internals of PacBSD's package management features. It was really interesting to see how it all worked and all the features that resulted from pacman's design. For more information, you can check out Adam's slides here