DNF (software)#libsolv

{{Short description|Package manager for Red Hat systems}}

{{Infobox software

| name = Dandified Yum

| logo = DNF logo.png

| logo caption =

| logo_size =

| logo_alt =

| screenshot = File:DNF 5 on Fedora 41.png

| caption = DNF5 running on Fedora 41

| screenshot_size = 250px

| screenshot_alt =

| collapsible =

| developer = Red Hat

| released = {{Start date and age|2012|01|18|df=yes/no}}{{GitHub |rpm-software-management/dnf/tags?after=dnf-0.6.4-1 |Tag 0.6.4-1 for rpm-software-management/dnf}}

| discontinued =

| latest release version = {{Wikidata|properties|references|edit|P348|P548=Q2804309}}

| latest release date = {{Start date and age|{{Wikidata|qualifier|single|P348|P548=Q2804309|P577}}}}

| latest preview version = {{Wikidata|properties|references|edit|P348|P548=Q51930650}}

| latest preview date = {{Start date and age|{{Wikidata|qualifier|single|P348|P548=Q51930650|P577}}}}

| repo = {{Wikidata|properties|references|edit|P1324}}

| programming language = * dnf4: {{Wikidata|properties|references|edit|P277|P348=4}}

  • dnf5: {{Wikidata|properties|references|edit|P277|P348=5}}

| operating system = Linux, IBM AIX

| platform = RPM

| size =

| language = English

| language count =

| language footnote =

| genre = Package management system

| license = GPLv2+ & LGPLv2.1+ & New BSD License

| alexa =

| website = {{URL|https://rpm-software-management.github.io}}

| standard =

}}

DNF (abbreviation for Dandified YUM){{Cite web |title=DNF |url=https://fedoraproject.org/wiki/DNF |access-date=2018-05-21 |website=Fedora Project Wiki |archive-date=2018-10-14 |archive-url=https://web.archive.org/web/20181014204047/https://fedoraproject.org/wiki/DNF |url-status=live }}{{Cite web |title=What does DNF stand for |url=https://dnf.readthedocs.io/en/latest/user_faq.html#what-does-dnf-stand-for |access-date=2018-05-21 |website=DNF User's FAQ |archive-date=2018-10-14 |archive-url=https://web.archive.org/web/20181014204116/https://dnf.readthedocs.io/en/latest/user_faq.html#what-does-dnf-stand-for |url-status=live }}{{GitHub |rpm-software-management/dnf/blob/master/README.rst|README.rst · rpm-software-management/dnf}} 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;{{Cite web |last=Byfield |first=Bruce |title=Will DNF Replace Yum? |url=http://www.linux-magazine.com/Online/Features/Will-DNF-Replace-Yum |access-date=2015-05-28 |website=Linux Magazine |archive-date=2015-09-26 |archive-url=https://web.archive.org/web/20150926071643/http://www.linux-magazine.com/Online/Features/Will-DNF-Replace-Yum |url-status=live }} it has been the default package manager since Fedora 22 in 2015{{Cite web |date=2015-05-26 |title=Fedora 22 Released, See What's New [Workstation] |url=http://www.webupd8.org/2015/05/fedora-22-released-see-whats-new.html |access-date=2015-05-28 |publisher=WebUpd8 |archive-date=2015-09-25 |archive-url=https://web.archive.org/web/20150925093141/http://www.webupd8.org/2015/05/fedora-22-released-see-whats-new.html |url-status=live }} and Red Hat Enterprise Linux 8 {{When|date=December 2024}}{{Cite news |last=Matteson |first=Scott |date=2019-03-30 |title=What's new with Red Hat Enterprise Linux 8 and Red Hat Virtualization |work=TechRepublic |url=https://www.techrepublic.com/article/whats-new-with-red-hat-enterprise-linux-8-and-red-hat-virtualization/ |access-date=2019-09-24 |archive-date=2019-09-24 |archive-url=https://web.archive.org/web/20190924185646/https://www.techrepublic.com/article/whats-new-with-red-hat-enterprise-linux-8-and-red-hat-virtualization/ |url-status=live }} and is also an alternative package manager for Mageia. DNF performs package management tasks on top of RPM, and supporting libraries.

History

{{Needs expansion|date=December 2024}}

Perceived deficiencies of yum (which DNF is intended to address) include poor performance, high memory usage, and the slowness of its iterative dependency resolution.{{Cite web |last=Edge |first=Jake |date=2014-01-15 |title=DNF and Yum in Fedora |url=https://lwn.net/Articles/580223/ |access-date=2015-03-29 |publisher=LWN.net |archive-date=2015-09-30 |archive-url=https://web.archive.org/web/20150930225233/https://lwn.net/Articles/580223/ |url-status=live }} DNF uses libsolv, an external dependency resolver.

DNF was originally written in Python, but {{as of|2016|lc=yes}}, efforts were under way to port it to C and move most functionality from Python code into the new libdnf library{{Update needed|date=December 2024}}.{{Cite web |last=Šilhan |first=Jan |date=2016-02-24 |title=DNF into C initiative started |url=http://dnf.baseurl.org/2016/02/24/dnf-into-c-initiative-started/ |url-status=dead |archive-url=https://web.archive.org/web/20170702103537/http://dnf.baseurl.org/2016/02/24/dnf-into-c-initiative-started/ |archive-date=2017-07-02 |access-date=2017-07-05 |website=DNF blog}} In 2018, the DNF team announced the decision to move libdnf from C to C++.{{cite web |last1=Mach |first1=Daniel |last2=Mracek |first2=Jaroslav |date={{date|March 22, 2018}} |title=Announcing DNF 3 development |url=https://rpm-software-management.github.io/announcement/2018/03/22/dnf-3-announcement/ |website=DNF: A Blog of The DNF Team |access-date={{date|August 8, 2023}} |archive-date=September 18, 2018 |archive-url=https://web.archive.org/web/20180918123929/https://rpm-software-management.github.io/announcement/2018/03/22/dnf-3-announcement/ |url-status=live }}{{cite web |last=Edge |first=Jake |date={{date|March 28, 2018}} |title=DNF 3: better performance and a move to C++ |url=https://lwn.net/Articles/750238/ |website=LWN.net |access-date={{date|August 8, 2023}} |archive-date=October 14, 2018 |archive-url=https://web.archive.org/web/20181014204126/https://lwn.net/Articles/750238/ |url-status=live }} 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.{{Cite web |last=Aleksandersen |first=Daniel |date=2017-07-05 |title=Use DNF rather than PackageKit on Fedora |url=https://ctrl.blog/entry/packagekit-dnf |access-date=2017-08-07 |website=Ctrl blog |archive-date=2017-08-07 |archive-url=https://web.archive.org/web/20170807192837/https://ctrl.blog/entry/packagekit-dnf |url-status=live }}

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.{{Cite web |title=Changes/ReplaceDnfWithDnf5 |url=https://fedoraproject.org/wiki/Changes/ReplaceDnfWithDnf5 |access-date=2023-11-12 |archive-date=2023-11-12 |archive-url=https://web.archive.org/web/20231112164657/https://fedoraproject.org/wiki/Changes/ReplaceDnfWithDnf5 |url-status=live }}

Adoption

DNF has been the default command-line package manager for Fedora since version 22, which was released in May 2015. The libdnf library is used as a package backend in PackageKit, which offers a graphical user interface (GUI). Later, dnfdragora was developed for Fedora 27 as another alternative graphical front-end of DNF.{{Cite web |title=Changes/Replace yumex-dnf with dnfdragora - Fedora Project Wiki |url=https://fedoraproject.org/wiki/Changes/Replace_yumex-dnf_with_dnfdragora |access-date=2021-09-27 |website=fedoraproject.org |archive-date=2021-09-27 |archive-url=https://web.archive.org/web/20210927075456/https://fedoraproject.org/wiki/Changes/Replace_yumex-dnf_with_dnfdragora |url-status=live }}{{Cite web |title=F27 Self Contained Change: Replace Yumex-DNF with dnfdragora - devel - Fedora Mailing-Lists |url=https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/message/UK3RBRADUMUOONCEQSGWA5GY625N6YQG/ |access-date=2021-09-27 |website=lists.fedoraproject.org |language=en |archive-date=2021-09-27 |archive-url=https://web.archive.org/web/20210927075842/https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/message/UK3RBRADUMUOONCEQSGWA5GY625N6YQG/ |url-status=live }} 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.{{Cite web |last=Larabel |first=Michael |author-link=Michael Larabel |date=2016-09-05 |title=Mageia To Offer DNF, But Will Keep Using URPMI By Default |url=https://www.phoronix.com/scan.php?page=news_item&px=Megia-6-To-Have-DNF-Yum |access-date=2017-12-04 |publisher=Phoronix |archive-date=2017-12-06 |archive-url=https://web.archive.org/web/20171206005751/https://www.phoronix.com/scan.php?page=news_item&px=Megia-6-To-Have-DNF-Yum |url-status=live }}

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

References

{{Reflist|30em}}