Chris Siebenmann wrote a nice article explaining some of the early reasoning behind Linux package managers:
The abstract way to describe why is to say that Linux distributions had to assemble a whole thing from separate pieces; the kernel came from one place, libc from another, coreutils from a third, and so on. The concrete version is to think about what problems you’d have without a package manager. Suppose that you assembled a directory tree of all of the source code of the kernel, libc, coreutils, GCC, and so on. Now you need to build all of these things (or rebuild, let’s ignore bootstrapping for the moment).
Building everything is complicated partly because everything goes about it differently. The kernel has its own configuration and build system, a variety of things use autoconf but not necessarily with the same set of options to control things like features, GCC has a multi-stage build process, Perl has its own configuration and bootstrapping process, X is frankly weird and vaguely terrifying, and so on. Then not everyone uses ‘make install’ to actually install their software, so you have another set of variations for all of this.
This is good, but it does miss the biggest reason package managers exist: dependency hell. In short, imagine you’re installing a Linux system in the late 90’s or early 2000’s. You’d like to play music from your CD player, so you download a package and try to compile it, but realize that it’s missing a library. So you download the missing library and realize that to compile the library, you’ll have to upgrade an existing library in your system, so you upgrade, compile the library, and compile the music player application. Great, now you’ve got your music playing in the background, but now your web browser won’t launch because it depended on a specific version of the library you upgraded.
I’ve had this happen, and it was maddening. Having a centralized place that manages all the dependencies of a system was a godsend.
On another note, Chris' blog is excellent, I’ve been following it for a while. But the styling is so minimal it almost looks like there’s no css at all. In fact, I had to right-click and view source to verify. Turns out, Chris is using his own publishing system he calls “Dinky Wiki”, which I quite like.