Fact-checked by Grok 2 weeks ago

RPM Package Manager

The RPM Package Manager (RPM) is a and open-source command-line package management system designed for building, installing, updating, uninstalling, querying, and verifying software packages on operating systems, particularly distributions. Originally developed as a tool to manage and dependencies, RPM uses a standardized archive format (.rpm files) that includes binary executables, libraries, and metadata for efficient handling of software components. It maintains a local database on the system to track installed packages, their versions, and file locations, enabling dependency resolution and checks to prevent conflicts during operations. RPM originated in 1995 as an internal project at Software, with its first system commit marking the start of development; it was initially named the Package Manager before evolving into a under community governance. The system was created by developers Erik Troan and Marc Ewing to address challenges in software packaging for early distributions, building on prior tools like pms and to provide a more robust solution for binary package management. By 1997, RPM had its first public release and quickly became integral to , later expanding beyond proprietary use as the project was released under open-source licenses such as GPL-2.0-or-later. Key milestones include its adoption in the for interoperability and ongoing enhancements, such as support for multiple digital signatures and in recent versions like RPM 6.0.0 (2025). Widely adopted in enterprise and community environments, RPM serves as the foundation for package management in distributions including , , , , and , where it powers tools like DNF and Yum for higher-level interactions. Beyond , RPM has influenced package systems in other OSes and supports both source and binary packages, allowing developers to create distributable archives that preserve pristine while automating builds and installations. Its design emphasizes security through features like GPG signature verification and file checksums, making it a cornerstone for reliable in production systems.

Introduction

Definition and Purpose

The RPM Package Manager (RPM) is a free and open-source package management system and associated designed for distributing, installing, updating, and managing software on and systems. Originally developed for , with its first version committed in 1995, RPM provides a standardized approach to software packaging that promotes consistency across distributions. It serves as a core component in major Linux ecosystems, enabling administrators and users to handle software efficiently through command-line tools. The primary purposes of RPM include managing both and packages to ensure reliable and . It supports dependency resolution by tracking required libraries, executables, and other components, automatically resolving conflicts or missing prerequisites during package operations to maintain system stability. Additionally, RPM enforces consistency in by standardizing package contents and behaviors, reducing errors in multi-system environments. Files with the .rpm extension represent individual software packages that encapsulate compiled binaries, libraries, configuration files, and documentation alongside essential metadata such as package name, version, architecture, and installation instructions. This structure also includes executable scripts for pre- and post-installation tasks, allowing packages to perform custom actions like starting services or updating databases. Source RPMs (.srpm) extend this by including original source code and build specifications, facilitating transparency and customization. RPM enables by allowing users to compile identical binaries from source RPMs using the same specifications, ensuring verifiable and consistent software across environments. It also supports system integrity checks through features like against checksums and digital signatures, helping detect tampering or corruption in installed packages. These capabilities collectively enhance and reliability in software management.

Adoption in Linux Distributions

The RPM Package Manager was initially adopted by in 1995 as its primary packaging system, providing a standardized method for distributing software that facilitated easy installation and updates across systems. This foundation extended to subsequent Red Hat projects, including as a community-driven upstream , and enterprise-focused variants like (RHEL), where RPM remains integral via frontends such as DNF for dependency resolution and repository management. RHEL derivatives, including , , and , have similarly embraced RPM to ensure compatibility and long-term support for server and workstation deployments. Beyond ecosystems, RPM gained traction in other distributions for its robust binary format and metadata handling. and utilize RPM packages managed through the zypper frontend, enabling seamless integration with YaST for graphical configuration and supporting both rolling-release and stable branches. , a of Mandriva, employs RPM with tools like URPMI and DNF for package handling, emphasizing user-friendly updates and support in environments. Similarly, leverages RPM via its APT-RPM system, combining Debian-style repository management with RPM's verification features to cater to independent users seeking a lightweight, customizable setup. In environments, RPM's adoption underscores its emphasis on , with RHEL's long cycles and cryptographic ensuring reliable deployments in data centers and infrastructures. Community distributions, in contrast, highlight RPM's flexibility, allowing rapid iteration and custom repositories that appeal to developers and hobbyists without compromising core integrity. As of 2025, RPM-based systems maintain a strong presence in package management, particularly in where RHEL commands approximately 43.1% of the , driving adoption in and scenarios. On desktops, RPM distributions like contribute to 's approximately 4% global as of 2025, bolstered by upstream innovations that influence broader ecosystem tools. RPM integrates natively with via Podman, a daemonless developed by and installable as an RPM package on RHEL and , enabling secure, rootless container workflows that align with RPM's security model. It also demonstrates compatibility with universal formats like and , allowing hybrid packaging where RPM handles system-level components while delivers sandboxed applications across RPM-based distros such as and RHEL.

History

Origins and Early Development

The RPM Package Manager (RPM) was developed in 1995 by Marc Ewing and Erik Troan, engineers at Red Hat Software, as a solution for managing software packages in the burgeoning ecosystem. This tool emerged from the need to create a more reliable system than existing ad-hoc methods for distributing and installing software on systems, particularly to support the rapid growth of distributions. At the time, was transitioning from academic and hobbyist use to broader adoption, requiring tools that could automate updates, track installations, and resolve dependencies without manual intervention. RPM's design was heavily influenced by earlier package management systems, including (developed in 1995 for by Rik Faith and Doug , building on experiences with PMS—a from used for the (AFS) and in the 1993–1994 BOGUS by Faith, , and Kevin Martin)—and rpp, an internal tool for handling software bundles. These predecessors provided foundational ideas like scriptable installations and basic verification but suffered from limitations in scalability and cross-system compatibility, prompting to unify and enhance them into a robust, open framework. The initial version of RPM, version 1.0, debuted in the beta release of 2.0 in late summer 1995, marking the first widespread use of a database-driven in a major . This integration focused on streamlining for users and administrators, with RPM handling binary packages that included for dependencies and file integrity checks. Early was tied closely to Red Hat's efforts to commercialize , but challenges arose from the absence of industry-wide standards, making integration with other emerging distributions difficult and leading to fragmented tooling in the late 1990s.

Key Milestones and Version Evolution

The RPM Package Manager underwent significant evolution following its initial development, with key advancements in version releases that enhanced dependency resolution, scripting capabilities, and backend storage. RPM 3.0 was released in 1999. In 2000, the project was renamed from Red Hat Package Manager to the more neutral RPM Package Manager on January 17, marking a shift toward broader beyond Red Hat ecosystems. This version introduced improvements in payload compression support, such as in subsequent 3.0.x updates, laying groundwork for more efficient package handling. RPM 4.0, released in 2002, represented a major overhaul, adopting a new database format based on to enable better performance and dependency resolution, allowing older and newer RPM versions to coexist during upgrades. This change facilitated more robust handling of package interdependencies, reducing conflicts in complex installations. The project had been open-sourced under a dual since 1997, promoting widespread contributions and integration into various distributions. In 2008, RPM 5.0 was released as a led by Jeff Johnson, diverging from the mainline rpm.org development to incorporate features like enhanced and delta RPM support for efficient updates; however, it saw limited adoption and became defunct by the 2010s, with no significant updates after around 2013. Mainline development continued with RPM 4.x series enhancements, including the introduction of Lua scripting integration around 2012 for extensible spec file processing and automation. Later milestones in the 4.x series focused on advanced scripting and storage flexibility. RPM 4.13, released in 2016, added file triggers, enabling packages to execute scripts in response to file installations or removals by other packages, improving post-installation automation like database updates. In 2019, RPM 4.15 introduced an optional backend alongside the traditional , offering a lighter, more modern alternative for the package database to address maintenance concerns with the aging DB library. This transition enhanced portability and reduced dependencies in embedded or minimal environments. A pivotal integration event occurred in 2015, when DNF (Dandified YUM), the next-generation frontend for RPM, became the default package manager in Fedora 22, leveraging RPM's core for dependency solving via the libsolv library and improving overall repository management efficiency. The most recent major milestone is the stable release of RPM 6.0.0 on September 22, 2025, which enforces signature checking by default, supports multiple OpenPGP signatures per package, introduces the RPM v6 file format, and incorporates (PQC) keys for future-proofed security. These updates also streamline build processes through refined APIs and enhancements, boosting efficiency in package creation and verification.

Core Features

Dependency Management

The RPM Package Manager employs a metadata-based system to manage software dependencies, utilizing tags such as Provides, Requires, Obsoletes, and Conflicts within package specifications to enable automatic checking during installation and upgrades. The Provides tag allows a package to declare capabilities it offers, such as specific binaries or libraries (e.g., Provides: /bin/sh), which other packages can require without tying to a particular provider, facilitating virtual dependencies for alternatives like multiple shell implementations. Requires specifies mandatory prerequisites, including other packages or capabilities, ensuring they are present before or alongside the current package's installation. Obsoletes identifies superseded packages, prompting their removal during upgrades to treat the new package as a replacement, while Conflicts prevents co-installation of incompatible packages by blocking if a matching capability exists. Dependency evaluation occurs primarily at runtime during package installation or upgrades, where RPM verifies that all Requires are satisfied against the system's database of installed capabilities; build-time evaluation, however, is managed separately to ensure prerequisites for compilation are met without affecting end-user installations. RPM distinguishes between strong dependencies (Requires, Conflicts, Obsoletes) and weaker ones, such as Recommends (optional forward suggestions) and Suggests (very weak forward hints), which are processed or displayed but not enforced to avoid installation failures. Automatic dependencies, like those generated for shared libraries via sonames, are inferred by RPM tools without explicit tagging, enhancing efficiency for common runtime needs. Versioned dependencies in RPM support precise control using operators like >= or <, formatted as [epoch:]version[-release] (e.g., Requires: perl >= 9:5.00502-3), allowing requirements for minimum or exact versions to maintain across updates. provides extend this by enabling abstract capability declarations, such as for interchangeable libraries (e.g., different implementations of a database driver), resolved at runtime without mandating specific package names. During package creation, the rpmbuild tool resolves dependencies by checking build-time Requires against available sources, generating the necessary metadata tags to embed in the resulting RPM file for later runtime use. Core RPM lacks built-in automatic dependency resolution, requiring manual satisfaction of unsatisfied Requires or delegation to higher-level front-ends like YUM or DNF for automated solving across repositories. This design can lead to dependency issues, or "dependency hell," in complex systems with intricate versioning chains or solver limitations, where conflicts arise that prevent straightforward installations.

Package Verification and Security

RPM employs GPG signatures to verify the authenticity of packages, ensuring they originate from trusted sources and have not been altered by unauthorized parties during distribution. This process involves signing the package header and using tools like rpmsign, with performed via the rpm --checksig command, which checks against imported public keys in the system's RPM keyring. For integrity, RPM calculates and stores checksums such as , , and SHA256 to detect any corruption or tampering in the package contents, with the rpm -K or --checksig options confirming matches against these digests. These verification mechanisms are implemented directly within the .rpm file structure, where the signature header contains tags like Sigpgp for OpenPGP DSA signatures of the header and payload, and digest tags such as SHA256 for the header itself and the compressed payload, enabling end-to-end checks from download to installation. Since RPM 4.14, SHA256 digests have been mandatory for enhanced security, replacing weaker / where possible, while maintaining backward compatibility. Delta RPMs facilitate secure, bandwidth-efficient updates by generating binary patches (deltas) between an installed package and its newer version, which are then applied using the applydeltarpm utility to reconstruct the full updated package. These deltas inherit the same GPG signing and verification as standard RPMs, ensuring and before application, thus minimizing exposure during transfers over untrusted networks. To enforce runtime security, RPM supports file capabilities, allowing packages to assign fine-grained privileges to executables via extended attributes (e.g., cap_net_bind_service for binding to privileged ports without full access), specified in SPEC files using the %caps or %attr with capability flags, reducing the compared to traditional binaries. Additionally, RPM triggers enable security adjustments by executing custom scripts during package events like installation or upgrades of dependent packages, such as applying SELinux contexts or updating access controls to maintain system policy compliance. RPM has addressed several historical vulnerabilities in package and handling, including CVE-2011-3378, a memory corruption flaw in header parsing that could enable denial-of-service or via malformed packages; this was mitigated in version 4.9.1.2 through strengthened validation before checks. Modern RPM versions (4.14 and above) support integration with UEFI Secure Boot by allowing kernel modules and bootloaders packaged as RPMs to be signed with certificates, enabling their and loading on Secure Boot-enabled systems after enrolling the distributor's public key in the firmware's trusted database.

Package Format and Components

Binary RPM Structure

The binary RPM file follows a structured layout consisting of four primary components: the lead, signature, header, and payload. The lead is a fixed 96-byte at the beginning of the file that identifies it as an RPM package. It starts with the magic bytes 0xED 0xAB 0xEE 0xDB, followed by the major and minor version numbers (typically 4.0 for modern formats), a package type indicator (0x00 for packages), architecture and OS identifiers, a reserved name field, and additional reserved bytes. This ensures basic file recognition and provides initial metadata redundancy. The follows the lead and contains cryptographic elements for verifying the package's and . It is structured as a header-like region with tags such as HEADERSIGNATURES (tag 62) indicating the presence of signatures, along with hash values like (tag 1004), (tag 269), and SHA256 (tag 272) for the header and payload. Signature types include public key methods like (tag 268), (tag 267), and PGP variants, with the data padded to multiples of 8 bytes. In binary RPMs, this section authenticates the compiled content without altering the payload itself. The header, immediately after the signature, stores the package's metadata in a flexible tag-value format divided into immutable and mutable regions. The immutable section (tagged with RPMTAG_HEADERIMMUTABLE, tag 63) contains core attributes like name (tag 1000), (tag 1001), release (tag 1002), (tag 1003), and build time (tag 1006), using data types such as strings, integers, or arrays. The mutable section allows for less critical data, such as file lists or dependencies. Tags are indexed with 16-byte entries specifying the tag number, type, offset, and count, enabling efficient parsing; over 60 tags are defined, with binary RPM headers emphasizing details on compiled binaries and libraries rather than . This structure supports larger headers in later versions through 64-bit indexing. The payload forms the bulk of the binary RPM, comprising a compressed archive of the installed files using the cpio format (SVR4 with CRC). It includes compiled executables, libraries, documentation, and configuration files, distinguished from source RPMs by containing pre-built binaries optimized for the target architecture rather than raw source tarballs and patches. Compression algorithms include gzip (default, with magic bytes 0x1F 0x8B), bzip2, xz, and lzma, configurable via build macros; the archive lists files with permissions, ownership, and timestamps. Scriptlets—executable scripts for pre-install, post-install, pre-uninstall, and post-uninstall actions—are embedded as special cpio entries, allowing runtime behaviors like user creation or service starts specific to binary deployment. The RPM binary format has evolved significantly from version 3 to 6 to address limitations in size, security, and compatibility. Version 3 (circa 1997) used a simpler 96-byte lead and basic MD5 signatures, with headers limited to 16-bit indices and no support for payloads over 4 GB. Version 4 (introduced around 2002) added immutable header regions, header-only signatures, compressed file paths for efficiency, and 64-bit integer support (from 4.6), enabling larger packages and better verification. Further enhancements in 4.12 allowed payloads exceeding 4 GB via extended cpio magic (07070X), while 4.14 mandated SHA256 for stronger hashes. RPM 6.0 (released September 2025) introduces the v6 format with full 64-bit limits, drops legacy MD5/SHA1 support, adds SHA3-256 digests and per-file MIME types, supports multiple OpenPGP v6 signatures and post-quantum cryptography, and uses UTF-8 encoding with a new payload format featuring hex file indices for unlimited sizes—all while maintaining backward compatibility for querying and unpacking with RPM 4.x tools. These changes enhance security and scalability for modern binary distributions without breaking existing ecosystems.

Source RPMs and SPEC Files

Source RPMs (SRPMs) are RPM packages with the file extension .src.rpm that contain the original tarballs, any applied patches, and a SPEC file, enabling of binary RPMs from source. These packages preserve the exact sources used for a given binary RPM version, facilitating , auditing, and adaptation across different architectures or environments. The SPEC file, typically named with a .spec extension, serves as the build recipe within an SRPM, providing instructions for the rpmbuild tool to construct binary packages. It consists of two main parts: the preamble and the body. The preamble contains metadata tags such as Name (the package base name), Version (upstream version number), Release (packager's release count), Summary (brief description), License (software license), URL (upstream project site), Source0 (primary source archive URL or path), Patch0 (first patch file), BuildRequires (build-time dependencies), and Requires (runtime dependencies). For example:
Name: example-package
Version: 1.0
Release: 1%{?dist}
Summary: An example package
License: GPLv2+
URL: https://example.com
Source0: https://example.com/releases/%{name}-%{version}.tar.gz
BuildRequires: gcc
Requires: [bash](/page/Bash)
The body follows the preamble and includes tagged sections like %description for a detailed package overview, %prep for unpacking sources and applying patches (e.g., using %autosetup or %patch0), %build for compiling the software (e.g., %make_build), %install for placing built files into a temporary build root (e.g., %make_install), %files for specifying which files to include in the final package with attributes like %attr(755, root, root) for permissions, and %changelog for recording version changes in a standardized format such as * Date Packager <email> - Version-Release. SPEC files also employ macros—parameterized text substitutions like %{name} for the package name or %{buildroot} for the installation directory—to enhance portability and readability; these can be defined with %define or %global and evaluated via rpm --eval. The build process begins with preparing the environment using rpmdev-setuptree to create standard directories like SOURCES, SPECS, and SRPMS, followed by placing source tarballs in SOURCES and the SPEC file in SPECS. Invoking rpmbuild -bs <specfile> generates the SRPM from the SPEC file, while rpmbuild -bb <specfile> or rpmbuild --rebuild <srpm> produces binary RPMs by executing the SPEC sections sequentially: unpacking in %prep, compiling in %build, installing in %install, and in %files. This process ensures automated, repeatable package creation, with options like --short-circuit to test specific stages. NOSRC packages, identifiable by the .nosrc.rpm extension, are a variant of SRPMs that omit source code tarballs, relying instead on patches, generated content during the build, or external sources for cases like or documentation-only distributions. They are created when dynamic build dependencies are unresolved (e.g., via %generate_buildrequires), producing a package with BuildRequires but no sources to resolve missing tools. Directives like NoSource: <filename> in the SPEC file exclude specific files from the SRPM payload. The use of SRPMs and SPEC files offers key advantages, including the ability to audit package builds for and by inspecting sources and instructions, perform custom recompilations with modified patches or flags, and distribute build recipes independently of binaries to support community contributions or architecture-specific adaptations.

Package Naming and Metadata

RPM packages follow a standardized to ensure clarity and consistency in and management. The typical is name-version-release.architecture.rpm, where name is the base package identifier, version represents the upstream software , release indicates the distributor's release number (often including a tag like .el7 for Enterprise Linux 7), and architecture specifies the target platform such as x86_64 or noarch for architecture-independent packages. For example, bash-5.1-3.x86_64.rpm denotes the Bash shell package at 5.1, third release, for 64-bit x86 systems. To handle complex version precedence, RPM uses an optional epoch field, forming a full version label of name-epoch:version-release. The epoch, an integer typically starting at 0 if omitted, takes priority in comparisons; a higher epoch overrides even newer version-release combinations, allowing distributors to enforce ordering for rebuilt or forked packages. Key metadata tags embedded in the RPM header provide essential information for package handling and user reference. These include Name (the package base name), Version (upstream version string), Release (distributor release), Epoch (version precedence integer), Summary (a concise one-line description of the package's purpose), Description (a detailed multiline explanation), License (the software's licensing terms, such as GPLv3+), Group (a categorization like "Applications/System"), Requires (runtime dependencies as a string array), Provides (capabilities or virtual names supplied by the package), BuildTime (Unix timestamp of the build), and Vendor (contact details for the packager or organization). These tags, stored in the binary header, enable tools to query and resolve package attributes without extracting contents. For shared libraries, RPM packaging emphasizes soname handling to maintain ABI compatibility. The soname (shared object name), embedded during compilation with flags like -Wl,-soname,libexample.so.1, identifies the library's major version for dynamic linking; tools like objdump verify it post-build. Runtime dependencies automatically include sonames via Requires, while development files (headers, pkg-config data, and unversioned symlinks like libexample.so) are separated into -devel subpackages to minimize base package size and avoid unnecessary installations. The -devel package requires the exact version of the base library package for consistency. Best practices for RPM naming and metadata focus on uniqueness and usability to prevent conflicts and support diverse environments. Package names should use lowercase letters and dashes (e.g., httpd-tools instead of httpd_tools) to align with filesystem conventions and avoid overlaps. Metadata like Summary and Description supports internationalization through i18nstring tags, allowing locale-specific translations via tools like %find_lang in build processes. To avoid conflicts, explicit file listings in SPEC files (rather than globs) ensure precise ownership, and unique Provides declarations help resolve virtual dependencies across packages.

Database and Local Operations

Installation Database

The RPM installation database serves as the central local record of all software packages installed on a , enabling queries, verifications, and tracking without relying on external repositories. Located in the /var/lib/rpm/ directory, it maintains an on-disk structure that catalogs package and file associations to ensure integrity and facilitate management operations. The database employs either as the default backend—introduced in RPM 4.16 with 33 in 2020 for improved maintainability and crash recovery—or the legacy format, depending on the distribution and configuration. Since RPM 4.16.0, an additional native database (ndb) backend is also available as a modern alternative to and for enhanced stability. Its core contents include package headers storing essential such as name, version, release, , and summary; comprehensive file lists that enumerate every installed file with attributes like paths, sizes, permissions, and checksums; capabilities defining inter-package relationships through provides, requires, conflicts, and obsoletes tags for ; and via install transaction IDs (Installtid) that log sequences of installations, upgrades, and removals. Key operations interact directly with this database: the rpm --query (or rpm -q) command retrieves details on installed packages, supporting formats like --list for file listings, --provides for capabilities, or --changelog for version history, allowing targeted searches such as rpm -q --whatprovides /path/to/file. For integrity checks, rpm --verify (or rpm -V) scans files against database records, flagging discrepancies in checksums, modes, or ownership, with options like --nofiles to focus on package-level verification or -a for all packages. Maintenance tasks include rpm --rebuilddb, which reconstructs indices from stored headers to repair corruption, often invoked as rpm --rebuilddb -v for verbose output during recovery. When handling upgrades or removals, the database dynamically updates entries: upgrades overwrite old headers and adjust file lists while preserving continuity, and removals erase records to prevent orphaned references, all within transactions to maintain . Backups are achieved by the entire /var/lib/rpm/ prior to changes, or using backend-specific tools such as db_dump for files or sqlite3 rpmdb.sqlite .dump for to export the schema and data. In environments with large-scale deployments—such as servers managing thousands of packages—the database can encounter scalability challenges, including extended rebuild durations on systems with a large number of entries and query slowdowns due to index fragmentation, exacerbated by the unmaintained Berkeley DB's concurrency limitations. Optimization strategies include regular vacuuming for (sqlite3 rpmdb.sqlite VACUUM), pre-compiling SQL statements in custom tools for repeated queries, and monitoring lock contention via rpmdb_stat; the enhances overall robustness but may require tuning for high-concurrency writes in enterprise settings.

Repository Handling

In RPM-based systems, repositories are configured through INI-style .repo files, typically located in the /etc/yum.repos.d/ (or equivalent for other front-ends like Zypper), by higher-level package managers such as DNF and Yum that use the RPM database for local operations. These files specify essential parameters such as the baseurl (a direct to the ) or mirrorlist (a listing multiple mirror servers), along with gpgkey (the or path to the 's GPG public key for verification), and other options like enabled=1 to activate the and gpgcheck=1 to enforce and package validation. The core of a repository's structure lies in its repodata directory, which contains compressed XML files generated to describe available packages without requiring individual downloads. Key files include primary.xml.gz, which provides package such as names, versions, summaries, and ; filelists.xml.gz, detailing the files contained within each package; and otherrepodata.xml.gz for supplementary information like changelogs. This format, known as repomd, enables efficient querying and by client tools. On the server side, tools like createrepo_c generate and update this repodata from a directory of RPM packages, ensuring synchronization between package additions or changes and the index. Clients such as DNF or YUM this metadata locally in /var/cache/dnf or /var/cache/yum after downloading it, with synchronization achieved via commands like dnf makecache to refresh expired or outdated , preventing stale data during operations. The update process involves the parsing repository metadata to compare available package versions—using epoch, version, and release (EVR) tuples—against those in the local RPM database, identifying and queuing downloads for newer or updated packages. Where supported, such as in older releases, delta RPMs (drpms) allow downloading only the differences between old and new package versions to reduce bandwidth, though this feature has been deprecated in recent distributions due to maintenance overhead. For systems with multiple repositories, mirror lists in .repo files provide redundancy by allowing clients to select from a list of synchronized servers, often using files for automatic fastest-mirror selection or random . Priority handling, configurable via the built-in DNF priorities or the yum-plugin-priorities, assigns numerical values (lower numbers indicating higher ) to repositories, ensuring packages from preferred sources are chosen first and preventing conflicts from lower-priority mirrors. Security in repository handling emphasizes for encrypted transport, enforced by setting baseurl to https:// and enabling sslverify=1 in .repo files or global configuration to validate server certificates. GPG keys for trusted repositories are imported using rpm --import followed by the key URL or file, allowing of signed metadata and packages to detect tampering; repositories without valid keys prompt users during initial access.

Tools and Interfaces

Command-Line Operations

The RPM command-line tool provides essential operations for managing packages on systems using the RPM Package Manager, including , upgrading, removal, querying, , and building from specifications. These operations are performed directly via the rpm and rpmbuild executables, allowing precise control over package handling without higher-level abstractions. Installation of a new package is achieved using the -i or --install option, which places the package contents into the filesystem and updates the local database; for example, rpm -i example-package.rpm installs the specified file. Upgrading or replacing an existing package employs the -U or --upgrade option, which removes any prior versions before installing the new one, as in rpm -U example-package.rpm. Freshening, via -F or --freshen, upgrades only if an older version is already present. Erasure removes an installed package with -e or --erase, such as rpm -e example-package, and supports options like --nodeps to bypass dependency checks or --test to simulate the action without changes. These modes also accept --justdb to update only the database entry, useful for repairs. Query operations begin with -q or --query to inspect installed packages or files. Listing installed packages uses rpm -q package-name, while detailed information like version, description, and dependencies is retrieved via rpm -qi package-name. File listings within a package are obtained with rpm -ql package-name, and ownership of a specific file is determined by rpm -qf /path/to/file. Additional query formats include --changelog for and --provides for capabilities offered by the package. These queries interact with the underlying installation database for accurate results. Building packages from a SPEC file utilizes the rpmbuild command, which executes defined stages such as %prep (unpacking sources and applying patches), %build (compiling), %install (placing files into a build root), %check (running tests), and %files (assembling the archive). The -bb or build mode produces only the binary RPM, as in rpmbuild -bb example.spec, while -ba generates both source and binary RPMs. Options like --clean remove the temporary build tree after completion, --nodeps skips dependency verification during assembly, and --test (via related checks like -bl for file lists) simulates without execution. Verification ensures package integrity using -V or --verify, which compares installed files against the original for attributes like size, permissions, and checksums; rpm -V package-name targets a specific package, or rpm -Va verifies all. Flags such as --nofiles omit file checks and --nodeps ignores dependencies. Transaction sets enable operations across multiple packages, initiated implicitly in multi-file commands or via scripting with options like --test for dry runs, facilitating safe integration into automation scripts.

Front-End Managers

Front-end managers for the RPM Package Manager provide abstracted interfaces that simplify package installation, updates, and maintenance by handling complexities such as dependency resolution and interactions, which are not natively addressed by the core RPM tools. These tools, available in both command-line and graphical forms, are integral to major RPM-based distributions, enabling users to manage software without direct manipulation of individual RPM files or databases. Among command-line front-ends, YUM (Yellowdog Updater, Modified) served as a foundational for Red Hat-based systems, offering capabilities like automatic dependency resolution and repository querying to streamline RPM operations. However, YUM has been deprecated in favor of DNF (Dandified YUM), which was introduced in Fedora 18 in 2013 and became the default package manager in Fedora 22 in 2015, later adopting it as the primary in 8 released in 2019. A further evolution, DNF 5, was introduced in Fedora 41 in 2024, offering enhanced performance, lower resource usage, and improved dependency resolution as of 2025. DNF improves upon YUM with enhanced performance, including support for parallel downloads via repositories, more accurate dependency solving using SAT solvers, and better handling of modular content streams introduced in RHEL 8 for versioned application suites. For and distributions, Zypper acts as the primary command-line front-end, leveraging the libzypp library to perform dependency resolution, repository management, and package searches across multiple sources. Zypper supports features like enabling or disabling repositories on-the-fly and pattern-based installations for grouped software sets, making it suitable for both scripted and interactive use in enterprise environments. In , a community-driven derivative of , the urpmi front-end provides similar functionality, including automatic dependency handling and media source integration for RPM packages from local or remote repositories. Graphical front-ends further enhance accessibility for users. GNOME Software, the default tool in -based RPM distributions like and RHEL, integrates with PackageKit to offer a user-friendly interface for searching, installing, and updating RPM packages alongside Flatpaks, with built-in dependency resolution and repository filtering. Discover serves a comparable role in environments, utilizing PackageKit backends such as DNF or Zypper to enable visual package browsing, reviews, and installations while managing repository states and updates. In ecosystems, the YaST (Yet another Setup Tool) software management module provides a comprehensive graphical and text-based interface for RPM operations, including dependency-aware installations, repository configuration, and pattern selections for or profiles. These front-ends share key features that distinguish them from raw RPM commands, such as automatic to prevent conflicts, dynamic repository enabling/disabling for targeted updates, and cross-repository searches to locate packages efficiently. The migration from YUM to DNF, accelerating after 2015 in and extending to RHEL 8 in 2019, reflects a broader trend toward modular packaging integration, allowing front-ends like DNF to manage application streams with multiple compatible versions coexisting on the system. This evolution has improved scalability and across RPM-based distributions.

Variants and Forks

RPM.org Implementation

The RPM.org implementation represents the mainline development branch of the RPM Package Manager, hosted under the at rpm.org since and serving as the core package management system for distributions including , (RHEL), and . This governance model emphasizes collaborative open-source maintenance, with development coordinated through the organization rpm-software-management, ensuring compatibility and evolution aligned with the needs of these enterprise and community-driven ecosystems. Significant enhancements in this implementation have focused on modernizing the backend and scripting capabilities. The database backend became the default in RPM 4.16 (released in 2020), replacing the older for improved performance and portability in package database operations. Starting with RPM 4.14 in , the macro system underwent a major revamp, introducing more powerful expression handling and conditional logic to streamline spec file authoring and build processes. The community surrounding the RPM.org implementation is vibrant and structured for effective collaboration. Discussions occur via dedicated mailing lists, such as [email protected] for general usage queries and [email protected] for maintainer-specific topics, with announcements distributed through [email protected]. Bug reports and feature requests are managed primarily through the GitHub issue tracker at rpm-software-management/rpm, supplemented by Matrix and IRC channels for real-time interaction. Integration with Fedora's Koji build system exemplifies practical community contributions, where RPM tools facilitate automated package compilation and testing in a distributed environment. Licensing under the RPM.org implementation balances openness with practical reuse: the core tools are distributed under the GPLv2+ license, while key libraries like librpm and rpmio fall under LGPLv2+, allowing broader incorporation into other software projects. As of November 2025, the project maintains active development momentum, highlighted by the RPM 6.0.0 release on September 22, 2025, which prioritized performance optimizations in signature verification and expanded native support for ARM64 architectures to address growing demands in and environments.

RPM5 and Other Derivatives

The RPM5 project emerged as a significant of the RPM Package Manager in 2007, initiated by long-time maintainer Jeff Johnson to incorporate advanced features not prioritized by the mainline rpm.org development led by and . This divergence stemmed primarily from disagreements over feature priorities, including the integration of alternative database backends and scripting enhancements, while the mainline focused on stability with the existing (BDB) backend. RPM5 version 5.0.0 was officially released on January 5, 2008, maintaining full backward compatibility with RPM version 4 package formats to ensure seamless handling of existing binaries and source RPMs (SRPMs). Key innovations in RPM5 included Python bindings for programmatic access to RPM functionality, enabling developers to script package queries, installations, and database interactions directly in . It also introduced Lua scripting support for spec files, allowing more dynamic build-time logic, and enhanced SRPM handling, such as improved support for "NOSRC" packages—special SRPMs that exclude source tarballs for proprietary or restricted software while retaining spec files and patches. Additionally, RPM5 explored experimental database backends like ndb (a lightweight alternative to BDB) to address performance issues in large repositories, though adoption remained limited due to compatibility concerns. Mandriva Linux adopted RPM5 starting with its 2011 release, citing benefits like reduced bloat and better multi-architecture support for its international user base. However, the fork faced challenges, including integration issues that disrupted installers and led to further internal forks within Mandriva's ecosystem. By 2018, OpenMandriva Lx—the primary successor to Mandriva—reverted to the rpm.org implementation (RPM4 series) for its 4.0 release, motivated by superior upstream support, fewer bugs, and alignment with tools like DNF. Development on RPM5 effectively stalled after version 5.3.3 in 2010, rendering it defunct by the early 2020s as no major updates occurred and remaining users, such as OpenEmbedded, also migrated back to rpm.org due to unresolved stability issues. Other derivatives include ALT Linux's customized RPM variant, which extends the core with additional metadata tags for integration with its APT-RPM frontend, supporting features like enhanced and build identifiers (e.g., DistTag for repository tracking). These extensions facilitate ALT's branch-based development model across enterprise and embedded environments. Historical RPM4-based forks appeared in older distributions like and early , often to accommodate custom front-ends or kernel-specific packaging, but most converged on rpm.org by the mid-2010s to avoid fragmentation. Overall, the RPM5 and related derivatives highlighted tensions in RPM evolution but ultimately contributed to reduced fragmentation post-2020, as major distributions standardized on the rpm.org version for broader and active maintenance.

References

  1. [1]
    rpm.org - Home
    The RPM Package Manager builds software into packages, installs, updates, uninstalls, queries, and verifies software integrity.Documentation · Releases · Community · Contribute
  2. [2]
    Chapter 1. Getting started with RPM packaging
    The RPM Package Manager (RPM) is a package management system that runs on RHEL, CentOS, and Fedora. You can use RPM to distribute, manage, and update software.
  3. [3]
    RPM - Fedora Docs
    The RPM Package Manager only works with packages built in the RPM format. RPM itself is provided as the pre-installed rpm package. For the end user, RPM makes ...Installing and Upgrading... · Verifying Packages · Finding RPM Packages
  4. [4]
    About RPM - rpm.org
    RPM is quite a mature project in the OSS landscape, with first VCS commit of the current tree dating back to 1995. As such it can be an interesting dig site for ...Missing: origin | Show results with:origin
  5. [5]
    rpm-software-management/rpm: The RPM package manager - GitHub
    This is RPM, the RPM Package Manager. The latest releases are always available at: http://rpm.org/download.html Additional RPM documentation (papers, ...Rpm-software-management · Pull requests 8 · Issues · Workflow runs<|control11|><|separator|>
  6. [6]
    rpm package manager
    RPM is a command-line package manager for installing, uninstalling, verifying, querying, and updating Unix software packages. It is used in many Linux ...
  7. [7]
    Chapter 1. Introduction to RPM | Packaging and distributing software
    RPM is a package management system for RHEL, CentOS, and Fedora, used to distribute, manage, and update software. It manages packages that can be installed, ...
  8. [8]
    About RPM packages and the RPM package manager - CentOS SIGs
    RPM Package Manager (abbreviated with the recursive acronym, RPM) is a set of software tools used to build, install, uninstall, and otherwise manage RPM ...
  9. [9]
    rpm(8): RPM Package Manager - Linux man page
    Description. rpm is a powerful Package Manager, which can be used to build, install, query, verify, update, and erase individual software packages.
  10. [10]
    Timeline - rpm.org
    RPM renamed (Jan 17 2000). Originally known as Red Hat Package Manager, RPM was renamed to the more generic recursive acronym of RPM Package Manager. RPM 3.0 ...
  11. [11]
    Linux package management with YUM and RPM - Red Hat
    Apr 22, 2020 · Red Hat uses RPM and YUM/DNF for package management. YUM manages dependencies, while RPM can install/uninstall but not manage dependencies.
  12. [12]
  13. [13]
    Portal:Zypper - openSUSE Wiki
    Jun 24, 2023 · Zypper is a command line package manager which makes use of libzypp. Zypper provides functions like repository access, dependency solving, package installation ...
  14. [14]
    URPMI - Mageia wiki
    Sep 16, 2024 · urpmi is Mageia's command line tool for managing packages and repositories (media). For example you can install, update or remove software packages with it.urpmi.addmedia · urpmi · urpmq · A question of security
  15. [15]
    Packaging for PCLinuxOS
    If you have downloaded an existing PCLinuxOS SRPM then with pkgutils the process should be as simple as: Right click the SRPM and select Install SRPM for build.Missing: manager | Show results with:manager
  16. [16]
    Linux Statistics 2025: Desktop, Server, Cloud & Community Trends
    Aug 3, 2025 · The Linux OS market is projected to grow to $18.73 billion by 2029. In 2025, the market size is expected to reach $9.1 billion, showing strong ...
  17. [17]
    GNU/Linux Crosses 6% Desktop Market Share—And It's Just the ...
    Aug 29, 2025 · 2024: Over 4%; 2025: 5–6%+. The acceleration is real. And it's not just techies anymore—modern GNU/Linux distros like Purism's own PureOS ...
  18. [18]
    What is Podman? - Red Hat
    Jun 20, 2024 · Podman is an open source tool for developing, managing, and running containers on your Linux systems.Overview · How does Podman manage... · What is Podman Desktop?
  19. [19]
    Flatpak—the future of application distribution
    ### Summary of Flatpak Compatibility and Key Details
  20. [20]
    The History of Red Hat - by Bradford Morgan White - Abort, Retry, Fail
    Sep 9, 2023 · Marc Ewing was born on the 9th of March in 1969, and is the son of an IBM programmer. He was an entrepreneur by the age of 10. He played the ...
  21. [21]
    Everything to Know About Red Hat Enterprise Linux
    May 15, 2023 · : Red Hat Linux used the RPM (Red Hat Package Manager) format for its installable packages, which is still used in Fedora and RHEL today.
  22. [22]
    RPM Guide - rpm package manager
    Developers at Red Hat, particularly Marc Ewing and Erik Troan, set out to develop what they initially called the Red Hat Package Manager (RPM). Based on ...
  23. [23]
    Maximum RPM - rpm package manager
    Later, Rik Faith and Doug Hoffman, working under contract for Red Hat, produced PM. The design combined all the important features of RPP and PM, including one ...
  24. [24]
    History of Red Hat Linux - Fedora Project Wiki
    ... releases used the "a.out" format. Early Fall 1995, RHL 2.0 ? First formal release using RPM. Marketing typography called this "Red Hat LiNUX". November 1995 ...
  25. [25]
    Chapter 23. RPM Feature Evolution - Jeff's Home Page
    RPM 3.0.5 added PayloadIsBzip2 support to RPM, allowing the data payload of RPM package files to be compressed using bzip2 instead of gzip. Even though RPM now ...Missing: Manager 2000
  26. [26]
    RPM Package Manager (RPM) version 5.0.0 released
    Jan 5, 2008 · HISTORY OF RPM RPM was originally written in 1997 by Erik Troan and Marc Ewing for use in the Red Hat Linux distribution. Later the ...Missing: creation | Show results with:creation
  27. [27]
    RPM 5: a Fork in the Linux Packaging - OSnews
    Jan 9, 2008 · Linux vendor Red Hat officially considers RPM 5.0 a project fork. “RPM5 is a fork of RPM, and is not related to RPM.org,” Daniel Riek, Product ...Missing: history | Show results with:history
  28. [28]
    Features/DNF - Fedora Project Wiki
    Nov 15, 2015 · DNF is a fork of Yum 3.4 that uses libsolv via hawkey for a backend. The main goals of the project are: using a SAT solver for dependency resolving.
  29. [29]
    Managing packages on Fedora with DNF
    Sep 15, 2015 · Fedora 22 shipped with a rather significant change under the hood: the introduction of DNF (DaNdiFied YUM) as the default package manager.
  30. [30]
    RPM 6.0.0 Release Notes
    RPM 6.0.0 Release Notes. September 22, 2025. Download. Source: rpm-6.0.0.tar.bz2 ...
  31. [31]
    RPM 6.0 Released With OpenPGP Improvements & Enforces ...
    Sep 22, 2025 · RPM 6.0 Released With OpenPGP Improvements & Enforces Signature Checking By Default. Written by Michael Larabel in Red Hat on 22 September 2025 ...
  32. [32]
    Dependencies - rpm.org
    Dependencies provide a way for a package builder to require other packages or capabilities to be installed before or simultaneously with one another.Missing: improvements | Show results with:improvements
  33. [33]
    How to sign rpms with GPG - Red Hat Customer Portal
    Oct 28, 2025 · RPM package signatures can be used to implement cryptographic integrity checks for RPM packages. This approach is end-to-end in the sense ...Missing: checksums | Show results with:checksums
  34. [34]
  35. [35]
    RPM Tags - rpm.org
    SHA256 digest of the header. Siggpg, 262, bin, OpenPGP DSA signature of the header+payload (if thus signed). Sigmd5, 261, bin, MD5 digest of the header+payload.
  36. [36]
    RPM 4.14.0 Release Notes
    Add a digest on the compressed payload content, verify on –checksig (GH:163) · Add a SHA256 digest on the header, verify similar to SHA1 · Add ...
  37. [37]
    rpm-software-management/deltarpm - GitHub
    deltarpms are like rpm-only deltarpms, but the target compression is uncompressed and there are no delta instructions, ie inn and outn are both zero.
  38. [38]
    rpm-scriptlets(7)
    Oct 30, 2025 · Triggers are package scriptlets that are set off by changes to other packages. Unlike scripts, triggers are only executed when their trigger ...
  39. [39]
    RPM 4.9.1.2 Release Notes - rpm.org
    This is a mainly a security update for CVE:2011-3378, with just one additional fix for a severe signal handling regression in RPM 4.9.1 and 4.9.1.1.Missing: historical vulnerabilities
  40. [40]
    AIX/VIOS is vulnerable to a memory corruption issue (CVE-2025 ...
    Oct 6, 2025 · Vulnerability in RPM could allow an attacker to cause a memory corruption issue (CVE-2025-6965). RPM is used by AIX for package management.
  41. [41]
    Security Bulletin: AIX/VIOS is vulnerable to arbitrary code execution ...
    Jul 17, 2025 · Vulnerabilities in RPM could allow an attacker to execute arbitrary code (CVE-2025-3277, CVE-2025-29087) or cause a denial of service (CVE-2025- ...<|separator|>
  42. [42]
    Chapter 3. Signing a kernel and modules for Secure Boot
    To use a custom kernel or custom kernel modules on a Secure Boot-enabled system, you must generate a public and private X.509 key pair.Missing: modern | Show results with:modern
  43. [43]
    RPM File Format - Ftp
    Binary package file (type = 0000). Source package file (type = 0001). In this case, the file is a binary package file. The next two bytes (0001) are used to ...
  44. [44]
    RPM V6 Package format
    V6 Package format DRAFT. This document describes the RPM file format version 6, which is used by RPM versions 6.x and with limitations, readable with 4.x.
  45. [45]
    Packaging and distributing software | Red Hat Enterprise Linux | 9
    An SRPM contains source code and a spec file, which describes how to build the source code into a binary RPM. Optionally, the SRPM can contain patches to source ...
  46. [46]
    RPM Packaging Guide
    RPM allows you to take pristine software sources and package them into source and binary packages for your users. In source packages, you have the pristine ...Why Package Software with... · Your First RPM Package · Packaging Software
  47. [47]
    Spec file format - rpm.org
    The end result of all this, though, is that you can't rebuild ``no-source'' RPM packages using `rpm –rebuild' unless you also have the sources or patches which ...Missing: SRPM | Show results with:SRPM
  48. [48]
    rpmbuild(1) - rpm.org
    Oct 7, 2025 · rpmbuild is used to build software packages in the RPM format, in an automated and repeatable manner. A package consists of an archive of files ...
  49. [49]
    RPM Packaging Guide | Red Hat Enterprise Linux | 7
    RPM enables you to: Install, reinstall, remove, upgrade and verify packages with standard package management tools, such as Yum or PackageKit.
  50. [50]
    Fedora Packaging Guidelines
    RPM gives you the ability to depend on arbitrary files or directories instead of packages. Packages MAY include such dependencies for paths inside one of the ...RPM Macros · RPM Source Dir · LibreOffice extension rpm... · Scriptlets
  51. [51]
    Naming Guidelines - Fedora Docs
    Package names SHOULD be in lower case and use dashes in preference to underscores. You can take some cues from the name of the upstream tarball, the project ...General Naming · When Upstream Naming is... · Multiple packages with the...
  52. [52]
    [f36] RPM
    ### Summary of RPM Database Details
  53. [53]
    How can I backup the RPM database? - Red Hat Customer Portal
    May 27, 2025 · The RPM database is located in /var/lib/rpm directory. Files beneath this directory hold the installed package.Missing: dump | Show results with:dump
  54. [54]
    Changes/Sqlite Rpmdb - Fedora Project Wiki
    Nov 20, 2020 · We propose to change the default rpmdb format to the new sqlite based implementation. Support for current BDB format will be retained in Fedora 33.Sqlite RpmDB · Detailed Description · Scope · How To Test
  55. [55]
    Chapter 12. Package Management with RPM | Deployment Guide
    The RPM Package Manager (RPM) is an open packaging system, which runs on Red Hat Enterprise Linux as well as other Linux and UNIX systems.
  56. [56]
    rpm(8)
    Oct 7, 2025 · rpm is a powerful Package Manager, which can be used to build, install, query, verify, update, and erase individual software packages. A package ...Missing: contents | Show results with:contents
  57. [57]
    How to rebuild RPM database on a Red Hat Enterprise Linux system?
    Sep 22, 2025 · On doing rpm query or install, it is failing with following error: Raw. error: rpmdbNextIterator: skipping h# 1601 Header V4 RSA/SHA1 ...
  58. [58]
    4.5.2. Rebuilding the RPM database - Jeff's Home Page
    If the RPM database has been corrupted in some way, you can use the --rebuilddb option to tell the rpm command to rebuild your database. For example: rpm -- ...
  59. [59]
    RPM Database Recovery - rpm.org
    Most problems can then be solved by running rpmdb --rebuilddb which creates the database structure from the RPM headers that are also stored in the database.
  60. [60]
    testing RPM 5 in practice: Berkeley-DB to SQLite migration with
    | /openpkg-rpm5/RPM/DB.test/Packages: SQLite database (Version 3) | /openpkg ... If you are seeing /var/lib/rpm/Depends, then the issue is not fixed.
  61. [61]
    How to debug recurring rpm database corruption
    Jul 14, 2025 · Recurring rpm corruption is caused by stale lock files. Use `fuser -v /var/lib/rpm` to find processes, then `rm /var/lib/rpm/__db*` to clear ...Missing: SQLite | Show results with:SQLite
  62. [62]
    What's inside an RPM .repo file? - Red Hat Developer
    Oct 7, 2022 · The .repo files stored in the /etc/yum.repos.d directory of the local machine play a critical role in discovering, installing, and managing RPM packages.
  63. [63]
    DNF Configuration Reference - Read the Docs
    DNF by default uses the global configuration file at /etc/dnf/dnf.conf and all *.repo files found under /etc/yum.repos.d . The latter is typically used for ...
  64. [64]
    yum repository internals - Packagecloud Blog
    Jul 19, 2015 · yum repository metatadata is structured as a series of XML files, that contain checksums of other files, and the packages to which they refer.
  65. [65]
    openSUSE:Standards Rpm Metadata
    May 3, 2022 · RPM XML Metadata format is mostly used for online repositories on the internet. It has its origins in the YUM package manager.
  66. [66]
    createrepo(8): Create repomd repository - Linux man page - Die.net
    createrepo is a program that creates a repomd (xml-based rpm metadata) repository from a set of rpms. Options. -u --baseurl <url>: Optional base URL location ...Missing: tool | Show results with:tool
  67. [67]
    8.4.6. Creating a Yum Repository - Red Hat Documentation
    To create a Yum repository, install createrepo, copy packages to a directory, then use `createrepo --database /mnt/local_repo` to create metadata.
  68. [68]
    Changes/Drop Delta RPMs - Fedora Project Wiki
    Oct 19, 2023 · Delta RPMs are an optimization that reduces the amount of data that needs to be downloaded for package updates, by only downloading the parts ...
  69. [69]
    The Origin of RPM Content — Pulp Project 2.19.1 documentation
    The metadata, usually located in a directory called “repodata” in the root of the repository, is contained in several XML and/or optionally several SQLite files ...
  70. [70]
    How to set repository priorities. - Red Hat Customer Portal
    Aug 7, 2024 · To set repository priorities, use the "yum-plugin-priorities" plugin in Red Hat Enterprise Linux 6 & 7.
  71. [71]
    RPM and GPG: How to verify Linux packages before installing them
    Jun 16, 2020 · The rpm utility uses GPG keys to sign packages and its own collection of imported public keys to verify the packages.Missing: MD5 | Show results with:MD5
  72. [72]
    NAME - rpm.org
    A package consists of an archive of files and meta-data used to install and erase the archive files. The meta-data includes helper scripts, file attributes, and ...
  73. [73]
    RPMBUILD
    ### Summary of rpmbuild Command-Line Operations (from rpmbuild.8 man page)
  74. [74]
    What Is YUM Package Manager? - Packagecloud Blog
    YUM (Yellowdog Updater Modified) package manager is a free open source front-end to RPM package manager and provides enhanced capabilities.
  75. [75]
    How to Use DNF to Manage Packages in CentOS/RHEL 8 and Fedora
    May 21, 2021 · Dandified YUM, or simply DNF, is the successor to the popular Yellowdog Updater, Modified package manager, more commonly known as YUM.Before You Begin · Navigate Packages · Automate Package Updates
  76. [76]
    DNF vs. YUM: Learn the Differences - phoenixNAP
    Nov 16, 2023 · The dependency resolution process is slower and more resource-intensive in YUM than in DNF. It is slow because YUM computes the dependencies for ...
  77. [77]
    Chapter 6. New features in RHEL 8 | Red Hat Enterprise Linux | 8
    This section documents the most notable changes in RPM packaging between Red Hat Enterprise Linux 7 and 8.Missing: capabilities | Show results with:capabilities
  78. [78]
    Zypper package manager - SUSE Documentation
    Oct 27, 2025 · Zypper is a command-line package manager for installing, updating, and removing packages. It is faster and suitable for systems without a GUI.
  79. [79]
    urpmi man | Linux Command Library
    urpmi is the powerful command-line package management system primarily used in Mandriva Linux and its spiritual successor, Mageia.
  80. [80]
    Chapter 1. Installing software in GNOME - Red Hat Documentation
    GNOME Software is an utility that enables you to install and update applications and software components in a graphical interface.
  81. [81]
    Discover - KDE Applications
    Discover helps you find and install applications, games, and tools. You can search or browse by category, and look at screenshots and read reviews.
  82. [82]
    Installing or removing software | Administration Guide | SLES 15 SP7
    Using YaST's software management module, you can search for software packages as well as install and remove them. When installing packages, YaST automatic…
  83. [83]
    Yum vs. Dnf: All You Need To Know - NameHero
    Jan 3, 2024 · Dnf is yum's replacement and is superior in every way. But it can be hard to switch to another package manager, so here are all the ways in ...
  84. [84]
    Moving from apt to dnf package management - Red Hat Developer
    Oct 7, 2022 · The article explains the similarities and differences between APT and RPM. I show how to execute specific, commonplace package management tasks using each ...
  85. [85]
  86. [86]
  87. [87]
    rpm.org - Community
    ### Community Summary
  88. [88]
    OpenPKG supports rpm5.org - LWN.net
    May 29, 2007 · The RPM Package Manager (RPM) is a central technology in the OpenPKG cross-platform multiple-instance Unix software distribution.<|separator|>
  89. [89]
    OpenMandriva Switching Back From RPM5 To RPM4 - Phoronix
    Mar 5, 2018 · It was seven years ago that Mandriva 2011 switched to using RPM5 from RPM4, but now for the next OpenMandriva release they are transitioning ...Missing: fork history
  90. [90]
    Jeff Johnson About to Fork rpm – Again - OSnews
    May 2, 2011 · The rpm 5 migration was decided by Mandriva management, citing reasons related to the European research project Mancoosi in a message by Arnaud ...
  91. [91]
    sisyphus - rpm - Specfile - ALT Linux Packages
    - Fixed support of APT external tags (ALT#32887). - Define RPM_INSTALL_{NAME ... variant and implemented '-q --changes-since=<e:v-r>' upon them (docs ...
  92. [92]
    Who maintains RPM? (2011 edition) - LWN.net
    May 3, 2011 · But much of the trouble seems to come from the fact that Mageia - a fork of Mandriva - has not followed Mandriva into the rpm5 transition.