Features/DNF

From FedoraProject

< Features(Difference between revisions)
Jump to: navigation, search
 
(18 intermediate revisions by 3 users not shown)
Line 4: Line 4:
 
<!-- The actual name of your feature page should look something like: Features/YourFeatureName.  This keeps all features in the same namespace -->
 
<!-- The actual name of your feature page should look something like: Features/YourFeatureName.  This keeps all features in the same namespace -->
  
= DNF, a new Package Manager =
+
= DNF and hawkey, a New Package Manager and Package Management Library =
  
 
== Summary ==
 
== Summary ==
  
A preview of the next-generation Yum package manager, using hawkey/libsolv for backend.
+
Provide hawkey, a new package management library built on top of [https://github.com/openSUSE/libsolv libsolv]. Preview the next-generation Yum package manager, using hawkey/libsolv for backend.
  
 
== Owner ==
 
== Owner ==
Line 17: Line 17:
 
* Targeted release: [[Releases/18 | Fedora 18 ]]
 
* Targeted release: [[Releases/18 | Fedora 18 ]]
 
* Last updated: {{REVISIONYEAR}}-{{REVISIONMONTH}}-{{REVISIONDAY2}}
 
* Last updated: {{REVISIONYEAR}}-{{REVISIONMONTH}}-{{REVISIONDAY2}}
* Percentage of completion: 40%
+
* Percentage of completion: 100%
  
<!-- CHANGE THE "FedoraVersion" TEMPLATES ABOVE TO PLAIN NUMBERS WHEN YOU COMPLETE YOUR PAGE. -->
+
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 ==
 
== Detailed Description ==
DNF is a fork of Yum 3.4 that uses libsolv for a backed. The main goals of the project are:
+
[https://github.com/akozumpl/hawkey 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 backed. The main goals of the project are:
 
* using a SAT solver for dependency resolving
 
* using a SAT solver for dependency resolving
 
** allowing us to eventually use the same solver in rpm too
 
** allowing us to eventually use the same solver in rpm too
Line 28: Line 36:
 
* strict API definition for extending projects (Anaconda)
 
* strict API definition for extending projects (Anaconda)
 
* leaner codebase than Yum, allowing for easier maintenance
 
* leaner codebase than Yum, allowing for easier maintenance
* better performance and footprint.
+
* 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.
+
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.
  
The effort on DNF happens in parallel to the [[Features/Hawkey|Hawkey development]], a library providing simplified libsolv C and Python bindings.
+
=== Naming ===
 +
Note about the name "DNF": it has no relevant meaning, meant as a project name only. Since DNF is a tech preview in Fedora 18 the Python module names can not be 'yum.*' as that would clash with yum itself.
  
=== Comparing to zif ===
+
=== Why not zif/zypp? ===
People are asking why we didn't choose to adopt zif instead of fixing yum. The reasons are:
+
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 looks for a middle ground between a sane API and some backwards compatibility.
 
* dnf and hawkey are first steps toward using the same resolver accross the entire stack.
 
* dnf and hawkey are first steps toward using the same resolver accross the entire stack.
Line 41: Line 50:
  
 
== Benefit to Fedora ==
 
== Benefit to Fedora ==
Faster and simpler package manager. Eventually simplified client code.
+
 
 +
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 [https://github.com/akozumpl/hawkey/wiki/Use-cases tools]
 +
* PackageKit
 +
* graphical package management tools
 +
* Anaconda
 +
 
 +
DNF clients and users will get:
 +
* Faster and simpler package manager.
 +
* Simplified client code.
  
 
== Scope ==
 
== 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 ===
 
=== How To Test ===
Line 60: Line 90:
 
-->
 
-->
  
Unit tests included.
+
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'.
 
Manual testing is done by performing actions one would normally do through yum, e.g. 'dnf install virt-manager'.
Line 66: Line 99:
 
== User Experience ==
 
== User Experience ==
  
To test-drive dnf use 'dnf <command>' instead of 'yum <command>'. list/update/install/erase are currently all supported.
+
=== 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.
 
<!-- If this feature is noticeable by its target audience, how will their experiences change as a result?  Describe what they will see or notice. -->
 
<!-- If this feature is noticeable by its target audience, how will their experiences change as a result?  Describe what they will see or notice. -->
  
Line 73: Line 109:
 
<!-- What other packages (RPMs) depend on this package?  Are there changes outside the developers' control on which completion of this feature depends?  In other words, completion of another feature owned by someone else and might cause you to not be able to finish on time or that you would need to coordinate?  Other upstream projects like the kernel (if this is not a kernel feature)? -->
 
<!-- What other packages (RPMs) depend on this package?  Are there changes outside the developers' control on which completion of this feature depends?  In other words, completion of another feature owned by someone else and might cause you to not be able to finish on time or that you would need to coordinate?  Other upstream projects like the kernel (if this is not a kernel feature)? -->
  
This feature will not disturb any existing Fedora software.
+
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.
 
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.
Line 84: Line 122:
 
== Documentation ==
 
== Documentation ==
  
Maintained [https://github.com/akozumpl/dnf/wiki at github wiki].
+
For dnf:
 +
* development documentation maintained [https://github.com/akozumpl/dnf/wiki at github wiki]
 +
* manpage available in the package and [http://akozumpl.github.com/dnf/command_ref.html online]
 +
 
 +
For hawkey:
 +
* development documentation maintained [https://github.com/akozumpl/hawkey/wiki/ in a wiki]
 +
* faq and tutorial are [http://akozumpl.github.com/hawkey/ online]
  
 
== Release Notes ==
 
== Release Notes ==
 
<!-- The Fedora Release Notes inform end-users about what is new in the release.  Examples of past release notes are here: http://docs.fedoraproject.org/release-notes/ -->
 
<!-- The Fedora Release Notes inform end-users about what is new in the release.  Examples of past release notes are here: http://docs.fedoraproject.org/release-notes/ -->
 
<!-- The release notes also help users know how to deal with platform changes such as ABIs/APIs, configuration or data file formats, or upgrade concerns.  If there are any such changes involved in this feature, indicate them here.  You can also link to upstream documentation if it satisfies this need.  This information forms the basis of the release notes edited by the documentation team and shipped with the release. -->
 
<!-- The release notes also help users know how to deal with platform changes such as ABIs/APIs, configuration or data file formats, or upgrade concerns.  If there are any such changes involved in this feature, indicate them here.  You can also link to upstream documentation if it satisfies this need.  This information forms the basis of the release notes edited by the documentation team and shipped with the release. -->
 +
 +
None yet.
  
 
== Comments and Discussion ==
 
== Comments and Discussion ==
  
[[Category:FeaturePageIncomplete]]
+
Please report bugs and missing Yum features to the [https://bugzilla.redhat.com/enter_bug.cgi?product=Fedora Red Hat Bugzilla].
 +
 
 +
[[Category:FeatureAcceptedF18]]
 +
 
 
<!-- When your feature page is completed and ready for review -->
 
<!-- When your feature page is completed and ready for review -->
 
<!-- remove Category:FeaturePageIncomplete and change it to Category:FeatureReadyForWrangler -->
 
<!-- remove Category:FeaturePageIncomplete and change it to Category:FeatureReadyForWrangler -->
 
<!-- After review, the feature wrangler will move your page to Category:FeatureReadyForFesco... if it still needs more work it will move back to Category:FeaturePageIncomplete-->
 
<!-- After review, the feature wrangler will move your page to Category:FeatureReadyForFesco... if it still needs more work it will move back to Category:FeaturePageIncomplete-->
 
<!-- A pretty picture of the page category usage is at: https://fedoraproject.org/wiki/Features/Policy/Process -->
 
<!-- A pretty picture of the page category usage is at: https://fedoraproject.org/wiki/Features/Policy/Process -->

Latest revision as of 06:43, 3 October 2012


Contents

[edit] DNF and hawkey, a New Package Manager and Package Management Library

[edit] 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.

[edit] Owner

[edit] Current status

  • Targeted release: Fedora 18
  • Last updated: 2012-10-03
  • 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

[edit] 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 backed. 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.

[edit] Naming

Note about the name "DNF": it has no relevant meaning, meant as a project name only. Since DNF is a tech preview in Fedora 18 the Python module names can not be 'yum.*' as that would clash with yum itself.

[edit] 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 accross the entire stack.
  • Libsolv is a well tested and proven code base, currently the most sophisticated and optimized dependency solving implementation.

[edit] 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.

[edit] Scope

[edit] 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.

[edit] hawkey package

Including documentation for the API.

[edit] 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'.

[edit] User Experience

[edit] Hawkey User Experience

None visible (hawkey is a new library).

[edit] DNF User Experience

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

[edit] 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.

[edit] Contingency Plan

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

[edit] Documentation

For dnf:

For hawkey:

  • development documentation maintained in a wiki
  • faq and tutorial are online

[edit] Release Notes

None yet.

[edit] Comments and Discussion

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