1DNF.MODULARITY(7)                     DNF                    DNF.MODULARITY(7)
2
3
4

NAME

6       dnf.modularity - Modularity in DNF
7
8       Modularity  is new way of building, organizing and delivering packages.
9       For more details see: https://docs.pagure.org/modularity/
10

DEFINITIONS

12       modulemd
13              Every repository can contain modules metadata with modulemd doc‐
14              uments.   These  documents  hold  metadata about modules such as
15              Name, Stream or list of packages.
16
17       (non-modular) package
18              Package that doesn't belong to a module.
19
20       modular package
21              Package that belongs to a module. It is listed in modulemd under
22              the  artifacts section.  Modular packages can be also identified
23              by having %{modularitylabel} RPM header set.
24
25       (module) stream
26              Stream is a collection of packages, a virtual repository. It  is
27              identified  with  Name  and  Stream from modulemd separated with
28              colon, for example "postgresql:9.6".
29
30              Module streams can be active or inactive. active means  the  RPM
31              packages  from  this stream are included in the set of available
32              packages.  Packages from  inactive  streams  are  filtered  out.
33              Streams  are  active  either if marked as default or if they are
34              explicitly enabled by a user action. Streams that satisfy depen‐
35              dencies  of  default  or enabled streams are also considered ac‐
36              tive.  Only one stream of a particular module can be active at a
37              given point in time.
38

PACKAGE FILTERING

40       Without modules, packages with the highest version are used by default.
41
42       Module  streams can distribute packages with lower versions than avail‐
43       able in the repositories available to the  operating  system.  To  make
44       such  packages  available  for  installs  and upgrades, the non-modular
45       packages are filtered out when their name or provide matches against  a
46       modular  package  name  from any enabled, default, or dependent stream.
47       Modular source packages will not cause non-modular binary  packages  to
48       be filtered out.
49
50   Demodularized rpms
51       Contains  names  of RPMs excluded from package filtering for particular
52       module stream. When defined in the latest  active  module,  non-modular
53       RPMs  with  the same name or provide which were previously filtered out
54       will reappear.
55

HOTFIX REPOSITORIES

57       In special cases, a user wants to cherry-pick individual packages  pro‐
58       vided  outside  module  streams  and  make them available on along with
59       packages from the active streams.   Under  normal  circumstances,  such
60       packages  are  filtered  out  or rejected from getting on the system by
61       Fail-safe mechanisms.  To make the system use packages from  a  reposi‐
62       tory  regardless  of  their modularity, specify module_hotfixes=true in
63       the .repo file. This protects the repository from package filtering.
64
65       Please note the hotfix packages do not override module  packages,  they
66       only become part of available package set. It's the package Epoch, Ver‐
67       sion and Release what determines if the package is the latest.
68

FAIL-SAFE MECHANISMS

70   Repositories with module metadata are unavailable
71       When a repository with module metadata is unavailable, package  filter‐
72       ing  must  keep  working.  Non-modular RPMs must remain unavailable and
73       must never get on the system.
74
75       This happens when:
76
77       • user disables a repository via --disablerepo or uses --repoid
78
79       • user removes a .repo file from disk
80
81       • repository is not available and has skip_if_unavailable=true
82
83       DNF keeps copies of the latest modulemd for  every  active  stream  and
84       uses  them if there's no modulemd available for the stream.  This keeps
85       package filtering working correctly.
86
87       The copies are made any time a transaction  is  resolved  and  started.
88       That  includes  RPM transactions as well as any dnf module <enable|dis‐
89       able|reset> operations.
90
91       When the fail-safe data is used, dnf show such modules as part of @mod‐
92       ulefailsafe repository.
93
94   Orphaned modular packages
95       All  packages that are built as a part of a module have %{modularityla‐
96       bel} RPM header set.  If such package becomes part of  RPM  transaction
97       and cannot be associated with any available modulemd, DNF prevents from
98       getting it on the system (package  is  available,  but  cannot  be  in‐
99       stalled, upgraded, etc.). Packages from Hotfix repositories or Command‐
100       line repository are not affected by Fail-safe mechanisms.
101

AUTHOR

103       See AUTHORS in DNF source distribution.
104
106       2012-2022, Red Hat, Licensed under GPLv2+
107
108
109
110
1114.13.0                           May 30, 2022                DNF.MODULARITY(7)
Impressum