Why isn't there a truly unified package manager for Linux?

First of all, there is. The problem is not that there is no unified package manager, the problem is there are ten of them – seriously.

Let's take my favorite: poldek. It's a user front end for package management that can run on several different distros and manage either rpm or deb packages. Poldek doesn't do the stuff rpm does (it leaves that to rpm) and just sends the right commands without the user having to figure out all that mess.

But the problems don't stop there. Everybody has a different idea of what a user front end is supposed to look like and how it should function and what options it should expose. So other people have written their own. Actually many of the package front end managers people use in common distros today are able to handle more than one backend.

In the end, however, the problem (or advantage) is people like things to function exactly the way they want, not in some meta-fashion that tries to satisfy everybody only to fail to really make anybody happy. This is the reason we have umpteen gazillion distros in the first place. It's the reason we have so many different Desktop Environments and Window Managers (and the fact those are actually different kinds of things at all).

There are still outstanding proposals for ways of writing universal packages or having a manager that understands them all or having an api for converting one to the other ... but in the end Unix is best when used according to its philosophy ... each tool does one thing and does it well.

Any time you have a tool that tries to do more than one thing, it ends up being not as good at one of them. For example, poldek sucks at handling deb package dependencies.


In short: because each distribution uses different approach to package management. They are simply not compatible. Management strategy that works best for Ubuntu will have little sense on Arch etc. A "universal" (distribution-independent) package manager would be just an additional layer of user interface, that would never work as good as each distribution's specific manager.

So, using your own words, it is hard to do and therefore not practical - also because hardly anyone would benefit from it.


Historical reasons, mainly. Several package management systems got established around the same time - particularly .rpm and .deb. Each has its adherents and each is good enough that no single package manager has a compelling advantage. The distributors certainly won't see the point in a ground-up rebuild of their system to implement a different package manager.

This also would require each package within the system (10,000's in the case of debian) to be rebuilt. It would also require a smooth migration system to be implemented so that users of the system could go from the old to the new package manager. The effort to migrate would be infeasibly large, and exponentially larger to test the migration, so you would almost certainly get many breakages. This would generate many irate punters.

Each distro maintains its own set of dependencies based on what was built for that release. A universal package repository will be too hard to coordinate amongst the distributions as dependency conflicts are almost certain to arise. Therefore the actual benefit of a unified package management system (universal packages) will be impossible to realise in practice anyway.

Finally, who gets to choose the universal standard package manager? The XKCD comic referenced in the comments on the OP summarises the usual failure mode in this type of exercise. Standardising this sort of thing would be very political and likely to result in something that is not usable, or so deeply flawed that it spawnes yet another round of handwringing about standards - if the parties can come to an agreement at all.

So, basically it comes down to: too political, too hard, too risky and no benefit to be realised by doing it.