2. Changes in loading repositories

The repositories are loaded in order to have information about installed and available packages, comps, modules and excludes.

In DNF5, the repositories must be loaded only after the libdnf5::base::Base::setup() call and they cannot be loaded repeatedly. If a new set of repositories is needed, a new Base object should be created.

DNF4 Python:

 1# Optionally, read repositories from system configuration files.
 2base.read_all_repos()
 3
 4# Optionally, create and configure a new repository.
 5repo = dnf.repo.Repo("my_new_repo_id", base.conf)
 6repo.baseurl = [baseurl]
 7base.repos.add(repo)
 8
 9# Load repositories. To limit which repositories are loaded, pass
10# load_system_repo=False or load_available_repos=False.
11base.fill_sack()

DNF5 Python:

 1repo_sack = base.get_repo_sack()
 2
 3# Optionally, read repositories from system configuration files.
 4repo_sack.create_repos_from_system_configuration()
 5
 6# Optionally, create and configure a new repository.
 7repo = repo_sack.create_repo("my_new_repo_id")
 8repo.get_config().baseurl = baseurl
 9
10# Load repositories. To limit which repositories are loaded, pass
11# a repository type (e.g. libdnf5.repo.Repo.Type_SYSTEM).
12repo_sack.load_repos()

DNF5 C++:

 1auto repo_sack = base.get_repo_sack();
 2
 3// Optionally, read repositories from system configuration files.
 4repo_sack->create_repos_from_system_configuration();
 5
 6// Optionally, create and configure a new repository.
 7auto repo = repo_sack->create_repo("my_new_repo_id");
 8repo->get_config().get_baseurl_option().set(baseurl);
 9
10// Load repositores. To limit which repositories are loaded, pass
11// a repository type (e.g. libdnf5.repo.Repo.Type_SYSTEM).
12repo_sack->load_repos();