diff --git a/modoboa_installer/package.py b/modoboa_installer/package.py index e1b9bf7..21aa6f8 100644 --- a/modoboa_installer/package.py +++ b/modoboa_installer/package.py @@ -5,7 +5,7 @@ import re from . import utils -class Package(object): +class Package: """Base classe.""" def __init__(self, dist_name): @@ -29,10 +29,16 @@ class DEBPackage(Package): FORMAT = "deb" def __init__(self, dist_name): - super(DEBPackage, self).__init__(dist_name) + super().__init__(dist_name) self.index_updated = False self.policy_file = "/usr/sbin/policy-rc.d" + def enable_backports(self, codename): + code, output = utils.exec_cmd(f"grep {codename}-backports /etc/apt/sources.list") + if code: + with open(f"/etc/apt/sources.list.d/backports.list", "w") as fp: + fp.write(f"deb http://deb.debian.org/debian {codename}-backports main\n") + def prepare_system(self): """Make sure services don't start at installation.""" with open(self.policy_file, "w") as fp: diff --git a/modoboa_installer/scripts/dovecot.py b/modoboa_installer/scripts/dovecot.py index 30fb180..2559b70 100644 --- a/modoboa_installer/scripts/dovecot.py +++ b/modoboa_installer/scripts/dovecot.py @@ -55,10 +55,19 @@ class Dovecot(base.Installer): if package.backend.FORMAT == "deb": if "pop3" in self.config.get("dovecot", "extra_protocols"): packages += ["dovecot-pop3d"] - return super().get_packages() + packages + packages += super().get_packages() + backports_codename = getattr(self, "backports_codename", None) + if backports_codename: + packages = [f"{package}/{backports_codename}-backports" for package in packages] + return packages def install_packages(self): """Preconfigure Dovecot if needed.""" + name, version = utils.dist_info() + name = name.lower() + if name.startswith("debian") and version.startswith("12"): + package.backend.enable_backports("bookworm") + self.backports_codename = "bookworm" package.backend.preconfigure( "dovecot-core", "create-ssl-cert", "boolean", "false") super().install_packages() diff --git a/modoboa_installer/scripts/postfix.py b/modoboa_installer/scripts/postfix.py index beba9f2..6a2d743 100644 --- a/modoboa_installer/scripts/postfix.py +++ b/modoboa_installer/scripts/postfix.py @@ -29,7 +29,7 @@ class Postfix(base.Installer): packages = ["postfix-{}".format(self.db_driver)] else: packages = [] - return super(Postfix, self).get_packages() + packages + return super().get_packages() + packages def install_packages(self): """Preconfigure postfix package installation.""" @@ -46,7 +46,7 @@ class Postfix(base.Installer): package.backend.preconfigure( "postfix", "main_mailer_type", "select", "No configuration") - super(Postfix, self).install_packages() + super().install_packages() def get_template_context(self): """Additional variables."""