on RPM’s

/* Begin Rant */

I don’t like them. I don’t like the way they are built, I don’t like they way they are executed, and in general I don’t like them. For those who don’t know, RPM’s are package files for installing software originally on Red Hat’s systems (the RPM stands for Redhat Package Manager). Maybe I’ve gotten used to the way Lunar & Gentoo do things – but I really don’t think its too much to ask to try to automatically resolve dependencies and install them if they are, say, in the same directory. Or at least tell me where to go to get them if you won’t go download them for me. But no, RPMs just tell you that an extra package is needed, and relies on you to go get it an install it. Sure, I could put all of the RPM’s on a single directory on a dvd and just rpm -Uvh *.rpm, but that’s a waste.

As to how they’re built – they need to have a file that lists all of the files the rpm is going to install – so they can remove them. Makes sense, but it doesn’t do this for you (at least not that I’ve seen). You have to do the installwatch stuff yourself! Lunar used installwatch, gentoo does some other magic (might be installwatch for all I know) and manages to do it all from source that its never looked at before! Why is it so complicated in rpms? And have you looked at the man page for rpm? It’s probably longer than mplayer’s, which does just about everything imaginable with video files except serve popcorn!

I don’t think everyone should build things from source – that’s far above some people, and far more than others care to bother with. But, if I do an rpm -Uvh httpd-devel, and it comes back saying it needs glibc-headers, then I find that and it needs glibc-kernheaders, and I find that and then it needs kernel-headers for my currently running kernel – I think that’s just pathetic!

/* End Rant */

One Comment

  • Certinaly not intended to detract from your rant on RPM’s as they do indeed suck, there is a possible fix for certain RPM occasions. Assuming you are using Fedora or CentOS, you can do a ‘yum localinstall ‘ and yum will attempt to resolve dependencies and even download the required packages if they are located in the enabled repositories. From the man page:

    localinstall
    Is used to install a set of local rpm files. If required the enabled repositories will be used to resolve dependencies.

    This is still a stopgap sort of measure though. It’s intended for people who package nonstandard RPM’s that aren’t located in the yum repo’s but build off the repository dependency trees. It works for some packages.

Leave a Reply