Skip to main content



On Package Manager Architectures, Part I

I am sort of a package manager junky. I even wrote my own package manager, capable of managing dependencies across programming language boundaries, called Degasolv. During the course of my travels, I've noticed some very significant things about package management architecture.

There are really three different kinds of package managers. Each fundamental type of package manager makes trade-offs. Each type is fairly successful in its own ecosystem. It is instructive to point out the differences.

Here I will treat the two most significant. The third type deserves its own blog post (assuming I get to it). For the curious, it includes ivy and maven, and I will discuss this one later.

The Main Differences
The first type is that of the system package manager. The archetype of this category is YUM, and more recently, DNF. In this model, the following facts are true:

Packages install files into a shared file system, and are shared resources. Only one package of each package name may exist i…

Latest Posts

Modeling Recursive Sum Types in C++11 Using boost::variant


"Brent": the Story of the Volunteer Warrior, and The Mayhem That Ensued

ratpoison and xdotool: How to Move the Mouse by Using the Keyboard in Linux

How to Comply With the NSA While Maintaining Privacy For Your Users

Dragon NaturallySpeaking, Vimperator, and Emacs


Moving On

The New Genetic Aglorithm: What Makes It New

The RankedSet: Optimization's Best Friend