# libdnf

> package management library

**Wikidata**: [Q106095246](https://www.wikidata.org/wiki/Q106095246)  
**Source**: https://4ort.xyz/entity/libdnf

## Summary
libdnf is a free software library designed for package management on Unix-like operating systems. Also known historically as hawkey or libhif, it serves as a backend framework for managing software packages and relies on the librepo library to handle the downloading of repository metadata and packages. The library is licensed under the GNU Lesser General Public License (LGPL) version 2.1 or later.

## Key Facts
- **Aliases:** libdnf is also known as **hawkey** and **libhif**.
- **License:** Distributed under the **GNU Lesser General Public License, version 2.1 or later**.
- **Category:** It is classified as a **software library** and **free software**.
- **Operating System:** Designed to run on **Unix-like operating systems**.
- **Dependencies:** Requires **librepo**, a library that provides C and Python APIs for downloading repository metadata and packages.
- **Source Code:** The repository is hosted on GitHub at `https://github.com/rpm-software-management/libdnf`.
- **Software Packages:** Available in Fedora (`libdnf`), openSUSE (`libdnf`), and FreeBSD (`sysutils/libdnf`).
- **Version History:** Recorded versions range from **0.16.0** (released July 22, 2018) to **0.65.0** (released October 21, 2021).

## FAQs
### Q: What is libdnf used for?
A: libdnf is a software library used for package management. It provides the underlying functionality for package managers to operate on Unix-like systems.

### Q: What are the alternative names for libdnf?
A: The library was previously known or is aliased as **hawkey** and **libhif**.

### Q: What license is libdnf released under?
A: It is released as free software under the **GNU Lesser General Public License (LGPL), version 2.1 or later**.

## Why It Matters
libdnf represents a critical infrastructure component in the Linux ecosystem, serving as the core library for next-generation package management. By providing a standardized API for package management actions, it allows different software tools and front-ends to manage system software consistently without reinventing the underlying logic. Its classification as free software ensures that users can freely run, study, modify, and redistribute the code, fostering transparency and community collaboration.

The library's reliance on **librepo** modularizes the complex task of handling repository metadata and package downloads, separating network and parsing logic from dependency resolution and installation logic. This separation improves maintainability and reliability. Its availability across major distributions like Fedora and openSUSE, as well as FreeBSD, highlights its versatility and importance as a cross-platform tool for system administration.

## Notable For
- **Licensing:** distinguishing it as freely modifiable and distributable software under the LGPL.
- **Modularity:** functioning strictly as a library (backend) rather than a direct CLI tool, facilitating its integration into various package managers.
- **Cross-Distribution Presence:** being packaged for distinct operating systems including Fedora, openSUSE, and FreeBSD.
- **Alias History:** being identified by the distinct names **hawkey** and **libhif** in different development contexts.

## Body

### Overview and Classification
libdnf is a software library classified as a form of free software. It falls under the broad category of package management libraries, specifically targeting Unix-like operating systems. As a library, it provides the necessary functions to facilitate the installation, updating, and management of software packages.

### Technical Dependencies
The functionality of libdnf is supported by specific software dependencies. It explicitly depends on **librepo**, a library utilized for downloading repository metadata and packages. librepo offers both C and Python APIs, which likely aids in libdnf's integration into various software environments.

### Version History and Development
Development of libdnf is active, with a documented history of releases hosted on GitHub. Key release milestones include:
- **0.16.0**: Released July 22, 2018.
- **0.17.0**: Released August 7, 2018.
- **0.18.0**: Released August 31, 2018.
- **0.22.4**: Released December 17, 2018.
- **0.61.1**: Released April 13, 2021.
- **0.64.0**: Released September 27, 2021.
- **0.65.0**: Released October 21, 2021.

### Distribution and Availability
The library is integrated into various software distribution channels. It is available as a standard package in Fedora and openSUSE (named `libdnf`) and is available in the FreeBSD ports system under `sysutils/libdnf`. The source code is maintained in a Git repository accessible via HTTPS.

## References

1. [Source](https://api.github.com/repos/rpm-software-management/libdnf)
2. [Source](https://github.com/rpm-software-management/libdnf#license)
3. [Release 0.16.0. 2018](https://github.com/rpm-software-management/libdnf/releases/tag/0.16.0)
4. [Release 0.16.1. 2018](https://github.com/rpm-software-management/libdnf/releases/tag/0.16.1)
5. [Release 0.17.0. 2018](https://github.com/rpm-software-management/libdnf/releases/tag/0.17.0)
6. [Release 0.17.1. 2018](https://github.com/rpm-software-management/libdnf/releases/tag/0.17.1)
7. [Release 0.17.2. 2018](https://github.com/rpm-software-management/libdnf/releases/tag/0.17.2)
8. [Release 0.18.0. 2018](https://github.com/rpm-software-management/libdnf/releases/tag/0.18.0)
9. [Release 0.22.4. 2018](https://github.com/rpm-software-management/libdnf/releases/tag/0.22.4)
10. [Release 0.61.1. 2021](https://github.com/rpm-software-management/libdnf/releases/tag/0.61.1)
11. [Release 0.64.0. 2021](https://github.com/rpm-software-management/libdnf/releases/tag/0.64.0)
12. [Release 0.65.0. 2021](https://github.com/rpm-software-management/libdnf/releases/tag/0.65.0)
13. [Release 0.66.0. 2022](https://github.com/rpm-software-management/libdnf/releases/tag/0.66.0)
14. [Release 0.67.0. 2022](https://github.com/rpm-software-management/libdnf/releases/tag/0.67.0)
15. [Release 0.68.0. 2022](https://github.com/rpm-software-management/libdnf/releases/tag/0.68.0)
16. [Release 0.69.0. 2022](https://github.com/rpm-software-management/libdnf/releases/tag/0.69.0)
17. [Release 0.70.0. 2023](https://github.com/rpm-software-management/libdnf/releases/tag/0.70.0)
18. [Release 0.70.1. 2023](https://github.com/rpm-software-management/libdnf/releases/tag/0.70.1)
19. [Release 0.70.2. 2023](https://github.com/rpm-software-management/libdnf/releases/tag/0.70.2)
20. [Release 0.71.0. 2023](https://github.com/rpm-software-management/libdnf/releases/tag/0.71.0)
21. [Release 0.72.0. 2023](https://github.com/rpm-software-management/libdnf/releases/tag/0.72.0)
22. [Release 0.73.0. 2024](https://github.com/rpm-software-management/libdnf/releases/tag/0.73.0)
23. [Release 0.73.1. 2024](https://github.com/rpm-software-management/libdnf/releases/tag/0.73.1)
24. [Release 0.73.2. 2024](https://github.com/rpm-software-management/libdnf/releases/tag/0.73.2)
25. [Release 0.73.3. 2024](https://github.com/rpm-software-management/libdnf/releases/tag/0.73.3)
26. [Release 0.73.4. 2024](https://github.com/rpm-software-management/libdnf/releases/tag/0.73.4)
27. [Release 0.74.0. 2025](https://github.com/rpm-software-management/libdnf/releases/tag/0.74.0)
28. [Release 0.75.0. 2025](https://github.com/rpm-software-management/libdnf/releases/tag/0.75.0)