pkgin and pkgng for pkgwin


I moved to Fedora as my desktop OS of choice largely because of yum, and some Red Hat Linux nostalgia. Pkgin and Pkgng on NetBSD and FreeBSD respectfully may be enough to win me back from just using it on the server!

Back when I fickly switched between FreeBSD then NetBSD for my file server at home, the systems were so appealing I wanted to try them on the desktop. If you go back to the archives from a few years back, you'll see all my posts about BSD desktops, getting Xfce working on them, and how much I enjoyed using them.

Leaving aside the issue of accelerated 3D graphics for now, the main issue with using the BSDs as desktop OSs is they tended to be heavily source-based. Binary packages were available, but generally speaking if you wanted current software and updates, you needed to use their respective port/package systems. Before the advent of freebsd-update, you also needed to rebuild the base system to upgrade it.

For small applications or the ones you'd typically run on a server, this was fine. Building Firefox or Xfce or KDE from sources each time they had an update would take hours, and was an incredibly tedious process. Sometimes they'd break, or a dependency wouldn't build, and you'd be stuck. It didn't make for a terribly pleasant desktop experience, especially when my Linux friends could enter yum update and be largely up to speed in minutes.

Obconf, Nitrogen, urxvt on Openbox, my "cloud" theme :)

A NetBSD repo? You bet!

A lot has changed in the intervening years since I started using Linux again. Pkgng on FreeBSD and Pkgin on NetBSD offer repository-based binary package management systems akin to yum in the Red Hat world, or heaven forbid apt-get.

From the NetBSD pkgin site:

pkgin is aimed at being an apt / yum like tool for managing pkgsrc binary packages. It relies on pkg_summary(5) for installation, removal and upgrade of packages and associated dependencies, using a remote repository.

Many so-called GNU/Linux distributions provide a convenient way of searching, installing and upgrading software by using binary archives found on “repositories”. NetBSD, and more widely, all operating systems relying on pkgsrc have tools like pkg_add and pkg_delete, but those are unable to correctly handle binary upgrades, and sometimes even installation itself.

This is the purpose of pkgin, to provide the user a convenient way to handle binary packages, using the same working mechanisms than tools like apt-get.

And from the FreeBSD pkgng wiki page:

pkgng is built on top of libpkg, a new library to interface with package registration backends. It abstracts package management details such as registration, remote repositories, package creation, updating, etc.

pkgng is: a replacement for pkg_* tools, a tool to query/manage installed packages, a tool to deal with binary packages, a tool to upgrade/install packages from a remote repository and a library that provides all the package management in a safe way so one can write a new frontend.

I moved from FreeBSD to NetBSD on my file server here, and so far I've only played with pkgin, but I'm genuinely excited about both. A method to reliably and consistently upgrade binary packages was arguably the main reason I went to Linux.

I'll keep the penguin on at least one machine I own, but if these systems work well I may be on my way to using BSD on my laptops again, including maybe even this one! As much as I know about the Fedora ecosystem now, I'm still far more at home with BSD. /etc/rc.conf, securelevels, jails [sic], the 2-clause BSD licence!

I'll be playing with both after my latest round of assignments are handed in, and will report back ^_^

Author bio and support


Ruben Schade is a technical writer and infrastructure architect in Sydney, Australia who refers to himself in the third person. Hi!

The site is powered by Hugo, FreeBSD, and OpenZFS on OrionVM, everyone’s favourite bespoke cloud infrastructure provider.

If you found this post helpful or entertaining, you can shout me a coffee or send a comment. Thanks ☺️.