diff --git a/src/python/jw/pkg/cmds/distro/backend/BackendCmd.py b/src/python/jw/pkg/cmds/distro/backend/BackendCmd.py index 65901491..5a19360a 100644 --- a/src/python/jw/pkg/cmds/distro/backend/BackendCmd.py +++ b/src/python/jw/pkg/cmds/distro/backend/BackendCmd.py @@ -10,7 +10,7 @@ class BackendCmd: def __init__(self, parent: Cmd): self.__parent = parent - async def _sudo(self, cmd: list[str], mod_env: dict[str, str] = {}): + async def _sudo(self, cmd: list[str], mod_env: dict[str, str] = {}, opts: list[str]=[]): env: dict[str, str]|None = None cmd_input: str|None = None if mod_env: @@ -21,6 +21,7 @@ class BackendCmd: cmdline.append('/usr/bin/sudo') if env is not None: cmdline.append('--preserve-env=' + ','.join(mod_env.keys())) + cmdline.extend(opts) cmdline.extend(cmd) if self.interactive: cmd_input = "mode:interactive" diff --git a/src/python/jw/pkg/cmds/distro/backend/suse/Base.py b/src/python/jw/pkg/cmds/distro/backend/suse/Base.py index d27ed285..0de655a6 100644 --- a/src/python/jw/pkg/cmds/distro/backend/suse/Base.py +++ b/src/python/jw/pkg/cmds/distro/backend/suse/Base.py @@ -9,9 +9,9 @@ class Base(BackendCmd): super().__init__(parent) async def zypper(self, *args): - # Run sudo --login, because /etc/profile may modify ZYPP_CONF - cmd = ['--login', '/usr/bin/zypper'] + cmd = ['/usr/bin/zypper'] if not self.interactive: cmd.extend(['--non-interactive', '--gpg-auto-import-keys', '--no-gpg-checks']) cmd.extend(args) - return await self._sudo(cmd) + # Run sudo --login in case /etc/profile modifies ZYPP_CONF + return await self._sudo(cmd, opts=['--login'])