- RPM Package Manager
-
RPM Package Manager (RPM) Original author(s) Red Hat Developer(s) Community[1] Stable release 4.9.0 / March 2, 2011 Operating system GNU/Linux, Unix-like Type Package management License GNU General Public License Website http://rpm.org/ http://rpm5.org/ RPM Package Manager (RPM) is a package management system.[2] The name RPM variously refers to the .rpm file format, files in this format, software packaged in such files, and the package manager itself. RPM was intended primarily for GNU/Linux distributions; the file format is the baseline package format of the Linux Standard Base.
Originally developed by Ethan "E$" Cohen at Red Hat for Red Hat Linux, RPM is now used by many GNU/Linux distributions. It has also been ported to some other operating systems, such as Novell NetWare (as of version 6.5 SP3) and IBM's AIX as of version 4.
Whereas an RPM typically contains the compiled version of the software, an SRPM contains either the source code corresponding to that RPM or the scripts of a non-compiled software package.
Originally standing for Red Hat Package Manager, RPM now stands for "RPM Package Manager", a recursive acronym.
Contents
Features
For a system administrator performing software installation and maintenance, the use of package management rather than manual building has advantages such as simplicity, consistency and the ability for these processes to be automated and non-interactive.
A typical RPM repository (the place where the packages are made available publicly) contains thousands of free applications.
Features of RPM include:
- RPM packages can be cryptographically verified with GPG and MD5
- Original source archive(s) (e.g. .tar.gz, .tar.bz2) are included in SRPMs, making verification easier
- PatchRPMs and DeltaRPMs, the RPM equivalent of a patch file, can incrementally update RPM-installed software
- Automatic build-time dependency evaluation.
Local operations
Packages may come from within a particular distribution (for example Red Hat Linux) or be built for it by other parties (for example RPM Fusion for Fedora).[3] Circular dependencies among mutually dependent RPMs (so-called "dependency hell") can be problematic;[4] in such cases a single installation command needs to specify all the relevant packages.
Front ends
There are several front ends to RPM that ease the process of obtaining and installing RPMs and in resolving their dependencies. These include:
- yum used in Fedora, CentOS-5, Red Hat Enterprise Linux 5 and above, Scientific Linux, Yellow Dog Linux and Oracle Linux.
- up2date used in Red Hat Enterprise Linux and CentOS (CentOS-3 and CentOS-4).
- Synaptic Package Manager used in PCLinuxOS
- Zypper used in MeeGo[5], openSUSE and SUSE Linux Enterprise
- urpmi used in Mandriva Linux an Mageia
- apt-rpm, a port of Debian's Advanced Packaging Tool (APT) is used in Ark Linux[6]
- Smart Package Manager, used in Unity Linux, available for many distributions including Fedora
Local RPM installation database
Working behind the scenes of the package manager is the RPM database, stored in
/var/lib/rpm
. It uses Berkeley DB as its back-end. It consists of a single database (Packages
) containing all of the meta information of the installed rpms. Multiple databases are created for indexing purposes, replicating data to speed up queries. The database is used to keep track of all files that are changed and created when a user (using RPM) installs a package, thus enabling the user (via RPM) to reverse the changes and remove the package later. If the database gets corrupted (which is possible if the RPM client is killed), the index databases can be recreated with therpm --rebuilddb
command.[7]Description
Whilst the RPM format is the same across different Linux distributions, the detailed conventions and guidelines may vary across them.
Package filename and label
An RPM is delivered in a single file, normally in the format:
- <name>-<version>-<release>.<architecture>.rpm
such as:
- libgnomeuimm-2.0-2.0.0-3.i386.rpm
Source code may also be distributed in RPM packages; the architecture part is specified as <src>:
- libgnomeuimm-2.0-2.0.0-3.src.rpm
RPMs with the noarch.rpm extension refer to packages which do not depend on a certain computer's architecture. These include graphics and text for another program to use, and programs written in interpreted programming languages such as Python programs and shell scripts.
The RPM contents also include a package label, which contains the following pieces of information:
- the software name
- the software version (the version taken from original "upstream" source of the software)
- the package release (the number of times the package has been rebuilt using the same version of the software). This field is also often used for indicating the specific distribution the package is intended for by appending strings like "mdv" (formerly, "mdk") (Mandriva Linux), "mga" (Mageia), "fc4" (Fedora Core 4), "rhl9" (Red Hat Linux 9), "suse100" (SUSE Linux 10.0) etc.
- the architecture the package was built for (i386, i686, athlon, ppc, etc.)
The package label does not necessarily need to match the name of the file.
Library packaging
Libraries are distributed in two separate packages for each version. One contains the precompiled code for use at run-time, while the second one contains the related development files such as headers, etc. Those packages have "-devel" appended to their name field. The system administrator should ensure that the versions of the binary and development packages match.
Format
The format is binary and consists of four sections:[2]
- The lead identifies the file as an RPM file and contains some obsolete headers.
- The signature which can be used to ensure integrity and/or authenticity
- The header contains metadata including package name, version, architecture, file list, etc..
- A file archive, which usually is in cpio format, compressed with gzip. The rpm2cpio tool enables retrieval of the cpio file without needing to install the RPM package.[8]
SPEC file
The "Recipe" for creating an RPM package is a spec file. Spec files end in the ".spec" suffix and contain the package name, version, RPM revision number, steps to build, install, and clean a package, and a changelog. Multiple packages can be built from a single RPM spec file, if desired. RPM packages are created from RPM spec files using the rpmbuild tool.
Spec files are usually distributed within SRPM files, which contain the spec file packaged along with the source code.
SRPM
A typical RPM is pre-compiled software ready for direct installation. The corresponding source code can also be distributed. This is done in an SRPM, which also includes the "SPEC" file describing the software and how it is built. The SRPM also allows the user to compile, and perhaps modify, the code itself.
A software package may contain only scripts that are architecture-independent. In such a case only an SRPM may be available; this is still an installable RPM.
Forks
As of June 2010[update], there are two versions of RPM in development – one led by the Fedora Project and Red Hat, and the other by a separate group led by a previous maintainer of RPM, a former employee of Red Hat.
RPM.org
The rpm.org community's first major code revision was in July 2007; version 4.8 was released in January 2010, and 4.9 in March 2011.
This version is used by distributions such as Fedora, Red Hat Enterprise Linux, SUSE's openSUSE and SUSE Linux Enterprise, CentOS and formerly Mandriva (only for 2009.0 - 2010.2).
RPM v5
The RPM maintainer since 1999, Jeff Johnson, continued development efforts together with participants from several other distributions. RPM version 5 was released in May 2007.
This version is used by distributions such as Unity Linux, Wind River Linux and cAos Linux, and also by the OpenPKG project which provides packages for other common UNIX-platforms. Mandriva has currently switched to it for their development branch, with 2011.0 becoming its first release using it [9]. ArkLinux also announced intention to move to RPM5 for its next release.
See also
- Autopackage - a "complementary" package management system
- Delta ISO - an ISO image which contains RPM Package Manager files
- dpkg - package management system used by Debian and its derivatives
- List of Linux distributions
- Portage - package management system used by Gentoo
- Ports and Packages - FreeBSD's package management system
- pkg-config - queries libraries to compile software from its source code
- pkgsrc - package management system focusing on NetBSD, but available for Solaris, Linux, Darwin (Mac OS X), FreeBSD, OpenBSD, IRIX, BSD/OS, AIX, Interix (Microsoft Windows Services for Unix), DragonFlyBSD, OSF/1, HP-UX, QNX, and Haiku
References
- ^ "RPM -- plans, goals, etc.". Max Spevack <mspevack redhat com>. https://www.redhat.com/archives/fedora-announce-list/2006-December/msg00003.html. Retrieved 2011-01-20.
- ^ a b "Maximum RPM: Taking the Red Hat Package Manager to the Limit". rpm.org. http://rpm.org/max-rpm/s1-rpm-file-format-rpm-file-format.html. Retrieved 2010-11-22.
- ^ "RPM Fusion". rpmfusion.org. http://rpmfusion.org//. Retrieved 2010-11-22.
- ^ "An Analysis of RPM Validation Drift". USENIX Association. http://www.usenix.org/event/lisa02/tech/full_papers/hart/hart.pdf. Retrieved 2011-03-15.
- ^ http://wiki.meego.com/Zypper
- ^ http://www.arklinux.org/?q=node/53#rpm
- ^ "Repair an RPM database safely". http://www.oldrpm.org/hintskinks/repairdb/. Retrieved 2011-11-11.
- ^ "Supplemental Packaging Software". Fedora Project. http://docs.fedoraproject.org/en-US/Fedora_Draft_Documentation/0.1/html/RPM_Guide/ch-extra-packaging-tools.html#id461860. Retrieved 2011-11-11.
- ^ Bodnar, Ladislav & Smith, Jesse (2010-11-22), DistroWatch Weekly, DistroWatch, http://distrowatch.com/weekly.php?issue=20101122#news, retrieved 2010-11-22
External links
- Red Hat RPM Guide from the Fedora project.
- RPM.org project home page
- RPM5 Package Manager homepage
- RPM and DPKG command reference
- The story of RPM by Matt Frye in Red Hat Magazine
- Advanced RPM query strings
- Video tutorials for Building and Patching the RPMs
- RPM Notes - Building RPMs the easy way
Red Hat Major products Red Hat Enterprise Linux · Directory Server · Certification Program · Global File System · Cluster Suite · JBoss · Fedora (List of Fedora versions) · Virtual Machine Manager · Anaconda · yum · RPM · SatelliteServices Projects Defunct Important people Mergers and acquisitions Related Archive formats Archiving only Compression only Archiving and compression Software packaging and distribution - pkg (SVR4)
- deb
- pkg (Mac OS X)
- RPM
- RUNZ
- MSI
- JAR
- WAR
- RAR (Java)
- EAR
Document packaging and distribution Linux operating system Linux Adoption (Adopters) · Criticism (of desktop Linux) · History · Kernel (kernel names · supported architectures) · Linus' Law · Linux Foundation · Linux-libre · Tux · vmlinuxDistribution GNU Free Software Foundation · GNU · GNU GPL · GNU/Linux naming controversy · GNU packages · GNU ProjectWindow manager User interface Applications People Media Lists System arrangement
and featuresMobile Access Linux Platform · Android · Ångström · bada · LiMo Foundation · LiMo Platform · Linux Phone Standards Forum · MeeGo (Maemo · Moblin) · Mobilinux · Open Handset Alliance · Openmoko · OPhone · webOS · SHR · Ubuntu MobileOther topics Linux conference · Linux Documentation Project · Malware · Linux Standard Base · Linux User Group (LUG) · Revolution OS · SCO and Linux · Tanenbaum–Torvalds debate · The CodeCategories:- Archive formats
- Free package management systems
- Linux package management-related software
- Red Hat
Wikimedia Foundation. 2010.