|What are your experiences
with the RPM package format? Do you install/uninstall RPM packages
frequently? Do you upgrade every time a new release comes out? If
so, does it go smoothly? Have you ever switched to an RPM-based distribution
form Debian or Slackware? Have you tried other packaging formats?
Have you tried source-based distributions?
|1. Look ma, a binary RPM!|
|You have just found this great software on the Internet
and off you go to download and install it. It's all free and GPL and,
as luck would have it, the author provides a binary package in RPM
format. It doesn't take long to download it, then you run the customary
rpm -Uvh package-name.rpm command. OOPS! The installation fails,
reporting a missing dependent package without which it will not install
or function correctly. Off you go again to search the Internet for
the missing library.
Unfortunately, installing that missing library fails because of three
other missing libraries and two other libraries that come in incorrect
versions. Depending on how badly you want the original package, you
have two choices - either go and search for all missing dependent
libraries as well as all libraries dependent on the dependent libraries,
or you just give up. How many times have you given up?
If you are persistent and lucky, you might eventually install the
RPM package. If you are persistent and not lucky, then you have probably
acquired a few bumps from banging your head against the nearest wall
in sheer desperation. RPM dependency hell can be a hugely frustrating
experience - anything from circular dependencies (the catch 22 situation)
to incorrect library version when there wouldn't be much left untouched
had you really persisted in getting that badly wanted RPM installed.
|2. Some basic assumptions|
|Although I am going to make some strong anti-RPM
statements in the rest of the article, please note that question mark
in the title. I want to know how other people feel about the issue
and consider possible solutions. I hope to get this article on Slashdot
or NewsForge, so that I can get some feedback and there is also my
e-mail address at the bottom. Don't write if you've only ever used
an RPM-based distribution, but if you have experienced other packaging
formats such as Debian's DEB and Slackware's TGZ or used a compile-everything-from-source
distribution, then I would like to hear your views.
Also note that this article refers to a Linux desktop, not server.
A server does not need frequent updates or new packages and it does
not normally suffer from the user's whims to try out all the latest
and greatest as it emerges from minds of talented developers. There
is absolutely nothing wrong with an RPM-based distribution powering
I am going to mention the word "Mandrake" a few times, simply
because this word is synonymous with the Linux desktop. By no means
is Mandrake the only party causing us great grief with its package
format; SuSE, Lycoris and of course Red Hat, just to name a few, are
equally guilty. But as the world's most popular desktop Linux distribution,
it will have a dubious honour to represent all of the RPM distributions,
for the sake of simplicity.
Lastly, I will also mention the words "Gentoo" and "Sorcerer" several
times as the two most prominent source-based distributions. Please
note that the term "Sorcerer" will not only refer to the original
project of the same name, but also to its two current forks of "Lunar
Linux" and "Source Mage GNU/Linux".
|3. What's wrong with RPM?|
| Four things. Upgrading an RPM-based distribution
is risky at best, it has created enormous fragmentation between distributions,
the developers are forced to take this fragmentation into account
when creating binary packages and it is directly responsible for bumps
our foreheads. There is at least one distribution (ESware) that has
moved from RPMs do DEBs, but I don't know of any movement in the opposite
direction. Similarly, there are many users who have moved from RPMs
to DEBs, but very few who have chosen the opposite path.
|3.1 How not to upgrade an RPM distribution
| Have you ever noticed how reluctant all RPM-based
distributions are to support upgrades? You won't find any firm assertion
on any of the RPM distributions' web sites stating that upgrading
an existing installation is fully supported and guaranteed to be trouble-free.
It's quite the opposite and for a good reason - just have a look at
SuSE's mailing list to know that upgrading a previous release is hardly
a walk in the park. This quote comes from a document called
a Distribution Update found on
User: "RPM problems. 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." Vanilla
installs - yes, but if you've upgraded a few packages, compiled something
from source and installed a few commercial programs, you are running
a considerable risk by attempting the upgrade.
On the other hand, have you noticed how hard it is to find Debian
ISO images? They are hidden behind layers of pages, each of them just
about questioning your sanity as to your desire to download these
huge files. Have you got an existing Debian installation? Then why
on earth do you need a new ISO set? No, with Debian, you only ever
install once; upgrades are not only fully supported, but strongly
encouraged. If asked, Debian users will shake their heads in disbelief
that you, as a Mandrake user, have to download 2GB of software every
6 months and then run a risky upgrade just to get your system up-to-date.
In short, RPM-based distributions are difficult to upgrade with the
number of reported failures unacceptably high. This is the first indication
that there is something terribly wrong with the way the system is
|3.2 All your RPMs are belong to you and only you|
|"Not long ago, an RPM would
work, period. The only possible concern was whether it was built against
libc5 or glibc. Now you typically need to find an RPM for not just
your distribution but also for a particular version of the distribution.
This causes problems and these problems are bad for Linux because
they make things far too complicated for the user. Why do they exist?
Because distributions are fighting over Linux the way goldfish fight
over the little flakes of food - paying no attention to the cat lurking
outside, ready to take a swipe with its paw." These are
words of Dennis Powell of Linux
Another aspect causing us endless headaches have been
up by Kevin Clevenger of Beehive Linux: "Why
not use RPM as a package format? Because whatever server or workstation
you're working on at the moment always has the wrong version of RPM."
I couldn't agree more. Many of you will have remembered that the RPM
Package Manager went from 3.x to 4.x without backward compatibility
and upgrading it was an arduous task, to put it mildly. Of course,
you never know when Red Hat pulls up a similar trick and releases
To sum it up, before installing an RPM package, check that it is compatible
with your distribution, with your version of the distribution and
with your version of the RPM package manager. I wish you luck.
|3.3 Do software developers love RPM?|
|A good person
ask is Shawn Gordon of The Kompany: "Depending
on your distribution you've got KDE in /usr, /opt/kde, /opt/kde2 or
god knows where. For packaging everyone decided to make a new name
for the directory between /usr/src and /RPMS, you've got 'redhat',
'OpenLinux', 'RPM', 'rpm', 'packages' and those are just the ones
I've noticed myself. We are getting to the point that we are seriously
considering not supporting distributions that don't support the LSB.
I've been very encouraged by SuSE's work in this direction, and disappointed
at how bad Red Hat and Mandrake are."
Of course, choosing to ignore Red Hat and Mandrake users would hardly
be a wise move. So rather than providing a myriad of different binary
RPMs for the dozens of different Linux distribution, The Kompany,
which is a commercial entity developing Linux applications, reluctantly
decides to give away the source code to paying customers. They still
make RPMs for a few popular distributions, but the endless queries
from people using Linux From Scratch-type distributions was apparently
giving a lot more headaches than the dangers of revealing the source
code and facing a possible misuse of it.
In short, you cannot possibly expect developers to spend time on
creating dozens of different RPMs. I for one would much rather let
them focus on their development efforts.
|3.4 The next great flight - from Mandrake to Gentoo|
|There is growing evidence that users are abandoning
Mandrake in favour of Gentoo! While this might sound like a sensationalist
statement and I have no means to back it up with representative statistics,
as a maintainer of a popular distribution-related web site, I can
sense the discontent. Because you can only bang your head against
the wall so many times, but sooner or later you will need to take
an action. If RPM doesn't work for you, get something that does.
Gentoo went from a little-known distribution to a major player within
months of its first official release. This site's Page Hit Ranking
on the front page records all hits for the past 8 months or so, but
if I had only kept the statistics for the last three months, Gentoo
would have been on top by a large margin. And let's not forget Sorcerer,
another source based distribution, which has been on the very top
You have to ask yourself - where are these users coming from? Gentoo
is not easy to install, even with the excellent instructions provided
you still need to be pretty familiar with Kernel internals to get
all your hardware work. You need to make decisions whether to enable
Unix98 PTY support and magic SysRq key, get familiar with Grub and
load the correct module for your network card. Surely, a daunting
task if your entire previous computing experience was gained from
using Windows! Mandrake makes all those tricky decisions for you,
Gentoo does not. No, all these new Gentoo users are not users abandoning
Windows. They are users who have been around Linux for some time,
many of them still have visible bumps on their foreheads. They are
ex-Mandrake users, trust me on this one.
Mandrake is an excellent distributions for novice users and for those
who are looking at acquiring fast knowledge about this fashionable
operating system. With its brilliant community, support, mailing list
and mandrakeuser.org, its open and honest approach, with the attitude
of accepting criticism and trying to act on it, you will not find
a better way to start your Linux adventures. But once you pass a certain
level of expertise, you will be ready to move on. The RPM dependency
hell is likely to be the main reason.
|4. Finding the way out of this mess|
|Let us consider some solutions. This is where I hope
the Slashdot/NewsForge discussion will focus on - it is too easy to
complain about something, but not so easy to find answers. After all,
Mandrake and Red Hat people are always around these forums so hopefully
they will learn something from the discussion. So if you are like
me and hate RPMs, what are our options?
|4.1 Build your own RPMs|
|This is not really a solution for the majority of
Linux users. The whole idea of installing software is that it should
be fast, easy and trouble-free. Building your own RPMs, while not
impossible, is not an easy task and you still need to take into account
dependencies and understand the layout of your particular distribution.
If you have nothing better to do, you can learn all there is from
Maximum RPM. For the rest
of us, let's look at other solutions.
|4.2 Use urpmi|
|It is actually a bit unfair to bash Mandrake for
its RPM policy as, unlike most other distributions, they are aware
of the problems associated with RPMs. They have created urpmi
(see the glossary on the right) which complements the RPM package
manager by resolving and installing missing dependencies automatically.
Unfortunately, it is still far from perfect. You might have had a
better experience, but for me, urpmi still routinely fails
with various error messages. It seems that the idea is sound, but
the implementation is lacking.
Of course urpmi will not solve the major concern that if the
RPM was not built for your version of Mandrake, it will still be of
|4.3 Use apt-rpm or apt4rpm|
|This is a more interesting approach, first implemented
by Conectiva Linux and later also adopted by SuSE and the CLE project.
The idea is that you will be able to upgrade packages in a fashion
similar to Debian's. You will have a database of resources (usually
maintained by, but not limited to the distribution itself) which you
can update at any time. You can then simply update packages selectively
or update all installed packages to the latest versions, Debian style.
All dependencies will be resolved automatically.
The disadvantage of this approach is that, unless your distribution
enjoys a large community support, you are limited to the resources
created by the distribution. This works nicely with Debian, which
is a massive project with enormous number of contributors and it would
work nicely with Mandrake, which has the required user base and many
people who are willing to contribute. Small distributions such as
Conectiva or CLE might struggle. Let me reiterate here that, because
of the differences in the way RPM is implemented in different distributions,
apt-rpm does not work universally across all RPM-based distributions,
but rather its infrastructure has to built for each distribution separately.
If you are still willing to try it, check the links on the right.
But don't run to Red Hat for support if something goes wrong. As the
explains: "Are all RPM problems eliminated
by using apt4rpm? 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)."
|4.4 Petition the RPM distributions
|"Dear RPM-based distribution.
Please get together with all other RPM-based distributions and work
out a common standard so that a binary RPM package installs safely
on any RPM-based distribution. Take a look at LSB guidelines and stick
to them religiously. If you don't like the standard, initiate a discussion
forum to improve on it. Please don't ignore us, the users. Don't let
your pride and drive for profit cloud your thinking, don't give us
any more headaches. Let's work together on this one. Yours Sincerely..."
Yeah, right. Forgive me my scepticism, but I just don't see how the
distributions are going to bend over to offer concessions to each
other. The main ones have gone too far with their distribution model
for a change to be practical. The United Linux initiative seemed exciting
at first until you remembered that Red Hat and Mandrake, the two biggest
RPM-based distributions were effectively excluded from the deal. Besides,
they openly admit that they don't care about the desktop, don't care
about you and me.
|4.5 Switch to Debian
|Debian is a great project loved by its users and
followers. Just to recap, the Debian package management system consists
of several utilities, of which its front-end called apt-get
is the best known. It allows for seamless updates of individual packages
or for a system-wide upgrade of the entire distribution to a newer
version. It resolves all dependencies automatically.
Many people dismiss Debian because their "stable" version
is so out-of-date. While this is true, you are looking at a super-stable
and well-tested Linux distribution. If you are looking to install
something on the desktop, you don't have to be afraid of the "testing"
or even "unstable" branch - the names sound a lot worse
than they are. A simple command or a cron job will keep your machine
highly up-to-date, if that's what you want.
I have been running the Debian's unstable branch on my main production
machine at work for quite some time. The box has not been rebooted
for 211 days, despite routinely updating all installed software a
couple of times a week. 211 days! If Debian developers call this 'unstable',
I wonder how they'd refer to that other operating system! To be fair,
there have been 'gotchas' (once I lost all my KDE icons on toolbars
and did not get them back until 2 days later after an apt-get upgrade)
and you need to be aware that the security issues are not dealt with
as promptly as they are on the stable branch. But Debian unstable
is definitely a viable alternative on the desktop.
|4.6 Switch to Slackware
|Quoting Dennis Powell again, from the recently published
for a distro: "If the excitement
of Linux has seemed lacking lately, or if you're new to Linux and
find it to be more Windows-like than you expected, or if it seems
that distributions are not interested in you, maybe you'll do what
I plan to do: get Slackware 8.1 as soon as it's released, and play
with it for a while, learn its quiddities, and see if it fits. And
if it does, buy the set from the Slack store, because unless we shake
this idea that Linux users are freeloaders, we'll deserve the lack
of attention we're receiving from the 'big guys.'"
Yes, the good ol' Slack. Many users remember the old days when Slackware
was considered the best. Is it going to become the best again? In
these times when we are increasingly faced with prospects of a) some
distributions doing everything to make Linux look like Windows and
b) others creating 'features' incompatible with any other distribution,
even any other version of their own distribution, it's refreshing
to know that Slackware is still around.
Because luckily, Slackware did not change over the time - its ChangeLog
format or installer are exactly the same as they were five years ago.
Slackware does not try to attract you with fancy utilities and 'ease-of-use'
diatribe. Instead, as the oldest surviving distribution, they have
the experience and ability to create a very stable distribution that
can safely and proudly occupy your desktop machine. And don't be fooled
by that low profile status that the Slackware developers and community
have seemingly chosen to exist in. On LinuxToday, you will find a
lot more references to Lindows than Slackware these days, but the
Slackware community is alive and well, choosing to work rather than
using every opportunity to propagate senseless hype.
|4.7 Switch to Gentoo/Sorcerer
|This is a trend which is hard to stop. While the
initial effort of installing a source-based distribution might scare
some people away, the return on this investment will shower you with
I am only going to say it once, so read carefully. All those people
who keep moaning about how hard it is to install stuff on Linux, will
stare in awe at the beauty and simplicity achieved by Gentoo and Sorcerer
and their installation methods. All you do is emerge package-name
or cast package-name, then you can put up your feet and have
a cup of coffee (or continue working - the choice is yours), while
the packages are fetched, compiled and installed. This, folks, beats
any "user-friendly" Windows installer any time!
It's because Linux is so beautiful, powerful and infinitely flexible.
You can emerge/cast a large and important system library like glibc,
but you do not have to stop working and watch the compilation messages.
You can continue working as normal - your system will not be affected
beyond slight performance degradation during the compilation process.
You can emerge/cast a complete new KDE version with a single command,
but your existing KDE installation will be happily humming along as
before. If you still feel uncomfortable with this approach, you can
start emerging/casting just before you go to sleep or work. You can
even do it in a chroot-ed environment, where you can build
up a complete Linux system on another partition! But I am getting
carried away a bit here...
This is the main reason why we have seen so many new Gentoo/Sorcerer
users, finally free from the RPM madness!
In the interest of fairness, there are disadvantages to this approach
too. Because of the cutting-edge nature of these distributions, upgrading
a package may occasionally lead to unexpected results. Gentoo's chief
architect Daniel Robbins is quite
honest about it: "Gentoo Linux is
currently a 'bleeding-edge' type distro. It makes Gentoo Linux the
ideal distribution for hobbyists who get lots of cool toys before
everyone else, but makes Gentoo Linux a questionable choice for production
server environments." Many beta and untested stable
packages are finding their ways into the source tree which can cause
occasional glitches. Of course, the package installation process is
entirely up to the user, so if you choose the betas, you will have
to live with them.
Overall though, the pros far outweigh the cons and the pleasure and
convenience of installing software and compiling it against your hardware
is hard to beat. Not to mention the total absence of RPM-induced headaches...
|In its current state, the Red Hat's RPM Package Manager
is inadequate for the majority of Linux users who use Linux on their
desktops. Installations of RPM packages are often complex and time-consuming
and they frequently fail to complete. This is a serious issue hindering
the progress of Linux adoption on the desktop. The main RPM-based
distributions should get together and work on a common standard, otherwise
we will see an increasing trend among more experienced Linux users
to migrate to non-RPM binary distributions or to source-based distributions.
|While the RPM Package manager is not inherently flawed,
the way it has been implemented on various RPM-based Linux distributions
have created major inconveniences for the desktop end user:
1. An RPM-based distribution is risky to upgrade.
2. A more complex binary RPM package is often hard, if not impossible
3. The incompatibilities between different versions of the RPM Package
Manager added another layer of complexity.
4. The developers are forced to consider differences between distributions
and create multiple binary packages.
The following solutions have been suggested:
1. Learn to build your own RPMs.
2. Petition the RPM distributions to adhere to common standards.
3. Use more advanced package management tools, such as urpmi
4. Switch to Debian or Slackware.
5. Switch to a source-based Linux distributions, such as Gentoo or
|Copyright (C) 2002 Ladislav
Verbatim copying and distribution of this entire article is permitted
in any medium, provided this copyright notice is preserved.
|Advanced Package Tool, Debian's next generation front-end
for the dpkg package manager. It provides the apt-get
utility and APT dselect method for simple, safe way to install
and upgrade packages.
|A port of Debian's apt-get to work with RPM-based
distributions, originally developed by Conectiva Linux.
|Another port of Debian's apt-get.
|A Debian "package", or a Debian archive
file, contains the executable files, libraries, and documentation
associated with a particular suite of program or set of related programs.
Normally, a Debian archive file has a filename that ends in .deb.
|General Public License, often referred to as "copyleft".
GPL software is freely available in source code form and it can be
shared, modified and distributed. The vast majority of Linux software
is published under GPL.
|Linux Standard Base. Its goal is to develop and promote
a set of standards that will increase compatibility among Linux distributions
and enable software applications to run on any compliant Linux system.
Details, home page.
|Binary software packages for Linux come in different
flavours, the most popular being RPM, DEB and TGZ. This
table has some interesting details.
|Often referred to as "Red Hat Package Manager",
it actually stands for "RPM Package Manager", in line with
similar recursive acronyms found in Linux world. Developed by Red
Hat Linux to simplify software installation on its systems.
|Source vs. Binary
|Both packages offer advantages and disadvantages.
The debate is ongoing, take a look at this interesting
|The source code. By convention, the src extension
of a file indicates that the file contains a source code. While there
may be many binary packages in various formats, there can only be
one source code. Different releases are distinguished from each other
by version numbers.
|A very simple package format used by Slackware Linux.
It is basically a set of files, including an installation script,
tarred and compressed with gzip.
|Developed by Mandrake Linux, urpmi is an RPM wrapper,
handling dependencies and making installation of RPM packages easier.