diff --git a/src/python/jw/pkg/lib/distros/suse/Distro.py b/src/python/jw/pkg/lib/distros/suse/Distro.py index 328b7288..b213cad0 100644 --- a/src/python/jw/pkg/lib/distros/suse/Distro.py +++ b/src/python/jw/pkg/lib/distros/suse/Distro.py @@ -14,6 +14,12 @@ if TYPE_CHECKING: class Distro(Base): + @property + def __update_extra_opts(self) -> list[str]: + if self.interactive: + return [] + return ['--force-resolution', '--auto-agree-with-licenses'] + async def zypper( self, args: list[str], verbose: bool = True, sudo: bool = True ) -> Result: @@ -44,6 +50,7 @@ class Distro(Base): args = ['dup', '--force-resolution', '--auto-agree-with-licenses'] if download_only: args.append('--download-only') + args += self.__update_extra_opts await self.zypper(args) async def _reboot_required(self, verbose: bool) -> bool: @@ -61,8 +68,10 @@ class Distro(Base): return await query_packages(names, ec = self.ctx) async def _install(self, names: Iterable[str], only_update: bool) -> None: - cmd = 'update' if only_update else 'install' - await self.zypper([cmd, *names]) + cmd = ['update' if only_update else 'install'] + cmd += self.__update_extra_opts + cmd += names + await self.zypper(cmd) async def _delete(self, names: Iterable[str]) -> None: await self.rpm(['-e', *names], sudo = True)