{"id":3101,"date":"2016-09-04T11:03:17","date_gmt":"2016-09-04T11:03:17","guid":{"rendered":"http:\/\/blog.mageia.org\/en\/?p=3101"},"modified":"2017-02-24T12:35:01","modified_gmt":"2017-02-24T12:35:01","slug":"dandifying-mageia","status":"publish","type":"post","link":"https:\/\/blog.mageia.org\/en\/2016\/09\/04\/dandifying-mageia\/","title":{"rendered":"Dandifying Mageia &#8211; Adding the DNF stack to Mageia"},"content":{"rendered":"<p><span style=\"font-weight: 400;\">There\u2019s a lot of good things coming to Mageia 6: KDE Plasma 5 desktop, updates to other desktop environments, many new games, and a fresh coat of paint with a new visual style. However, there\u2019s quite a lot of under-the-hood improvements in Mageia, too!<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Among the many less-than-visible improvements across the board is a brand new dependency resolver: DNF. DNF (Dandified Yum) is a next generation dependency resolver and high-level package management tool with an interesting history. DNF traces its ancestry to two projects: Fedora\u2019s Yum (Yellowdog Updater, Modified) and openSUSE\u2019s SAT Solver (libsolv). DNF was forked from Yum several years ago in order to rewrite it to use the SAT Solver library from openSUSE (which is used in their own tool, Zypper). Another goal of the fork was to massively restructure the codebase so that a sane API would be available for both extending DNF (via plugins and hooks) and building applications on top of it (such as graphical frontends and system lifecycle automation frameworks).<\/span><\/p>\n<p>DNF will be available for those willing to use it, however, urpmi and the current familiar Mageia software management tools will remain as the default in Mageia for the foreseeable future.<\/p>\n<p><span style=\"font-weight: 400;\">In many respects, these goals were achieved. DNF ships with a well-structured command line interface, an easy-to-use and very complete API, a dozen core plugins, and a dozen contributed plugins.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">As a consequence of the work required to adopt DNF, Mageia is now broadly compatible with a wider array of tools for managing RPM-based systems, due to the use of tooling that is common to other major RPM-based Linux distributions (such as Fedora and openSUSE). For example, tools like <\/span><a href=\"http:\/\/spacewalk.redhat.com\/\"><span style=\"font-weight: 400;\">Spacewalk<\/span><\/a><span style=\"font-weight: 400;\"> and <\/span><a href=\"http:\/\/www.katello.org\/\"><span style=\"font-weight: 400;\">Katello<\/span><\/a><span style=\"font-weight: 400;\"> will (to some extent) be able to manage Mageia 6 systems for institutions like schools and businesses.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">PackageKit has been also switched to a new backend that leverages the work done to enable DNF, allowing for us to properly enable app-centric software management tools like GNOME Software and KDE\u2019s Plasma Discover to provide a high-quality desktop software management experience through the desktop environment\u2019s native tools.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">In addition, we\u2019re working with the developers of <\/span><a href=\"https:\/\/copr.fedorainfracloud.org\/\"><span style=\"font-weight: 400;\">Fedora COPR<\/span><\/a><span style=\"font-weight: 400;\"> (A PPA-style system developed and provided by our friends at the Fedora Project) to get Mageia 6 and Cauldron added as supported Linux distributions. This will allow people interested in providing packages of free\/open source software for Mageia to have a place where they can build them and have a hosted package repository. Once support for Mageia has been activated on Fedora COPR, adding repositories will be as easy as \u201cdnf copr enable\u201d. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">One of the fruits borne from this effort is that support for building packages for Mageia 6 is now built right into <\/span><a href=\"https:\/\/github.com\/rpm-software-management\/mock\/wiki\"><span style=\"font-weight: 400;\">Mock<\/span><\/a><span style=\"font-weight: 400;\">, the standard clean package build tool used by Red Hat, Fedora, and CentOS. As of <\/span><a href=\"https:\/\/github.com\/rpm-software-management\/mock\/wiki\/Release-Notes-1.2.18\"><span style=\"font-weight: 400;\">Mock 1.2.18<\/span><\/a><span style=\"font-weight: 400;\"> and newer (available on supported RHEL\/CentOS and Fedora releases, as well as in the upcoming Mageia 6), it is possible to build Mageia packages without having to switch distributions or manually construct chroots, containers, or virtual machines. Likewise, with Mageia 6, it is possible to build Fedora packages using the same tool. Of course, you can build Mageia packages from Mageia 6 with Mock as well. Mock is the core build engine for Fedora COPR, so it was critical to make this work, and so we did.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The work to offer DNF in Mageia 6 represents nearly a year of work, collaborating and cooperating with the upstream project and the Fedora Project to implement this in the best way possible. We hope that the introduction of DNF and the new PackageKit backend will offer a new, user-friendly way for people to interact with the software installed and available on Mageia!<\/span><\/p>\n<p><span style=\"font-weight: 400;\">If you want to learn more about DNF, check out <\/span><a href=\"https:\/\/wiki.mageia.org\/en\/Using_DNF\"><span style=\"font-weight: 400;\">our wiki page on how to use it<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>There\u2019s a lot of good things coming to Mageia 6: KDE Plasma 5 desktop, updates to other desktop environments, many new games, and a fresh coat of paint with a new visual style. However, there\u2019s quite a lot of under-the-hood &hellip; <a href=\"https:\/\/blog.mageia.org\/en\/2016\/09\/04\/dandifying-mageia\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":32,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":true,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false},"version":2}},"categories":[170,124,30],"tags":[],"class_list":["post-3101","post","type-post","status-publish","format-standard","hentry","category-collaboration","category-mageia-2","category-packager"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p159kA-O1","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/blog.mageia.org\/en\/wp-json\/wp\/v2\/posts\/3101","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.mageia.org\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.mageia.org\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.mageia.org\/en\/wp-json\/wp\/v2\/users\/32"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.mageia.org\/en\/wp-json\/wp\/v2\/comments?post=3101"}],"version-history":[{"count":4,"href":"https:\/\/blog.mageia.org\/en\/wp-json\/wp\/v2\/posts\/3101\/revisions"}],"predecessor-version":[{"id":3105,"href":"https:\/\/blog.mageia.org\/en\/wp-json\/wp\/v2\/posts\/3101\/revisions\/3105"}],"wp:attachment":[{"href":"https:\/\/blog.mageia.org\/en\/wp-json\/wp\/v2\/media?parent=3101"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.mageia.org\/en\/wp-json\/wp\/v2\/categories?post=3101"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.mageia.org\/en\/wp-json\/wp\/v2\/tags?post=3101"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}