- Resolves dependencies between modules (and consider them as enabled)
- Filter out RPMs which are in non-enabled modules (exclude, disable)
- Install RPMs from profile
It resolves dependencies between modules and rpms at different points of time.
We have test-app
rpm which depends on kkt >= 50
. And we have 2 kkt
build versions: 30
and 80
.
And they are packed into a modules as following:
kkt:konsky:2019:deadbeef:x86_64
- Contains
kkt-80-1.x86_64
- Contains
kkt:barani:2019:bbadbeef:x86_64
- Contains
kkt-30-1.x86_64
- Contains
test-app:master:2019:deadbeef:x86_64
:- Contains
test-app-1-1.x86_64
- Requires
kkt: []
- Contains
That means, if you would be about to install test-app
, you would get
test-app-1-1
and kkt-80-1
โฆ But not with DNF. What you will get is:
Error:
Problem: package test-app-1-1.x86_64 requires kkt >= 50, but none of the providers can be installed
- conflicting requests
- package kkt-80-1.x86_64 is excluded
Try it yourself!
$ ./build.sh
$ sudo rm -rf /var/cache/dnf/test*
$ sudo dnf --repofrompath=test,$PWD/repo module install test-app