|
Packit |
6f3914 |
###############
|
|
Packit |
6f3914 |
Dandified YUM
|
|
Packit |
6f3914 |
###############
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
.. image:: https://raw.githubusercontent.com/rpm-software-management/dnf/gh-pages/logos/DNF_logo.png
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
Dandified YUM (DNF) is the next upcoming major version of `YUM <http://yum.baseurl.org/>`_. It does package management using `RPM <http://rpm.org/>`_, `libsolv <https://github.com/openSUSE/libsolv>`_ and `hawkey <https://github.com/rpm-software-management/hawkey>`_ libraries. For metadata handling and package downloads it utilizes `librepo <https://github.com/tojaj/librepo>`_. To process and effectively handle the comps data it uses `libcomps <https://github.com/midnightercz/libcomps>`_.
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
============
|
|
Packit |
6f3914 |
Installing
|
|
Packit |
6f3914 |
============
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
DNF and all its dependencies are available in Fedora 18 and later, including the
|
|
Packit |
6f3914 |
rawhide Fedora.
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
Optionally you can use repositories with DNF nightly builds for last 2 stable Fedora versions available at copr://rpmsoftwaremanagement/dnf-nightly. You can enable the repository e.g. using::
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
dnf copr enable rpmsoftwaremanagement/dnf-nightly
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
Then install DNF typing::
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
sudo yum install dnf
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
In other RPM-based distributions you need to build all the components from their
|
|
Packit |
6f3914 |
sources.
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
======================
|
|
Packit |
6f3914 |
Building from source
|
|
Packit |
6f3914 |
======================
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
All commands should be run from the DNF git checkout directory.
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
To install the build dependencies::
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
sudo dnf builddep dnf.spec
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
To build DNF::
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
mkdir build;
|
|
Packit |
6f3914 |
pushd build;
|
|
Packit |
6f3914 |
cmake ..; # add '-DPYTHON_DESIRED="3"' option for Python 3 build
|
|
Packit |
6f3914 |
make;
|
|
Packit |
6f3914 |
popd;
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
To run DNF when compiled for Python2::
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
PYTHONPATH=`readlink -f .` bin/dnf-2 <arguments>
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
To run DNF when compiled for Python3::
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
PYTHONPATH=`readlink -f .` bin/dnf-3 <arguments>
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
If you want to build the manpages, use the option ``-DWITH_MAN=0`` with cmake.
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
Man pages will be located in ``build/doc`` and can be read with ``man -l``, e.g::
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
man -l build/doc/dnf.8
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
=============================
|
|
Packit |
6f3914 |
Building and installing rpm
|
|
Packit |
6f3914 |
=============================
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
From the DNF git checkout directory::
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
$ tito build --test --rpm
|
|
Packit |
6f3914 |
# dnf install /tmp/tito/noarch/*
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
===============
|
|
Packit |
6f3914 |
Running tests
|
|
Packit |
6f3914 |
===============
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
From the DNF git checkout directory::
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
mkdir build;
|
|
Packit |
6f3914 |
pushd build;
|
|
Packit |
6f3914 |
cmake .. && make ARGS="-V" test;
|
|
Packit |
6f3914 |
popd;
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
==============
|
|
Packit |
6f3914 |
Contribution
|
|
Packit |
6f3914 |
==============
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
Here's the most direct way to get your work merged into the project.
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
1. Fork the project
|
|
Packit |
6f3914 |
#. Clone down your fork
|
|
Packit |
6f3914 |
#. Implement your feature or bug fix and commit changes
|
|
Packit |
6f3914 |
#. If you reported a bug or you know it fixes existing bug at `Red Hat bugzilla <https://bugzilla.redhat.com/>`_, append ``(RhBug:<bug_id>)`` to your commit message
|
|
Packit |
6f3914 |
#. In special commit add your name and email under ``DNF CONTRIBUTORS`` section in `authors file <https://github.com/rpm-software-management/dnf/blob/master/AUTHORS>`_ as a reward for your generosity
|
|
Packit |
6f3914 |
#. Push the branch up to your fork
|
|
Packit |
6f3914 |
#. Send a pull request for your branch
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
Please, do not create the pull requests with translation (.po) files improvements. Fix the translation on `Zanata <https://fedora.zanata.org/iteration/view/dnf/master>`_ instead.
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
===============
|
|
Packit |
6f3914 |
Documentation
|
|
Packit |
6f3914 |
===============
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
The DNF package distribution contains man pages, dnf(8) and dnf.conf(8). It is also possible to `read the DNF documentation <http://dnf.readthedocs.org>`_ online, the page includes API documentation. There's also a `wiki <https://github.com/rpm-software-management/dnf/wiki>`_ meant for contributors to DNF and related projects.
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
====================
|
|
Packit |
6f3914 |
Bug reporting etc.
|
|
Packit |
6f3914 |
====================
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
Please report discovered bugs to the `Red Hat bugzilla <https://bugzilla.redhat.com/>`_ following this `guide <https://github.com/rpm-software-management/dnf/wiki/Bug-Reporting>`_. If you planned to propose the patch in the report, consider `Contribution`_ instead.
|
|
Packit |
6f3914 |
|
|
Packit |
6f3914 |
Freenode's irc channel ``#yum`` is meant for discussions related to both YUM and DNF. Questions should be asked there, issues discussed. Remember: ``#yum`` is not a support channel and prior research is expected from the questioner.
|