“Dependancy Hell” isn’t a Linux Problem it’s a RPM problem. Debian, Gentoo and Slackware distro’s don’t suffer from this problem, only distributions that depend on RPM. It’s time for RedHat to either fix the broken package manager or ship one that works. Let’s look at some of the problems with RPM.
RPM handles dependancies poorly
Who hasn’t downloaded an RPM andrpm -ivhvv package.rpm only to have it tell you that it needs another RPM. And then you download the new RPM and it tells you that it requires package-X to run so you have to download another RPM to satisfy the dependancy of the dependancy which may not be the correct version for your version of RPM, and so on and so forth. Why didn’t the first RPM tell you all of the extra software you would need to install?
The default behaviour of RPM is to tell you what dependancies the package you are installing requires and that’s it. It doesn’t care if you have the associated libraries and programs installed that the extra package requires. It doesn’t care what hoops you have to jump through, it just knows that it needs this one thing and you had better get to it before it’s gonna do anything. Sure you can force it to install, you can tell it to ignore the dependancies, but that will just cripple the software you’re trying to install, and eventually the entire system, so it’s not really a solution.
RPM handles upgrades poorly
None of the RPM-based distrobutions make the claim that you can upgrade your system trouble free. In fact, Mandrake User came right out and said, “While RPM is good at updating some packages once in a while, a system-wide upgrade is a much heavier task. It works surprisingly well for most people but provides a lot of problems for a few.”A package manager should not, under any circumstance, break your system because it was used to do a upgrade, which is it’s primary purpose in life. Sadly, this is expected behaviour from RPM. RedHat rewrote the RPM Package Manager from 3.x to 4.x without backward compatibility, and who’s to say it won’t happen again when 5.x is released. This requires users to check that an RPM is compatible with their distribution, the specific version of that distribution and with the version of the RPM package manager that comes installed with that specific version of that distribution. Who needs all of these headaches?
“You can’t polish a turd”
There are people who use RPM-based distros that are aware of the dependancy problem and haven’t taken the traditional ostrich approach (i.e. stick your head in the sand and deny the existence of a problem, if users have problems, it’s because they are too stupid to figure it out). Most notably, Mandrake created urpmi, an “apt-get”-like command line utility, that resolves basic dependancies on which the RPM Package Manager normally fails.Urpmi is an excellent tool. Unfortunately, it’s not a replacement for RPM, merely a band-aid on an already broken package manager. Urpmi routinely fails with various error messages and still chokes if the RPM you choose to use wasn’t packaged for your particular version of Mandrake.
Debian’s apt has been ported to RPM-based distributions as apt4rpm. Unfortunately, apt4rpm also suffers the same problems as urpmi as it relies on the shoddy rpm packages to install software, or, to quote the Apt4RPM FAQ: Are all rpm problems eliminated? No, the availability of apt-get doesn’t eliminate all RPM-related problems (most notably Red Hat’s tendency to make gratuitous and backward-incompatible changes in the RPM format).
So it doesn’t really matter what solution you use to manage the “dependancy hell” problem because, ultimately, you still have to deal with a package manager that’s stupid.
More realistic solutions
The ideal solution is for RedHat to fix their brain dead package manager, but that’s not gonna happen. You stand a better chance of being stalked by lingerie models than RedHat fixing RPM. What, then, can a user do to avoid the problem of dependancy hell? Switch to a distribution that has a package manager that does software/system upgrades in a safe and sane manner.Slackware’s swaret, Gentoo’s portage or Debian’s apt are all demonstrably better upgrade mechanisims. Slackware and Debian have excellent binary package installs. Gentoo also has binary package installs, but it’s strength is in it’s BSD portage-like installation where it compiles packages from source.
Developers would be better off spending their time on improving one of these three package managers to make them more user-friendly for new users rather than to waste time and effort on building a pretty front-end on a broken piece of software who’s creators have no intention of fixing.
It’s time for RedHat to step up and fix RPM or the community needs to let RPM sink.
Posted by Philip McClure in Computing Woes Linux Rants on June 27, 2004