rpm is Red Hat Linux Distribution’s package management system. The role of the package manager is the same, however the abbreviation rpm refers to two things: first, the package file format, and second, the software packaged in that format.
rpm was first intended to be used by Linux distributions. Then the format found its way to Linux Standards Base (LSB) and was accepted as a baseline package format. Working its way into LSB, rpm is used in many distributions, from Fedora to OpenSUSE, from Novell Netware to IBM AIX.
rpm Advantages and Disadvantages
rpm has a couple of advantages over the other package managers:
- the packages can be verified by GPG and MD5 cryptographically,
- original packages (tar.gz, tar.bz2) can be included in the source rpms (srpm) making package verification easier, especially for the critical applications such as ssh,
- delta (or patch) rpms, which are the incremental changes in the original rpm file, can be installed, making download sizes considerably smaller. If you have an application of 1 Megabyte in size and you have an incremental change of 100 Kilobytes, you do not need to download 1.1 Megabytes; you just download the 100 kilobytes of delta rpm and install it.
But rpm also has some disadvantages. “Circular dependencies”, which the packages mutually depend on, result in an “rpm hell” top of the list. Rpm itself cannot solve these circular dependencies unless the relevant parameters are specified with the rpm command. To overcome this problem, there are “wrappers” around the rpm tool to resolve the dependencies. Yum (Yellow Dog Update Manager), Urpmi (Mandriva’s Package Manager) and Zypp (or libzypp, a package management engine behind YaST of OpenSUSE and Zypper).
rpm Files and Folders
rpm works primarily with /var/lib/rpm, which is a central database of the installed applications. The backbone is a Berkeley_DB and multiple databases are created to speed up queries and indexing. The database keeps track of all the changes that the user does, enabling him to uninstall the package later on without any complications.
There is one downside to the rpm database: if a running rpm command is killed (by a user or say, a power outage), the database may become corrupt and it may become impossible to carry on. If an error message is received or the user is having difficulties with the rpm database, the only thing to do is to run the rpm - -rebuilddb command to rebuild the database.
rpm File Name Format
rpm files have a specific naming convention: --..rpm. Let’s give kdesvn, KDE’s Subversion client a look. The package name is kdesvn-1.0.4-2.1.x86_64.rpm, which says:
So the package is for 64-bit processors, 2.1 release of 1.0.4 version. The file name format gives the users the ability to check the rpm file contents at a glance.
The spec file that comes with a software package (which ends with .spec) tells us how to make an rpm package. A spec file typically has the following information:
- revision number
- steps to build
- meta data
- required files
- installation directories
- related file information (such as plug-in directories)
- change log
You can build rpm files yourself, which is an easy process given that the source code package you downloaded contains a spec file.
rpm Front Ends
There are many rpm front ends available in rpm-based distributions. However, they are a little bit different from apt: for example, instead of having Synaptic for all distributions, there is Yum Extender for Red Hat and Fedora distributions, YaST2 for OpenSUSE and derivatives, rpmdrake for Mandriva etc.. Nearly each distribution has its own graphical front end of rpm package management.
rpm Front Ends
rpm is a very powerful package manager which proved itself over the years. The latest releases and modifications allowed rpm to work with remote repositories, which enabled the user to download and install rpm packages with a single command, such as rpm -ivh ftp://some.repository.com/application_name.rpm. By some Linux enthusiasts, rpm is considered to be the most powerful and easy to use package manager. Personally I prefer apt over rpm.
This post is part of the series: Linux Package Management
In our series about the package management process in Linux, we will start from scratch, talk about the software packages, the dependencies, their resolutions and then analyze the package management systems of the mainstream Linux distributions.