For the sake of discussion, I usually identify three major ways of installing programs. First, we have the Linux method, using package management tools like dpkg and yum to install .deb and .rpm packages. Then there's the Windows method, using built-in installers and uninstallers that install a program in the desired location. Lastly, we have the Mac OS X method of using application bundles (but mingled with programs using an installer that cannot be uninstalled).
All of these methods are inherently flawed, are evil, and have front-row seats in hell (and I know because they stood behind me in the queue). I've already discussed this in great detail in my article on the utopia of program management, but let me repeat the segment on what's wrong with current implementations of package management:
The Windows world is not much better off - in fact, it is probably worse. Not only does it have to deal with the same problems as OS X, it also has too deal with dreadful installers. Some of them are such usability disasters they make me want to curl up in foetal position and cry. And then, when I'm done crying, I can start all over again because the uninstallation procedure is just as dreadful.
This leaves us with the Linux world. They have the centralised, easy updating application - the update application in for instance Ubuntu is an excellent example of proper balance between providing enough technical information for experts, but still hiding all that fluff from normal users. However, Linux suffers from other problems. Dependency hell, while not nearly as huge a problem as it used to be, still exists to this day. Downloading a package outside of the repositories is a risky business, but it really shouldn't be. You are completely dependent on your distributor updating his repositories and keeping them clean - nothing is as annoying as knowing there is a new version of Super Awesome Garden Designer Ultimate Edition, only to realise all the distributions except yours already packaged it.
These limitations still stand. Defending one method over the other comes across to me as a deaf man trying convince a blind man that being deaf is less of a problem than being blind; while he may be right, it's a rather pointless discussion for those that are blind nor deaf.
What I'm trying to say is this: sure, Mac OS X, Windows, and Linux users can chest thump over who has the best method of program management, but it's all for nought: none of those methods will get better this way. The only way to truly move program management out of the dark ages is to start from scratch, and implement something that has been thought through in a way that it incorporates the needs of the many (easy to use, no fuss), but also caters to the needs of the few who need more advanced functionality.
My utopia of program management (be sure to read the comments, lots of interesting stuff in there as well as more information on the CLI side of my system) is just one way of doing that (Haiku is working on a system quite like what I have in mind), but I'm sure there are others. The point, however, is that arguing over the current method of management is kind of pathetic. They are all either blind, deaf, or paraplegic.