Better custom repo installation

This commit is contained in:
Antoine Nguyen
2023-09-21 10:24:43 +02:00
parent b4b5fa288f
commit 9f5542f07e
2 changed files with 33 additions and 7 deletions

View File

@@ -49,7 +49,29 @@ class DEBPackage(Package):
def restore_system(self):
utils.exec_cmd("rm -f {}".format(self.policy_file))
def update(self, force=False):
def add_custom_repository(self,
name: str,
url: str,
key_url: str,
codename: str,
with_source: bool = True):
key_file = f"/etc/apt/keyrings/{name}.gpg"
utils.exec_cmd(
f"wget -O - {key_url} | gpg --dearmor | sudo tee {key_file} > /dev/null"
)
line_types = ["deb"]
if with_source:
line_types.append("deb-src")
for line_type in line_types:
line = (
f"{line_type} [arch=amd64 signed-by={key_file}] "
f"{url} {codename} main"
)
target_file = f"/etc/apt/source.list.d/{name}.list"
utils.exec_cmd(f'echo "{line} | sude tee {target_file}')
self.index_updated = False
def update(self):
"""Update local cache."""
if self.index_updated and not force:
return
@@ -89,7 +111,7 @@ class RPMPackage(Package):
def __init__(self, dist_name):
"""Initialize backend."""
super(RPMPackage, self).__init__(dist_name)
super().__init__(dist_name)
if "centos" in dist_name:
self.install("epel-release")