Hubbry Logo
DNF (software)DNF (software)Main
Open search
DNF (software)
Community hub
DNF (software)
logo
8 pages, 0 posts
0 subscribers
Be the first to start a discussion here.
Be the first to start a discussion here.
DNF (software)
DNF (software)
from Wikipedia
Dandified Yum
DeveloperRed Hat
Initial release18 January 2012; 13 years ago (2012-01-18)[1]
Stable release
5.3.0.0[2] Edit this on Wikidata / 4 November 2025; 20 days ago (4 November 2025)
Repositoryhttps://github.com/rpm-software-management/dnf,[3] https://github.com/rpm-software-management/dnf5[4] Edit this on Wikidata
Written in
Operating systemLinux, IBM AIX
PlatformRPM
Available inEnglish
TypePackage management system
LicenseGPLv2+ & LGPLv2.1+ & New BSD License
Websiterpm-software-management.github.io

DNF (abbreviation for Dandified YUM)[7][8][9] is a package manager for Red Hat-based Linux distributions and derivatives. DNF was introduced in Fedora 18 in 2013 as a replacement for yum;[10] it has been the default package manager since Fedora 22 in 2015[11] and Red Hat Enterprise Linux 8 in 2019[12] and is also an alternative package manager for Mageia. DNF performs package management tasks on top of RPM, and supporting libraries.

Usage

[edit]

The DNF package manager works similarly to other package managers.[13] Its core usage works very similarly to the Apt Package Manager, such as install, remove, update, and upgrade.[14][13]

Usage for basic command is as follows:[13]

sudo dnf install <package_name>

sudo dnf remove <package_name>

sudo dnf update

sudo dnf upgrade

History

[edit]

Perceived deficiencies of yum (which DNF is intended to address) include poor performance, high memory usage, and the slowness of its iterative dependency resolution.[15] DNF uses libsolv, an external dependency resolver.[15]

DNF was originally written in Python, but as of 2016, efforts were under way to port it to C and move most functionality from Python code into the new libdnf library[needs update].[16] In 2018, the DNF team announced the decision to move libdnf from C to C++.[17][18] libdnf is already used by PackageKit, a Linux distribution-agnostic package system abstraction library, even though the library doesn't have most of DNF's features.[19]

Since the launch of Fedora Linux 41, DNF5 is the new default packaging tool. This release features new performance enhancements, updated terminal output, and fully integrated modularity.[20]

Adoption

[edit]

DNF has been the default command-line package manager for Fedora since version 22, which was released in May 2015.[11] The libdnf library is used as a package backend in PackageKit,[19] which offers a graphical user interface (GUI). Later, dnfdragora was developed for Fedora 27 as another alternative graphical front-end of DNF.[21][22] DNF has also been available as an alternate package manager for Mageia Linux since version 6 and may become the default sometime in the future.[23]

In Red Hat Enterprise Linux, and by extension, AlmaLinux and Rocky Linux, yum is an alias for dnf.[12]

References

[edit]
[edit]
Revisions and contributorsEdit on WikipediaRead on Wikipedia
from Grokipedia
DNF (Dandified YUM) is an open-source command-line for RPM-based distributions, designed to handle the installation, updating, removal, and querying of software packages while automatically resolving dependencies. It serves as the direct successor to the YUM (Yellowdog Updater, Modified) tool, offering improved performance, reduced memory usage, and enhanced dependency resolution through the libsolv library. Developed by the Fedora Project and the broader RPM Software Management community, DNF was first introduced in Fedora 18 in 2013 as an experimental alternative to YUM, addressing limitations in speed and scalability. It achieved version 1.0 stability in 2015 and became the default package manager in Fedora 22 that same year, with backward compatibility for most YUM commands to ease the transition. In 2025, DNF5 was released as a major rewrite, becoming the default in Fedora 43 and further enhancing performance. Originally written primarily in Python and licensed under the GNU General Public License version 2 or later, DNF5 is implemented in C++ and leverages libdnf5 for core functionality (incorporating librepo for repository metadata handling), along with libsolv for dependency resolution. DNF has been widely adopted across RPM-based distributions, including (RHEL) starting from version 8, , , , and Amazon Linux 2023, where it replaced YUM as the primary tool for managing software from RPM repositories. In addition to basic package operations, it supports advanced features like modular (e.g., and profiles in RHEL), GPG verification for secure downloads, plugin extensibility, and transaction history for rollbacks. These capabilities make DNF a robust solution for system administrators, enabling efficient software lifecycle management in enterprise and community environments.

Overview

Description

DNF, or Dandified YUM, is a command-line designed for RPM-based distributions such as and . It facilitates the installation, updating, removal, and querying of software packages, enabling users to manage software efficiently from . As the successor to YUM, DNF provides a more modular and performant alternative for handling package operations in these ecosystems. The core purpose of DNF is to automate dependency resolution, ensuring that all required libraries and components are correctly identified and installed during package operations. It manages repositories by fetching packages and their metadata from configured sources, while also handling updates to simplify overall software maintenance on systems. This reduces manual intervention, minimizing errors in complex dependency chains common to RPM-based environments. In operation, DNF relies on repositories specified in configuration files, such as those in /etc/yum.repos.d/, to download RPM packages over the network. Once fetched, it integrates these packages with the system's libraries and file structure during installation, supporting secure GPG-signed verification to maintain integrity. Versions 1 through 4 of DNF are implemented in Python, providing extensibility through scripting and plugins. Starting with DNF5, the core has transitioned to C++ for enhanced performance in dependency solving and overall execution speed.

Key Features

DNF supports modular repositories, which allow for the organization and delivery of software in discrete units called modules, enabling users to select specific versions or of applications without affecting the base . This design facilitates faster metadata handling through efficient repository structures that include modular metadata alongside standard RPM files, reducing the overhead of parsing large monolithic repositories. A key efficiency feature is the parallel downloading of packages and metadata, configurable via options like max_parallel_downloads, which significantly reduces the time required for updates by fetching multiple files simultaneously from repositories. In DNF5, this extends to parallel metadata downloads, further optimizing initial repository synchronization. DNF employs strict dependency resolution powered by SAT (Boolean Satisfiability) solvers from the libsolv library, ensuring that installations are conflict-free by modeling dependencies as logical constraints and finding optimal solutions. This approach provides robust handling of complex dependency graphs, guaranteeing system stability during package operations. The dependency resolution process integrates seamlessly with modular content, allowing for precise version selections. For security, DNF includes built-in GPG signature verification, which checks the authenticity and integrity of packages and repository metadata using imported public keys, preventing the installation of tampered or unsigned content by default. To minimize network usage, DNF implements comprehensive caching mechanisms for both metadata and downloaded packages, storing repository information in /var/cache/dnf and retaining packages via the keepcache configuration option, which allows reuse in subsequent operations or offline scenarios. DNF integrates natively with modules for application streams, enabling the management of multiple concurrent versions of software stacks, such as different releases of Python or , through commands that enable specific streams and install associated profiles. This feature supports flexible development environments by isolating version-specific dependencies. DNF5, a complete rewrite of the original DNF in C++, delivers substantial performance enhancements, including significantly faster resolution times in benchmarks due to optimized algorithms and reduced overhead compared to the Python-based predecessor. As of Fedora 41 in 2024, DNF5 has become the default , enhancing performance across RPM-based distributions.

History

Development Origins

DNF originated in as a initiative to modernize the aging YUM package manager, primarily addressing its performance bottlenecks in handling large repositories where dependency resolution was slow and resource-intensive. YUM's ad-hoc dependency checking methods often resulted in unpredictable outcomes and excessive processing times—reportedly up to four times slower than simple file extraction operations—prompting the need for a more efficient successor. The project was spearheaded by Red Hat developer Aleš Kozumplík, who forked YUM version 3.4 and integrated his Hawkey library as the new backend, wrapping the libsolv solver to enable SAT-based dependency resolution. The development effort involved the broader team, including contributions from the RPM Fusion for testing and integration with third-party repositories, alongside upstream enhancements to libraries like libdnf for core functionality. Initial goals focused on accelerating dependency solving speeds, minimizing memory consumption during operations—addressing YUM's high RAM usage in complex scenarios—and fostering greater to support future extensions like package layering. These objectives aimed to create a scalable tool capable of managing growing repository sizes without the inefficiencies that plagued YUM in enterprise and environments. DNF made its experimental debut in 18, released in 2013, where it served as an optional alternative to YUM rather than a full replacement, allowing users to test its capabilities during the transition period. Designed explicitly as a drop-in compatible tool, it preserved YUM's and configuration syntax for seamless adoption while introducing the Hawkey backend for querying and resolving dependencies more reliably and swiftly. This phased approach ensured stability as the project matured toward becoming the default in later versions.

Major Releases

DNF 1.0 was released in May 2015 with 22, where it became the default , replacing Yum and introducing the libdnf for core functionality along with basic concepts. The DNF 2.x series, developed from 2016 to 2018, introduced advanced module support in 28 released in May 2018, allowing users to manage versioned application streams for streamlined software delivery. DNF 4.x versions, spanning 2019 to 2022, were integrated as the underlying technology for YUM in 8 upon its release in May 2019, featuring enhancements in error handling, dependency resolution, and repository configuration management. DNF5, whose development began in 2020 and represents a complete rewrite in C++ with direct integration of the libsolv library for superior solver performance and reduced resource usage, debuted as the default in 41 in October 2024. It has since become the default in subsequent releases, including 42 (April 2025) and 43 (October 2025). Support for DNF versions 1 through 4 follows the lifecycle of their respective releases, with transitions to DNF5 beginning in Fedora 41; RHEL continues to use DNF 4.x with support until at least 2029.

Technical Architecture

Dependency Resolution

DNF employs the libsolv library as its core dependency resolver, which formulates package dependencies as a satisfiability (SAT) problem to efficiently determine valid installation sets. This approach replaces earlier ad-hoc methods with a more robust , enabling DNF to handle complex inter-package relationships across large repositories by modeling requirements, conflicts, and alternatives as logical clauses. The resolution process begins with parsing metadata from RPM repositories and the local RPM database using the hawkey library, which interfaces with libsolv to construct a . Libsolv then generates a SAT problem instance from this graph, where packages are variables and dependencies form constraints, and applies optimized SAT-solving algorithms to identify the minimal set of packages that satisfies all conditions while minimizing conflicts and upgrades. This results in an optimal transaction set that balances user requests with system stability. DNF distinguishes between strict dependencies (e.g., "Requires") and weak dependencies (e.g., "Recommends" or "Suggests"), with the SAT solver enforcing strict ones as mandatory clauses while treating weak ones as optional unless configured otherwise via the best option. Obsoletes are modeled as disjunctive choices, allowing the solver to select newer packages that replace older ones, and conflicts are represented as negative clauses that prevent incompatible combinations. In DNF5, the dependency solver benefits from a complete rewrite in C++ using libdnf5, which integrates libsolv more tightly and yields significant performance gains, such as reducing resolution times for system-wide queries from over 15 seconds in DNF4 to under 3 seconds (as of 2024 benchmarks). These optimizations stem from improved data structures and reduced overhead, though the core remains single-threaded; parallelization is applied elsewhere, like repository metadata loading. Common error cases arise when the SAT solver finds no satisfying assignment, such as "nothing provides" errors, which occur if a required dependency lacks any available provider in the repositories or local system. "Conflicting requests" indicate unsolvable constraints, often due to mutual conflicts between packages or obsoletes that cannot be resolved without violating other dependencies, prompting users to adjust requests or enable additional repositories.

Plugins and Extensions

DNF's extensibility is primarily achieved through its plugin system, which allows users and developers to modify or enhance the package manager's behavior without altering its core codebase. In versions 1 through 4, plugins are implemented in Python and operate by subclassing the dnf.Plugin base class, enabling them to hook into various stages of DNF's operation, such as configuration loading, repository resolution, transaction preparation, and post-execution cleanup. These hooks include events like pre_config for initial setup adjustments, resolved for inspecting transactions after dependency resolution, pre_transaction for actions before package installation or removal, and post_transaction for follow-up tasks after completion. Plugins cannot directly modify the core dependency solver logic but can filter search results, add custom metadata to packages, or execute scripts at hooked points to extend functionality. With the release of DNF5 (default in since 2024 and as of 2025), the plugin architecture shifted to C++ to align with the rewritten libdnf5 library, introducing two plugin types: LIBDNF5 plugins, which are passive and use hooks to inject logic into library operations (e.g., pre-transaction verification or post-install notifications), and DNF5 CLI plugins, which actively add new commands to the interface (e.g., dnf5 builddep for resolving build dependencies). This change ensures better performance and tighter integration but renders Python plugins from prior versions incompatible, requiring rewrites for continued use. Developers implement these by defining that inherit from plugin base interfaces and register hooks via the plugin loader, with configuration handled separately from core DNF settings. Official plugins for DNF5 are distributed primarily through the dnf5-plugins package, which bundles several utilities to address common administrative needs (as of 42 in 2025). For instance, the dnf5-plugin-automatic enables scheduled automatic updates, downloads, or s based on configurable timers and criteria, often integrated with timers for unattended maintenance. The builddep plugin resolves and installs build-time dependencies for source packages, facilitating development workflows. Similarly, needs-restarting assesses whether a system is required post-update by checking for modified libraries or services, while debuginfo-install fetches symbols for installed binaries to aid in crash analysis. Other core plugins like config-manager allow runtime enabling or disabling of repositories, and download retrieves RPM files without installing them. Third-party extensions expand DNF's capabilities for specialized environments, such as handling or enterprise integration. RPM Fusion repositories, for example, include plugins that automatically enable codecs and drivers during installation, streamlining access to restricted content. In enterprise settings, custom plugins or scripts—often built on the hook system—integrate DNF with tools like snapshot managers (e.g., for or LVM) to create backups before transactions or synchronize with configuration management systems like . Plugins for legacy DNF are configured via files in the /etc/dnf/plugins/ directory, where each plugin has a .conf file defining options like enabled=1. The main /etc/dnf/dnf.conf file includes a plugins directive (default: 1) to toggle the entire system, and additional paths can be specified via pluginpath. For DNF5, the plugins option (default: True) in the [main] section of /etc/dnf/dnf.conf enables libdnf5 plugins, with configurations in /etc/dnf/libdnf5-plugins/ (via pluginconfpath) and plugins loaded from /usr/lib64/libdnf5/plugins/ (via pluginpath). This modular setup allows selective enabling to avoid overhead from unused features.

Usage and Configuration

Installation and Setup

DNF is pre-installed by default on releases starting from version and on (RHEL) versions 8 and later, providing immediate access to package management functionality without additional steps for users of these distributions. For older, end-of-life systems such as RHEL 7 or 7 (EOL June 2024), manual installation is required by first enabling the Extra Packages for Enterprise Linux (EPEL) repository and then executing yum install dnf (bootstrapping via YUM for the initial DNF package). Key prerequisites for DNF include the , which handles the underlying package database and transactions. Versions 1 through 4 of DNF require Python 3 as the runtime environment, while DNF5 shifts to the libdnf C++ library for improved performance and reduced dependencies. Additionally, allocate at least 100 MB of disk space for metadata caches and downloaded packages, though actual usage may vary based on repository size and transaction volume. Initial setup involves configuring repositories, typically by editing or adding files in the /etc/yum.repos.d/ directory to define base URLs, enabled status, and GPG key verification for package authenticity. Enable GPG keys for trusted repositories using rpm --import <keyfile> to avoid verification prompts during operations. Conclude setup by running dnf clean all to clear any existing metadata and fetch fresh repository data, ensuring the system is ready for package management tasks. When upgrading from YUM on compatible systems, DNF maintains through command-line aliases, where yum symlinks to dnf, allowing seamless transition without altering scripts or habits. Metadata from YUM is automatically migrated due to shared database formats, though users should verify repository configurations post-upgrade to align with DNF's resolution features. As of 2025, migrating to DNF5—now the default in 41 and subsequent releases—involves using dnf5 commands alongside legacy dnf (DNF4) during the transition period, with both tools sharing configuration files for minimal disruption. This parallel usage supports testing and gradual adoption, particularly in environments requiring stability before full switchover.

Common Commands

DNF provides a (CLI) for managing software packages on RPM-based distributions, with commands designed for simplicity and efficiency in handling installations, updates, and queries. Core commands focus on basic package operations, while query and repository management tools aid in discovery and configuration. Advanced features support and history tracking, and DNF5 introduces enhancements for modular environments.

Core Commands

The dnf install <package> command installs the specified package along with all required dependencies automatically, resolving conflicts and ensuring system consistency. For system maintenance, dnf update upgrades all installed packages to their latest available versions or targets specific packages if provided, incorporating security patches and feature updates. To uninstall, dnf remove <package> deletes the named package and any dependencies that are no longer needed by other installed software.

Query Commands

Package discovery begins with dnf search <term>, which scans repository metadata for packages matching the given keywords in names, summaries, or descriptions. To view locally installed packages, dnf list installed displays a list of all packages on the system, optionally filtered by name or . For detailed information, dnf info <package> retrieves the package's , , version, , and dependencies from the repository or local installation.

Repository Management

The dnf repolist command lists all enabled repositories, showing their IDs, names, and status, with options to include disabled or all repositories for comprehensive oversight. To activate a repository, dnf config-manager --enable <repo> sets the specified repository as enabled, allowing access to its packages without editing configuration files manually.

Advanced Commands

For reverting changes, dnf downgrade <package> installs the highest available lower version of the specified package, useful for addressing regressions in updates. Transaction logging is managed via dnf history, which lists past operations, provides details on specific transactions, or allows undoing and redoing them to maintain audit trails.

DNF5 Specifics

In DNF5, the dnf5 swap <old> <new> command facilitates module switches by removing the old package or module stream and installing the new one in a single atomic transaction, minimizing downtime during transitions. As of 2025, DNF5 features improved output formatting with enhanced readability, including better alignment and color-coded progress indicators for command results. Certain commands can be extended through plugins for additional functionality, such as custom repository handling.

Configuration Files

DNF's primary global configuration file is located at /etc/dnf/dnf.conf, which uses an INI format consisting of sections such as [main] for system-wide settings. This file controls behaviors like cache management and network options, with the [main] section specifying the default directory for cached data via the cachedir option, typically set to /var/cache/dnf on most distributions. For instance, the keepcache option, defaulting to False, determines whether downloaded packages are retained after installation; setting it to True preserves them for potential reuse or debugging. Key options in the [main] section also include bandwidth throttling with the throttle parameter, which limits speeds (e.g., throttle=1M for 1 per second) and defaults to 0 for unlimited throughput. Proxy configurations are handled by the proxy directive, specifying a URL like proxy=http://proxy.example.com:8080 if no is set. Additionally, is adjusted via debuglevel, ranging from 0 to 10 with a default of 2, allowing finer control over log output (e.g., debuglevel=5 for more detailed traces). Repository-specific configurations are defined in .repo files under /etc/yum.repos.d/, where each file contains one or more [repo-id] sections identifying the source. Essential directives include baseurl for listing mirror URLs (e.g., baseurl=http://mirror.example.com/fedora/), enabled=1 to activate the repository (defaulting to True), and gpgcheck=1 to enforce GPG signature verification on packages (defaulting to True). These files enable customized package sources while maintaining security and availability controls. Module streams, which allow selection of specific versions for modular content like programming languages, are configured through files in the /etc/dnf/modules.defaults.d/ drop-in directory. For example, to set Python 3.11 as the default , a file such as /etc/dnf/modules.defaults.d/python.yaml can contain:

module: python [stream](/page/Stream): 3.11 profiles: - default

module: python [stream](/page/Stream): 3.11 profiles: - default

This establishes system-wide defaults without altering repository metadata. In DNF5, the successor to earlier versions, the configuration structure remains compatible with /etc/dnf/dnf.conf in INI format, ensuring seamless adoption across and compatible distributions as of 2025, with shared settings among components for consistency.

Comparison to YUM

Similarities

DNF maintains significant continuity with its predecessor, YUM, particularly in the , to ensure seamless for users. Core operations utilize identical syntax; for instance, the command yum install <package> is directly equivalent to dnf install <package>, allowing scripts and workflows developed for YUM to function without modification under DNF. This compatibility extends to other fundamental commands, such as yum update and dnf update, preserving user familiarity across RPM-based distributions. The repository configuration format is another area of shared design, with DNF fully supporting the same .repo files used by YUM, typically located in /etc/yum.repos.d/. These files adhere to identical standards for defining repository URLs, GPG keys, and metadata expiration policies, enabling direct reuse without reconfiguration. Furthermore, both tools rely on the same RPM metadata formats for package information, ensuring in repository management and caching. In terms of transaction handling, DNF and YUM employ a comparable model centered on atomic operations, where installations, updates, or removals are executed as indivisible units to maintain integrity. Both provide capabilities through a transaction mechanism; for example, the dnf history undo <ID> command mirrors yum history undo <ID>, allowing reversal of specific transactions recorded in their respective databases while sharing the RPM database at /var/lib/rpm for package state. This facilitates consistent auditing and recovery across both package managers. Output formatting and logging exhibit strong similarities, with both DNF and YUM producing verbose textual logs during operations, including details on downloaded packages, dependencies, and resolution steps. Progress indicators, such as progress bars for downloads and installations, are present in both, offering visual feedback in terminal sessions that aligns closely in style and information density. DNF integrates seamlessly with the broader RPM ecosystem, just as YUM does, by directly interfacing with the RPM database at /var/lib/rpm for querying, installing, and verifying packages. Tools like rpmbuild for creating RPM packages remain fully compatible, as DNF handles the same binary and source RPM formats without alteration. This shared foundation ensures that ancillary utilities, such as rpm for low-level package manipulation, operate identically in conjunction with either manager.

Improvements and Differences

DNF introduced significant performance enhancements over YUM through its adoption of the libsolv library for dependency resolution, which employs a to handle complex dependencies more efficiently. Benchmarks from early development showed substantially faster dependency resolution compared to YUM. Additionally, DNF exhibits lower memory usage, with a leaner that reduces overall during package management tasks, making it more suitable for resource-constrained environments. In terms of , DNF provides native support for and modular repositories, allowing users to select specific versions of software stacks (e.g., different ) without conflicts, a capability absent in YUM which relied on traditional repository structures lacking versioned module handling. This is facilitated by DNF's strict for plugins and extensions, enabling better integration with tools like Anaconda and support for language bindings beyond Python. Error handling in DNF is more robust, offering clearer diagnostics and suggestions such as "did you mean" prompts for misspelled package names or alternative packages when dependencies fail, contrasting YUM's often cryptic error messages that provided limited guidance. DNF also supports multi-threaded parallel downloads for packages, accelerating updates and installations on high-bandwidth connections, whereas YUM performed downloads sequentially, leading to slower throughput. The evolution to DNF5, default in 41 (2024) and later as of 2025, represents a substantial rewrite of the frontend in C++, eliminating the Python overhead present in both YUM and earlier DNF versions, resulting in faster repository loading and reduced dependency on Python runtime. DNF5 further introduces container-native installation capabilities, such as integration with bootc for atomic container management, which YUM lacked entirely. These advancements contributed to YUM's , with its removal in 31 in 2019 and full transition to DNF as the default in RHEL 9 in 2022, where YUM commands now alias to DNF.

Adoption

Supported Distributions

DNF serves as the default in Fedora starting with version 22, released in 2015. In Fedora 41 and later versions, released from 2024 onward, DNF5 became the default implementation, providing enhanced performance and user experience through a rewritten codebase and improved dependency resolution. Red Hat Enterprise Linux (RHEL) adopted DNF as its default with RHEL 8 in 2019, replacing YUM for better dependency handling and metadata efficiency. This continued in RHEL 9, released in May 2022, which maintains DNF as the primary tool and receives maintenance support until May 2032 as part of Red Hat's 10-year lifecycle policy. RHEL 10, released in May 2025, also uses DNF as the default . CentOS Stream followed a similar timeline, integrating DNF as the default in version 8 from 2019 to align with upstream RHEL developments. 10, generally available since December 2024, uses DNF 4 to align with RHEL 10 developments. Several other RPM-based distributions leverage DNF either as the default or as a supported option. Nobara, a gaming-oriented derivative of , utilizes DNF for system package management alongside its custom GUI frontend for handling both RPM and packages. and , as community clones of RHEL, employ DNF by default in their versions 8, 9, and 10 (released May and June 2025, respectively) for consistent enterprise compatibility. In , DNF is available for installation from official repositories and can operate alongside the native Zypper manager, though it requires manual configuration for full repository integration without a dedicated bridge. As of 2025, Amazon Linux 2023 relies on DNF version 4 for package operations, maintaining compatibility with its YUM heritage while offering deterministic upgrade paths. 9 and later support DNF as the core tool, with DNF5 available through repositories in Oracle Linux 10 for users seeking performance optimizations. In enterprise environments, DNF integrates with Satellite for RHEL-based systems, enabling centralized content management, module handling, and automated updates via DNF commands within Satellite's provisioning workflows.

Community and Support

The development of DNF is hosted by the under the RPM Software Management umbrella, with contributions primarily managed through the official repository at rpm-software-management/dnf, where users can submit pull requests and issues. Discussions and coordination among developers occur via the Fedora devel at [email protected], which serves as the primary venue for technical debates, release announcements, and feature planning related to DNF. Documentation for DNF is comprehensive and includes official man pages accessible via the system's manual viewer, detailed usage guides in the Documentation project, and a dedicated command reference. For the latest iteration, DNF5, the official guide at dnf5.readthedocs.io provides in-depth coverage, including references to its C++ for developers integrating libdnf5 into applications, with updates reflecting enhancements as of 2025. User support for DNF is available through multiple channels tailored to different needs. Real-time assistance can be obtained via the IRC channel #dnf on , where developers and experienced users address technical queries. Community discussions occur on the official Discussion forum, while enterprise users of DNF in environments can access dedicated support through the Customer Portal, including knowledgebase articles and paid assistance. Bug tracking for DNF in is handled via , where users report issues, track fixes, and monitor package-specific problems. Upstream components, such as the libsolv dependency resolver library integral to DNF, maintain their issue tracker on at openSUSE/libsolv, allowing contributions to core solver improvements that benefit DNF. As of 2025, ongoing maintenance emphasizes deeper integration of DNF5 into tools like GNOME Software.

References

Add your contribution
Related Hubs
User Avatar
No comments yet.