From Fedora Project Wiki
(Created page with "<!-- The actual name of your proposed change page should look something like: Changes/Your_Change_Proposal_Name. This keeps all change proposals in the same namespace --> = ...")
 
mNo edit summary
 
(23 intermediate revisions by 7 users not shown)
Line 1: Line 1:
{{lang|en|es|page=Changes}}
<!-- The actual name of your proposed change page should look something like: Changes/Your_Change_Proposal_Name.  This keeps all change proposals in the same namespace -->
<!-- The actual name of your proposed change page should look something like: Changes/Your_Change_Proposal_Name.  This keeps all change proposals in the same namespace -->


Line 5: Line 6:
== Summary ==
== Summary ==


Make DNF/Yum4 the new default packaging tool in F22.
Make DNF (Dandified Yum)/Yum4 the new default packaging tool in F22.


== Owner ==
== Owner ==
* Name: [[User:Akozumpl| Aleš Kozumplík]]
* Name: [[User:jsilhan| Jan Šilhan]]
* Email: kozumplik@gmail.com
* Email: jsilhan@redhat.com
* Release notes owner: <!--- To be assigned by docs team [[User:FASAccountName| Release notes owner name]] <email address> -->
* Release notes owner: <!--- To be assigned by docs team [[User:FASAccountName| Release notes owner name]] <email address> -->
<!--- UNCOMMENT only for Changes with assigned Shepherd (by FESCo)
<!--- UNCOMMENT only for Changes with assigned Shepherd (by FESCo)
Line 17: Line 18:
== Current status ==
== Current status ==
* Targeted release: [[Releases/22 | Fedora 22 ]]
* Targeted release: [[Releases/22 | Fedora 22 ]]
* Last updated: (DATE)
* Last updated: 2014-03-10
<!-- After the change proposal is accepted by FESCo, tracking bug is created in Bugzilla and linked to this page  
<!-- After the change proposal is accepted by FESCo, tracking bug is created in Bugzilla and linked to this page  
Bugzilla states meaning as usual:
Bugzilla states meaning as usual:
Line 26: Line 27:
CLOSED as NEXTRELEASE -> change is completed and verified and will be delivered in next release under development
CLOSED as NEXTRELEASE -> change is completed and verified and will be delivered in next release under development
-->
-->
* Tracker bug: <will be assigned by the Wrangler>
* Tracker bug: [https://bugzilla.redhat.com/show_bug.cgi?id=1181567 #1181567]
* Dnf Tracker bug: https://bugzilla.redhat.com/show_bug.cgi?id=1156491
 
Related RPMFusion bug against lpf at https://bugzilla.rpmfusion.org/show_bug.cgi?id=3391


== Detailed Description ==
== Detailed Description ==
DNF was forked from Yum in January 2012 and available for experimenting in fedora since [https://fedoraproject.org/wiki/Features/DNF release 18]. The project is now fully capable of replacing Yum in new Fedora installations. We want DNF to become the new default packaging tool in Fedora 22. This entails:
DNF was forked from Yum in January 2012 and available for experimenting in fedora since [https://fedoraproject.org/wiki/Features/DNF release 18]. The project is now fully capable of replacing Yum in new Fedora installations. We want DNF to become the new default packaging tool in Fedora 22. This entails:


* letting system administrators (including users who routinely manage their packages using the legacy Yum) perform all common packaging operations using DNF, with no or [http://akozumpl.github.io/dnf/cli_vs_yum.html minimal and documented] change to the command syntax. (done)
* letting system administrators (including users who routinely manage their packages using the legacy Yum) perform all common packaging operations using DNF, with no or [http://dnf.readthedocs.org/en/latest/cli_vs_yum.html minimal and documented] change to the command syntax, apart from replacing the command name. (done)
* providing implementation of Anaconda backend so system can be bootstrapped completely without using legacy Yum. (done)
* providing implementation of Anaconda backend so system can be bootstrapped completely without using legacy Yum. (done)
* providing alternative to all Yum plugins from yum-utils (ongoing)
* providing alternative to all Yum plugins from yum-utils (ongoing)
* providing alternative to all release engineering tools (repoquery etc.) from yum-utils (ongoing)
* providing alternative to all release engineering tools (repoquery, bodhi etc.) from yum-utils (ongoing)
* being ready/having the capacity to help out users with migration of their custom legacy plugins and extensions to DNF. The solid [http://akozumpl.github.io/dnf/api.html API documentation] we provide is of great advantage here. (ongoing)
* being ready/having the capacity to help out users with migration of their custom legacy plugins and extensions to DNF. The solid [http://dnf.readthedocs.org/en/latest/api.html API documentation] we provide is of great advantage here. (ongoing)
 
In practice, the change implies:
* Anaconda installs the system using the DNF backend (with no special switches)
* package 'dnf' is installed by default (referenced by the base comps groups)
* package 'dnf-yum' is installed by default. It obsoletes Yum and provides its own <code>/usr/bin/yum</code>, a short script that redirects to <code>/usr/bin/dnf</code> with an appropriate warning message that DNF is the preferred package manager now. Notice that upgrading F21 to F22 will not cause the compat package to be installed so will not disturb any upgrading users.


== Benefit to Fedora ==
== Benefit to Fedora ==
Line 41: Line 50:
* Documented, solid Python API.
* Documented, solid Python API.
* C bindings for lower level libraries:
* C bindings for lower level libraries:
** [https://github.com/akozumpl/hawkey hawkey] for package querying and depsolving. PackageKit is already making use of hawkey.
** [https://github.com/rpm-software-management/hawkey hawkey] for package querying and depsolving. PackageKit is already making use of hawkey.
** [https://github.com/Tojaj/librepo librepo] for repo operations. PackageKit is already making use of librepo.
** [https://github.com/Tojaj/librepo librepo] for repo operations. PackageKit is already making use of librepo.
** [https://github.com/midnightercz/libcomps libcomps] for comps operations).
** [https://github.com/midnightercz/libcomps libcomps] for comps operations).
Line 57: Line 66:
* Release engineering: Release engineering tools that are internal to the releng teams and not part of yum-utils will need modifications to migrate to the DNF API.
* Release engineering: Release engineering tools that are internal to the releng teams and not part of yum-utils will need modifications to migrate to the DNF API.


* Policies and guidelines: None at the moement.
* Policies and guidelines: None at the moment.


== Upgrade/compatibility impact ==
== Upgrade/compatibility impact ==


In F22 we will release DNF as dnf-1.0.0, providing yum-4.0.0 and obsoleting yum < 4.0.0. Doing F21->F22 upgrade should thus transparently replace the legacy Yum with DNF/Yum4.
In F22 we will release DNF as dnf-1.0.0. Yum will still be installable alongside DNF.


Users will still have the possibility to manually remove DNF and install the (legacy) 'yum' package.
Users will have the possibility to manually remove DNF only use the (legacy) yum package.


For the set of incompatible CLI calls see [http://akozumpl.github.io/dnf/cli_vs_yum.html DNF documentation].
For the set of incompatible CLI calls see [http://dnf.readthedocs.org/en/latest/cli_vs_yum.html DNF documentation] and [http://dnf.readthedocs.org/en/latest/user_faq.html FAQ].


== How To Test ==
== How To Test ==


Install dnf/Yum4 and carry out your usual packaging operations.
Install dnf and carry out your usual packaging operations using the <code>dnf</code> command, for instance:
 
  dnf upgrade


== User Experience ==
== User Experience ==
Line 77: Line 88:
== Dependencies ==
== Dependencies ==
* The main depending package is Anaconda and we've ported it to use DNF as a backend.
* The main depending package is Anaconda and we've ported it to use DNF as a backend.
* Plugins. Core plugins will be ported, we will provide help with porting users' custom legacy plugins.
* Plugins. Core plugins are/will be ported, we will provide help with porting users' custom legacy plugins.
* Release engineering tools. Work on porting the tools is ongoing.


== Contingency Plan ==
== Contingency Plan ==
* contingency plan: stay with Yum, release DNF as Yum4 but do not obsolete the legacy Yum. This way both projects can be installed together, <code>/usr/bin/yum</code> pointing to the legacy Yum in this case.
* contingency plan: stay with Yum, release DNF 1.0 but keep Anaconda installing through Yum and do not make announcement/recommendation to users to switch to DNF.
* contingency deadline: beta freeze.
* contingency deadline: beta freeze.
* as long as Anaconda installation, all CLI operations from Yum and the most critical plugins work, this change can ship.
* as long as Anaconda installation through DNF, all CLI operations and the most critical plugins work, this change can ship.


== Documentation ==
== Documentation ==


[http://akozumpl.github.io/dnf/ DNF Documentation Site], the package ships manual pages of course.
[http://dnf.readthedocs.org/en/latest DNF Documentation Site], the package ships manual pages of course.


== Release Notes ==
== Release Notes ==
Line 95: Line 107:
-->
-->


[[Category:ChangePageIncomplete]]
<!-- When your change proposal page is completed and ready for review and announcement -->
<!-- When your change proposal page is completed and ready for review and announcement -->
<!-- remove Category:ChangePageIncomplete and change it to Category:ChangeReadyForWrangler -->
<!-- remove Category:ChangePageIncomplete and change it to Category:ChangeReadyForWrangler -->
Line 104: Line 115:
<!-- [[Category:SelfContainedChange]] -->
<!-- [[Category:SelfContainedChange]] -->
[[Category:SystemWideChange]]
[[Category:SystemWideChange]]
[[Category:ChangeReadyForWrangler]]
[[Category:ChangeAcceptedF22]]

Latest revision as of 17:21, 27 May 2015

Replace Yum With DNF

Summary

Make DNF (Dandified Yum)/Yum4 the new default packaging tool in F22.

Owner

  • Name: Jan Šilhan
  • Email: jsilhan@redhat.com
  • Release notes owner:

Current status

Related RPMFusion bug against lpf at https://bugzilla.rpmfusion.org/show_bug.cgi?id=3391

Detailed Description

DNF was forked from Yum in January 2012 and available for experimenting in fedora since release 18. The project is now fully capable of replacing Yum in new Fedora installations. We want DNF to become the new default packaging tool in Fedora 22. This entails:

  • letting system administrators (including users who routinely manage their packages using the legacy Yum) perform all common packaging operations using DNF, with no or minimal and documented change to the command syntax, apart from replacing the command name. (done)
  • providing implementation of Anaconda backend so system can be bootstrapped completely without using legacy Yum. (done)
  • providing alternative to all Yum plugins from yum-utils (ongoing)
  • providing alternative to all release engineering tools (repoquery, bodhi etc.) from yum-utils (ongoing)
  • being ready/having the capacity to help out users with migration of their custom legacy plugins and extensions to DNF. The solid API documentation we provide is of great advantage here. (ongoing)

In practice, the change implies:

  • Anaconda installs the system using the DNF backend (with no special switches)
  • package 'dnf' is installed by default (referenced by the base comps groups)
  • package 'dnf-yum' is installed by default. It obsoletes Yum and provides its own /usr/bin/yum, a short script that redirects to /usr/bin/dnf with an appropriate warning message that DNF is the preferred package manager now. Notice that upgrading F21 to F22 will not cause the compat package to be installed so will not disturb any upgrading users.

Benefit to Fedora

  • A CLI package manager tool built on modern depsolving technology allowing for faster and less memory-intensive operation.
  • Documented, solid Python API.
  • C bindings for lower level libraries:
    • hawkey for package querying and depsolving. PackageKit is already making use of hawkey.
    • librepo for repo operations. PackageKit is already making use of librepo.
    • libcomps for comps operations).
  • Unlike Yum, DNF runs in both Python 2 and Python 3.

Scope

This change will be completely transparent for users that use only the graphical package management tools. For anybody using the command line directly there will be some differences, but all the important operations are available with DNF, using the same CLI syntax.

  • Proposal owners: The majority of tasks on this change are completed. Some plugins and API calls still need to be added. The Anaconda payload implementation needs more testing, Fedora Test Day for this is pending.
  • Other developers: We provide the paylaod implementation for Anaconda developers. Developers of other extensions and developers of plugins that are not part of yum-utils will have to update their code.
  • Release engineering: Release engineering tools that are internal to the releng teams and not part of yum-utils will need modifications to migrate to the DNF API.
  • Policies and guidelines: None at the moment.

Upgrade/compatibility impact

In F22 we will release DNF as dnf-1.0.0. Yum will still be installable alongside DNF.

Users will have the possibility to manually remove DNF only use the (legacy) yum package.

For the set of incompatible CLI calls see DNF documentation and FAQ.

How To Test

Install dnf and carry out your usual packaging operations using the dnf command, for instance:

 dnf upgrade

User Experience

See above.

Dependencies

  • The main depending package is Anaconda and we've ported it to use DNF as a backend.
  • Plugins. Core plugins are/will be ported, we will provide help with porting users' custom legacy plugins.
  • Release engineering tools. Work on porting the tools is ongoing.

Contingency Plan

  • contingency plan: stay with Yum, release DNF 1.0 but keep Anaconda installing through Yum and do not make announcement/recommendation to users to switch to DNF.
  • contingency deadline: beta freeze.
  • as long as Anaconda installation through DNF, all CLI operations and the most critical plugins work, this change can ship.

Documentation

DNF Documentation Site, the package ships manual pages of course.

Release Notes