forked from rpms/leapp-repository
75c9028095
- Enable new upgrade path for RHEL 8.10 -> RHEL 9.4 (including RHEL with SAP HANA) - Introduce generic transition of systemd services states during the IPU - Introduce possibility to upgrade with local repositories - Improve possibilities of upgrade when a proxy is configured in DNF configutation file - Fix handling of symlinks under /etc/pki when managing certificates - Fix the upgrade with custom https repositories - Default to the NO_RHSM mode when subscription-manager is not installed - Detect customized configuration of dynamic linker - Drop the invalid `tuv` target channel for the --channel option - Fix the issue of going out of bounds in the isccfg parser - Fix traceback when saving the rhsm facts results and the /etc/rhsm/facts directory doesn’t exist yet - Load all rpm repository substitutions that dnf knows about, not just "releasever" only - Simplify handling of upgrades on systems using RHUI, reducing the maintenance burden for cloud providers - Detect possible unexpected RPM GPG keys has been installed during RPM transaction - Resolves: RHEL-16729
62 lines
2.6 KiB
Diff
62 lines
2.6 KiB
Diff
From 5b0c1d9d6bc96e9718949a03dd717bb4cbc04c10 Mon Sep 17 00:00:00 2001
|
|
From: Evgeni Golov <evgeni@golov.de>
|
|
Date: Sat, 21 Oct 2023 19:36:19 +0200
|
|
Subject: [PATCH 23/38] load all substitutions from etc
|
|
|
|
On some distributions (like CentOS Stream and Oracle Linux), we need
|
|
more substitutions to be able to load repositories properly.
|
|
|
|
DNF has a helper for that: conf.substitutions.update_from_etc.
|
|
|
|
On pure DNF distributions, calling this should be sufficient.
|
|
On EL7, where the primary tool is YUM, DNF does not load vars from
|
|
/etc/yum, only from /etc/dnf, so we have to help it a bit and explicitly
|
|
try to load releasever from /etc/yum.
|
|
(DNF since 4.2.15 *does* also load substitutions from /etc/yum, but EL7
|
|
ships with 4.0.x)
|
|
---
|
|
.../system_upgrade/common/libraries/module.py | 23 +++++++++++--------
|
|
1 file changed, 14 insertions(+), 9 deletions(-)
|
|
|
|
diff --git a/repos/system_upgrade/common/libraries/module.py b/repos/system_upgrade/common/libraries/module.py
|
|
index abde69e7..7d4e8aa4 100644
|
|
--- a/repos/system_upgrade/common/libraries/module.py
|
|
+++ b/repos/system_upgrade/common/libraries/module.py
|
|
@@ -1,4 +1,3 @@
|
|
-import os
|
|
import warnings
|
|
|
|
from leapp.libraries.common.config.version import get_source_major_version
|
|
@@ -23,14 +22,20 @@ def _create_or_get_dnf_base(base=None):
|
|
# have repositories only for the exact system version (including the minor number). In a case when
|
|
# /etc/yum/vars/releasever is present, read its contents so that we can access repositores on such systems.
|
|
conf = dnf.conf.Conf()
|
|
- pkg_manager = 'yum' if get_source_major_version() == '7' else 'dnf'
|
|
- releasever_path = '/etc/{0}/vars/releasever'.format(pkg_manager)
|
|
- if os.path.exists(releasever_path):
|
|
- with open(releasever_path) as releasever_file:
|
|
- releasever = releasever_file.read().strip()
|
|
- conf.substitutions['releasever'] = releasever
|
|
- else:
|
|
- conf.substitutions['releasever'] = get_source_major_version()
|
|
+
|
|
+ # preload releasever from what we know, this will be our fallback
|
|
+ conf.substitutions['releasever'] = get_source_major_version()
|
|
+
|
|
+ # dnf on EL7 doesn't load vars from /etc/yum, so we need to help it a bit
|
|
+ if get_source_major_version() == '7':
|
|
+ try:
|
|
+ with open('/etc/yum/vars/releasever') as releasever_file:
|
|
+ conf.substitutions['releasever'] = releasever_file.read().strip()
|
|
+ except IOError:
|
|
+ pass
|
|
+
|
|
+ # load all substitutions from etc
|
|
+ conf.substitutions.update_from_etc('/')
|
|
|
|
base = dnf.Base(conf=conf)
|
|
base.init_plugins()
|
|
--
|
|
2.41.0
|
|
|