..
Copyright Contributors to the libdnf project.
This file is part of libdnf: https://github.com/rpm-software-management/libdnf/
Libdnf is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
Libdnf is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with libdnf. If not, see .
.. _filtering_misc_ref-label:
###################
Packages Filtering
###################
Description
===========
Package filtering removes packages from the available package set, making them invisible to most ``DNF5`` commands. As a result, these packages cannot be included in any transaction.
There are several ways a package can be filtered out:
Global excludes filtering
=========================
Exclude filtering can be adjusted using the ``includepkgs`` or ``excludepkgs`` configuration options in the DNF5 configuration file. To disable excludes, you can use the ``disable_excludes`` configuration option:
``dnf5 --setopt=disable_excludes=* install bash``
For details about the configuration options see :manpage:`dnf5.conf(5)`, :ref:`DNF5 configuration reference `.
Repository excludes filtering
=============================
Similar to global excludes, but this configuration is repository-specific and only affects packages within the repository where the excludes are set.
User excludes filtering
=======================
API users have an additional option how to fine-tune excluded packages using ``*_user_excludes()`` and ``*_user_includes`` methods of the ``PackageSack`` object. See :ref:`PackageSack API `.
Versionlock
===========
Additionally, the versionlock functionality is implemented using excludes filtering. However, these excludes are applied only during transactional operations.
For details see :manpage:`dnf5-versionlock(8)`, :ref:`Versionlock command `.
Modular filtering
=================
For details on how modular filtering works please see :manpage:`dnf5-modularity(7)`, :ref:`the modularity documentation `.
With modularity, only RPM packages from ``active`` module streams are included in the available package set. RPM packages from ``inactive`` module streams, as well as non-modular packages with the same name or provides as a package from an ``active`` module stream, are filtered out. Modular filtering is not applied to packages added from the command line, installed packages, or packages from repositories with ``module_hotfixes=true`` in their ``.repo`` file.
Disabling of modular filtering is not recommended, because it could cause the system to get into a broken state. To disable modular filtering for a particular repository, specify
``module_hotfixes=true`` in the ``.repo`` file or use ``--setopt=.module_hotfixes=true``.
..
# TODO(mblaha) - `dnf5 module provides` command is not implemented yet
# To discover the module which contains an excluded package use ``dnf5 module provides``.