1DNF.MODULARITY(7) DNF DNF.MODULARITY(7)
2
3
4
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
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
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
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
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
103 See AUTHORS in DNF source distribution.
104
106 2012-2023, Red Hat, Licensed under GPLv2+
107
108
109
110
1114.18.2 Dec 08, 2023 DNF.MODULARITY(7)