www.rpm.org
The RPM Package Manager (RPM) is a powerful command line driven package management system capable of installing, uninstalling, verifying, querying, and updating computer software packages. Each software package consists of an archive of files along with information about the package like its version, a description, and the like. There is also a related API ("Application Program Interface"), permitting advanced developers to bypass 'shelling out' to a command line, and to manage such transactions from within a native coding language.
This site seeks to collect and provide pointers to content about RPM, and also aims to bring you the latest and most up to date information on the RPM software packaging tool. RPM is commonly found in the Linux computer operating system environment, but has been extended far beyond those initial confines.
A subset of the full RPM package featureset is the baseline standard packaging format specified by the Linux Standard Base (which has as some of its goals to: "increase compatibility among Linux distributions and enable software applications to run on any compliant Linux system.")
--------------------------------------------------------------------------------
Status and Versions
The current release, RPM-4.1, shipped in Red Hat Linux 8.0, and has growing pains. Some people are experiencing symptoms of a 'hung' process. In some instances, rpm will indicate a need to 'recover' its database. See: here for a discussion and fix. See also generally: here for other errata.
The current latest production release is: 4.1 (ftp). RPM-4.1 made its first production release September 17, 2002.
The next developmental release will be at: 4.2 (not yet there). The stated early (10 November 2002) roadmap for that new release is to include:
a) file classes (think: sanitized file (1) output in dictionary, per-file
index).
b) file color bits (think: 1=elf32, 2=elf64).
c) attaching dependencies to files, so that a refcount is computible.
d) replacing find-{provides,requires} with internal elfutils/file-3.39.
e) install policy based on file color bits
f) --excludeconfig like --excludedocs with the added twist that
an internal Provides: will be turned off, exposing a Requires:.
This will provide a means to install all %config files from a separate
package if/when necessary.
and teaching tripwire to read file MD5's from an rpm database.
--------------------------------------------------------------------------------
Resources to obtain the programs and source code for free
The RPM FTP site (ftp) has the source code and prebuilt binaries for all the releases of RPM available. RPM is and has always been released under the Free Software Foundation General Programming License (Gnu GPL). This means that the source code is freely available for copying and use without restriction beyond a requirement of subsequent corresponding release of source code when changes are made and the programs released to others.
--------------------------------------------------------------------------------
Documentation
There are several documents on RPM available. The most comprehensive and systematic treatment within these is is Maximum RPM, a book written by Ed Bailey. It is available in hardback (442 pages), and has recently been re-printed by Sams in softcover (450 pages - ISBN: 0672311054). The hardcover edition includes a quick reference card.
As noted above, the Linux Standard Base have specified an older implementation featureset as the baseline 'standard' for producing interoperable binary format software packages as set out in that book. The Maximum RPM book covers everything from general RPM usage to building your own RPMs to programming with rpmlib. While not keyed to the latest versions, the underlying concepts and examples remain substantially unchanged.
You can also download the compressed file of it in PostScript or LaTeX. A copy is PDF form is also included on the Documents CD with complete Red Hat boxed sets of its Linux distribution. The SGML source retrieval instructions are on the CVS page.
The next version of "Maximum RPM" is under sporadic development. Packages for the work in progress are available here (ftp), and an online copy is here. That said, the best place for fast and knowledgable answers to RPM usage questions (after research) is the various mailing lists.
In addition, version 4.1 of the rpm API is online here, created with the doxygen tool. The rpmlib API documentation is also always available in the rpm-devel package.