urpmi: command args as list rather than string (#10606)

* urpmi: command args as list rather than string

* add changelog frag
This commit is contained in:
Alexei Znamensky 2025-08-10 23:35:03 +12:00 committed by GitHub
commit 83ce53136c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 13 additions and 14 deletions

View file

@ -0,0 +1,2 @@
minor_changes:
- urpmi - using safer mechanism to run external command (https://github.com/ansible-collections/community.general/pull/10606).

View file

@ -93,7 +93,7 @@ def query_package(module, name, root):
# rpm -q returns 0 if the package is installed, # rpm -q returns 0 if the package is installed,
# 1 if it is not installed # 1 if it is not installed
rpm_path = module.get_bin_path("rpm", True) rpm_path = module.get_bin_path("rpm", True)
cmd = "%s -q %s %s" % (rpm_path, name, root_option(root)) cmd = [rpm_path, "-q", name] + root_option(root)
rc, stdout, stderr = module.run_command(cmd, check_rc=False) rc, stdout, stderr = module.run_command(cmd, check_rc=False)
if rc == 0: if rc == 0:
return True return True
@ -105,7 +105,7 @@ def query_package_provides(module, name, root):
# rpm -q returns 0 if the package is installed, # rpm -q returns 0 if the package is installed,
# 1 if it is not installed # 1 if it is not installed
rpm_path = module.get_bin_path("rpm", True) rpm_path = module.get_bin_path("rpm", True)
cmd = "%s -q --whatprovides %s %s" % (rpm_path, name, root_option(root)) cmd = [rpm_path, "-q", "--whatprovides", name] + root_option(root)
rc, stdout, stderr = module.run_command(cmd, check_rc=False) rc, stdout, stderr = module.run_command(cmd, check_rc=False)
return rc == 0 return rc == 0
@ -113,7 +113,7 @@ def query_package_provides(module, name, root):
def update_package_db(module): def update_package_db(module):
urpmiupdate_path = module.get_bin_path("urpmi.update", True) urpmiupdate_path = module.get_bin_path("urpmi.update", True)
cmd = "%s -a -q" % (urpmiupdate_path,) cmd = [urpmiupdate_path, "-a", "-q"]
rc, stdout, stderr = module.run_command(cmd, check_rc=False) rc, stdout, stderr = module.run_command(cmd, check_rc=False)
if rc != 0: if rc != 0:
module.fail_json(msg="could not update package db") module.fail_json(msg="could not update package db")
@ -129,7 +129,7 @@ def remove_packages(module, packages, root):
continue continue
urpme_path = module.get_bin_path("urpme", True) urpme_path = module.get_bin_path("urpme", True)
cmd = "%s --auto %s %s" % (urpme_path, root_option(root), package) cmd = [urpme_path, "--auto"] + root_option(root) + [package]
rc, stdout, stderr = module.run_command(cmd, check_rc=False) rc, stdout, stderr = module.run_command(cmd, check_rc=False)
if rc != 0: if rc != 0:
@ -153,20 +153,17 @@ def install_packages(module, pkgspec, root, force=True, no_recommends=True):
if len(packages) != 0: if len(packages) != 0:
if no_recommends: if no_recommends:
no_recommends_yes = '--no-recommends' no_recommends_yes = ['--no-recommends']
else: else:
no_recommends_yes = '' no_recommends_yes = []
if force: if force:
force_yes = '--force' force_yes = ['--force']
else: else:
force_yes = '' force_yes = []
urpmi_path = module.get_bin_path("urpmi", True) urpmi_path = module.get_bin_path("urpmi", True)
cmd = ("%s --auto %s --quiet %s %s %s" % (urpmi_path, force_yes, cmd = [urpmi_path, "--auto"] + force_yes + ["--quiet"] + no_recommends_yes + root_option(root) + packages
no_recommends_yes,
root_option(root),
packages))
rc, out, err = module.run_command(cmd) rc, out, err = module.run_command(cmd)
@ -185,9 +182,9 @@ def install_packages(module, pkgspec, root, force=True, no_recommends=True):
def root_option(root): def root_option(root):
if root: if root:
return "--root=%s" % (root) return ["--root=%s" % (root)]
else: else:
return "" return []
def main(): def main():