Blame README.rst

Packit Service 21c75c
.. image:: https://translate.fedoraproject.org/widgets/dnf/-/dnf-master/svg-badge.svg
Packit Service 21c75c
    :alt: Translation status
Packit Service 21c75c
    :target: https://translate.fedoraproject.org/engage/dnf/?utm_source=widget
Packit Service 21c75c
###############
Packit Service 21c75c
 Dandified YUM
Packit Service 21c75c
###############
Packit Service 21c75c
Packit Service 21c75c
.. image:: https://raw.githubusercontent.com/rpm-software-management/dnf/gh-pages/logos/DNF_logo.png
Packit Service 21c75c
 
Packit Service 21c75c
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 Service 21c75c
Packit Service 21c75c
============
Packit Service 21c75c
 Installing
Packit Service 21c75c
============
Packit Service 21c75c
Packit Service 21c75c
DNF and all its dependencies are available in Fedora 18 and later, including the
Packit Service 21c75c
rawhide Fedora.
Packit Service 21c75c
Packit Service 21c75c
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 Service 21c75c
Packit Service 21c75c
    dnf copr enable rpmsoftwaremanagement/dnf-nightly
Packit Service 21c75c
Packit Service 21c75c
Then install DNF typing::
Packit Service 21c75c
Packit Service 21c75c
    sudo yum install dnf
Packit Service 21c75c
Packit Service 21c75c
In other RPM-based distributions you need to build all the components from their
Packit Service 21c75c
sources.
Packit Service 21c75c
Packit Service 21c75c
======================
Packit Service 21c75c
 Building from source
Packit Service 21c75c
======================
Packit Service 21c75c
Packit Service 21c75c
All commands should be run from the DNF git checkout directory.
Packit Service 21c75c
Packit Service 21c75c
To install the build dependencies::
Packit Service 21c75c
Packit Service 21c75c
    sudo dnf builddep dnf.spec
Packit Service 21c75c
Packit Service 21c75c
To build DNF::
Packit Service 21c75c
Packit Service 21c75c
    mkdir build;
Packit Service 21c75c
    pushd build;
Packit Service 21c75c
    cmake ..; # add '-DPYTHON_DESIRED="3"' option for Python 3 build
Packit Service 21c75c
    make;
Packit Service 21c75c
    popd;
Packit Service 21c75c
Packit Service 21c75c
To run DNF when compiled for Python2::
Packit Service 21c75c
Packit Service 21c75c
    PYTHONPATH=`readlink -f .` bin/dnf-2 <arguments>
Packit Service 21c75c
Packit Service 21c75c
To run DNF when compiled for Python3::
Packit Service 21c75c
Packit Service 21c75c
    PYTHONPATH=`readlink -f .` bin/dnf-3 <arguments>
Packit Service 21c75c
Packit Service 21c75c
If you want to build the manpages, use the option ``-DWITH_MAN=0`` with cmake.
Packit Service 21c75c
Packit Service 21c75c
Man pages will be located in ``build/doc`` and can be read with ``man -l``, e.g::
Packit Service 21c75c
Packit Service 21c75c
    man -l build/doc/dnf.8
Packit Service 21c75c
Packit Service 21c75c
=============================
Packit Service 21c75c
 Building and installing rpm
Packit Service 21c75c
=============================
Packit Service 21c75c
Packit Service 21c75c
From the DNF git checkout directory::
Packit Service 21c75c
Packit Service 21c75c
    $ tito build --test --rpm
Packit Service 21c75c
    # dnf install /tmp/tito/noarch/*
Packit Service 21c75c
Packit Service 21c75c
===============
Packit Service 21c75c
 Running tests
Packit Service 21c75c
===============
Packit Service 21c75c
Packit Service 21c75c
From the DNF git checkout directory::
Packit Service 21c75c
Packit Service 21c75c
    mkdir build;
Packit Service 21c75c
    pushd build;
Packit Service 21c75c
    cmake .. && make ARGS="-V" test;
Packit Service 21c75c
    popd;
Packit Service 21c75c
Packit Service 21c75c
==============
Packit Service 21c75c
 Contribution
Packit Service 21c75c
==============
Packit Service 21c75c
Packit Service 21c75c
Here's the most direct way to get your work merged into the project.
Packit Service 21c75c
Packit Service 21c75c
1. Fork the project
Packit Service 21c75c
#. Clone down your fork
Packit Service 21c75c
#. Implement your feature or bug fix and commit changes
Packit Service 21c75c
#. If the change fixes a bug at `Red Hat bugzilla <https://bugzilla.redhat.com/>`_, or if it is important to the end user, add the following block to the commit message::
Packit Service 21c75c
Packit Service 21c75c
    = changelog =
Packit Service 21c75c
    msg:           message to be included in the changelog
Packit Service 21c75c
    type:          one of: bugfix/enhancement/security (this field is required when message is present)
Packit Service 21c75c
    resolves:      URLs to bugs or issues resolved by this commit (can be specified multiple times)
Packit Service 21c75c
    related:       URLs to any related bugs or issues (can be specified multiple times)
Packit Service 21c75c
Packit Service 21c75c
   * For example::
Packit Service 21c75c
Packit Service 21c75c
       = changelog =
Packit Service 21c75c
       msg: Verify GPG signatures when running dnf-automatic
Packit Service 21c75c
       type: bugfix
Packit Service 21c75c
       resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1793298
Packit Service 21c75c
Packit Service 21c75c
   * For your convenience, you can also use git commit template by running the following command in the top-level directory of this project::
Packit Service 21c75c
Packit Service 21c75c
       git config commit.template ./.git-commit-template
Packit Service 21c75c
Packit Service 21c75c
#. 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 Service 21c75c
#. Push the branch up to your fork
Packit Service 21c75c
#. Send a pull request for your branch
Packit Service 21c75c
Packit Service 21c75c
Please, do not create the pull requests with translation (.po) files improvements. Fix the translation on `Fedora Weblate <https://translate.fedoraproject.org/projects/dnf/>`_ instead.
Packit Service 21c75c
Packit Service 21c75c
===============
Packit Service 21c75c
 Documentation
Packit Service 21c75c
===============
Packit Service 21c75c
Packit Service 21c75c
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 Service 21c75c
Packit Service 21c75c
====================
Packit Service 21c75c
 Bug reporting etc.
Packit Service 21c75c
====================
Packit Service 21c75c
Packit Service 21c75c
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 Service 21c75c
Packit Service 21c75c
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.