Install dovecot from backports if Debian 12
This commit is contained in:
@@ -5,7 +5,7 @@ import re
|
|||||||
from . import utils
|
from . import utils
|
||||||
|
|
||||||
|
|
||||||
class Package(object):
|
class Package:
|
||||||
"""Base classe."""
|
"""Base classe."""
|
||||||
|
|
||||||
def __init__(self, dist_name):
|
def __init__(self, dist_name):
|
||||||
@@ -29,10 +29,16 @@ class DEBPackage(Package):
|
|||||||
FORMAT = "deb"
|
FORMAT = "deb"
|
||||||
|
|
||||||
def __init__(self, dist_name):
|
def __init__(self, dist_name):
|
||||||
super(DEBPackage, self).__init__(dist_name)
|
super().__init__(dist_name)
|
||||||
self.index_updated = False
|
self.index_updated = False
|
||||||
self.policy_file = "/usr/sbin/policy-rc.d"
|
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):
|
def prepare_system(self):
|
||||||
"""Make sure services don't start at installation."""
|
"""Make sure services don't start at installation."""
|
||||||
with open(self.policy_file, "w") as fp:
|
with open(self.policy_file, "w") as fp:
|
||||||
|
|||||||
@@ -55,10 +55,19 @@ class Dovecot(base.Installer):
|
|||||||
if package.backend.FORMAT == "deb":
|
if package.backend.FORMAT == "deb":
|
||||||
if "pop3" in self.config.get("dovecot", "extra_protocols"):
|
if "pop3" in self.config.get("dovecot", "extra_protocols"):
|
||||||
packages += ["dovecot-pop3d"]
|
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):
|
def install_packages(self):
|
||||||
"""Preconfigure Dovecot if needed."""
|
"""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(
|
package.backend.preconfigure(
|
||||||
"dovecot-core", "create-ssl-cert", "boolean", "false")
|
"dovecot-core", "create-ssl-cert", "boolean", "false")
|
||||||
super().install_packages()
|
super().install_packages()
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ class Postfix(base.Installer):
|
|||||||
packages = ["postfix-{}".format(self.db_driver)]
|
packages = ["postfix-{}".format(self.db_driver)]
|
||||||
else:
|
else:
|
||||||
packages = []
|
packages = []
|
||||||
return super(Postfix, self).get_packages() + packages
|
return super().get_packages() + packages
|
||||||
|
|
||||||
def install_packages(self):
|
def install_packages(self):
|
||||||
"""Preconfigure postfix package installation."""
|
"""Preconfigure postfix package installation."""
|
||||||
@@ -46,7 +46,7 @@ class Postfix(base.Installer):
|
|||||||
|
|
||||||
package.backend.preconfigure(
|
package.backend.preconfigure(
|
||||||
"postfix", "main_mailer_type", "select", "No configuration")
|
"postfix", "main_mailer_type", "select", "No configuration")
|
||||||
super(Postfix, self).install_packages()
|
super().install_packages()
|
||||||
|
|
||||||
def get_template_context(self):
|
def get_template_context(self):
|
||||||
"""Additional variables."""
|
"""Additional variables."""
|
||||||
|
|||||||
Reference in New Issue
Block a user