Overview

The RPM Package Manager, commonly called RPM, is a package format and collection of tools used to distribute, install and manage software on many Linux distributions. It combines a binary file archive with metadata about files, versioning and dependencies. As a form of package management, RPM provides mechanisms for querying installed files, verifying integrity, and applying signed updates.

Structure and components

An RPM package typically carries compiled program files, documentation and metadata such as package name, version, release, architecture, dependency lists, scripts run during installation, and cryptographic signatures. Source packages (often named with .src.rpm) hold source code and a spec file that describes how to build the binary package.

  • File format: packages use the .rpm extension and encapsulate payload and headers; see the formal file format description for details.
  • Spec file: a recipe that defines build steps (%prep, %build, %install), files to include, and package metadata.
  • Database: the rpm database tracks installed packages, file lists and checksums.
  • Signatures: packages can be GPG-signed so installers verify authenticity before installing.

History and development

RPM originated in the 1990s as a tool associated with Red Hat and became the de facto package format for a number of distributions. Over time it evolved through major versions that improved dependency handling, scripting hooks and signature support. Many distributions and tools—such as YUM, DNF and zypper—use RPM packages but add higher-level repository and dependency resolution features.

Common usage and examples

Administrators and developers use a mix of low-level rpm commands and higher-level front ends. Typical actions include installing and upgrading packages, querying package contents, verifying file integrity, and building new RPMs from spec files. Source RPMs are used to distribute source in a reproducible way and to create custom builds for a particular distribution.

  1. Install or upgrade: rpm -i or rpm -U (low-level installer)
  2. Query: rpm -q, rpm -ql, rpm -qi to list packages, files and info
  3. Build: rpmbuild with a spec file to produce .rpm and .src.rpm
  4. Verify: rpm --verify to check file checksums and permissions

Significance and distinctions

RPM standardized how packages declare dependencies and file lists, helping maintainers create reusable binary distributions across related systems. It contrasts with other package systems (for example, Debian's .deb format) in tooling and metadata details, but serves the same core purpose: enabling installation, upgrade and removal of software in a controlled way. Documentation and community resources for packaging and repository creation are widely available; many maintainers link to official guides and tooling pages such as packaging resources.