



DNF and hawkey, a New Package Manager and Package Management Library

Summary

Provide hawkey, a new package management library built on top of libsolv. Preview the next-generation Yum package manager, using hawkey/libsolv for backend.

Owner

Current status

Targeted release: Fedora 18

Last updated: 2015-11-15

Percentage of completion: 100%

The DNF package and its dependencies are in f18 repositories now, in a testable state.

yum commands supported in the F18 version of dnf: clean, downgrade, erase, help, history, info, install, list, makecache, provides, repolist, update

by default DNF has a cronjob enabled that periodically syncs the enabled repos' metadata

the API for plugins is not a part of this version

the API for extensions is not a part of this version

Detailed Description

hawkey is a library allowing clients to query and resolve dependencies of RPM packages based on the current state of RPMDB and yum repositories. While a superset of the functionality itself is available in yum, the new API promises to bring unification, fewer restrictions on clients' implementation language (yum API is in Python) and eventually performance improvements.

The API version of hawkey in Fedora 18 will not be final one, it will more be to demonstrate the concepts of the library. Projects needing depsolving in Fedora will be encouraged to start experimenting and reporting bugs and missing features.

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 allowing us to eventually use the same solver in rpm too

strict API definition for plugins

strict API definition for extending projects (Anaconda)

leaner codebase than Yum, allowing for easier maintenance

better performance and memory footprint.

For Fedora 18 this is mainly meant as a preview. The package can be installed along yum so user's workflow is not disturbed when DNF malfunctions. The users will be advised against using DNF on critical production machines.

Naming

DNF stands for Dandified yum. Since DNF is a tech preview in Fedora 18 the Python module names can not be 'yum.*' as that would clash with yum itself.

Why not zif/zypp?

People are asking why we didn't choose to adopt zif (or SUSE's zypp) instead of fixing yum. The reasons are:

dnf looks for a middle ground between a sane API and some backwards compatibility.

dnf and hawkey are first steps toward using the same resolver across the entire stack.

Libsolv is a well tested and proven code base, currently the most sophisticated and optimized dependency solving implementation.

Benefit to Fedora

Hawkey clients will get:

easier bindings to other languages than Python

concise, clear package management API

better performance (through utilizing libsolv)

The set of possible hawkey API consumers:

dnf (the next generation yum)

release engineering tools

PackageKit

graphical package management tools

Anaconda

DNF clients and users will get:

Faster and simpler package manager.

Simplified client code.

Scope

Including libsolv in Fedora

This is a library for fast dependencies resolving created and maintained by SUSE. The rpms are in Fedora already, we will need to rebase the package as needed.

hawkey package

Including documentation for the API.

How To Test

Unit tests included for:

hawkey C API

hawkey Python bindings

DNF

Manual testing is done by performing actions one would normally do through yum, e.g. 'dnf install virt-manager'.

User Experience

Hawkey User Experience

None visible (hawkey is a new library).

DNF User Experience

To test-drive dnf use 'dnf <command>' instead of 'yum <command>'. list/update/install/erase are currently all supported.

Dependencies

Hawkey is a new library and will be only depended on by DNF at this point.

DNF will not disturb any existing Fedora software.

In the future if DNF gets accepted as the main package manager of the platform, yum plugins will have to be updated for the new API and so will Anaconda. I am prepared to assist in this effort with documentation and patches.

Contingency Plan

If DNF doesn't work the user can use yum instead.

Documentation

For dnf:

development documentation maintained at github wiki

manpage available in the package and online

For hawkey:

development documentation maintained in a wiki

faq and tutorial are online

Release Notes

None yet.

Please report bugs and missing Yum features to the Red Hat Bugzilla.



