From 985d83fe5e8e630ff5e62050dbb99702fb2c3d19 Mon Sep 17 00:00:00 2001 From: Natalia Serrano Date: Tue, 24 Sep 2024 13:02:05 +0200 Subject: [PATCH] Revert "refs #773 do not use python apt module" This reverts commit a12001f84a138aaf47e03d9bf685d85e9dc68900. --- boottools/apt.py | 32 +++++++++++++++++++++++++++----- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/boottools/apt.py b/boottools/apt.py index 7fe0656..d50f6dd 100644 --- a/boottools/apt.py +++ b/boottools/apt.py @@ -58,8 +58,30 @@ def cache_search (pkgs): return res def install (pkgs, opts={}): - opts_list = [] - for k in opts: opts_list += ['-o', f'{k}={opts[k]}'] - print ('about to install these packages: "{}"'.format (' '.join (pkgs))) - import subprocess - subprocess.run (['apt-get', '--yes', 'install'] + pkgs + opts_list) + apt_pkg.init() + + if opts: + apt_pkg.init_config() + for k in opts: + apt_pkg.config.set (k, opts[k]) + + cache = apt_pkg.Cache() + sl = apt_pkg.SourceList() + sl.read_main_list() + cache.update (apt.progress.base.AcquireProgress(), sl) + + _to_install = [] + dep_cache = apt_pkg.DepCache(cache) + for p in pkgs: + package = cache[p] + if not package: + print (f'package "{p}" not found') + continue + _to_install.append (p) + dep_cache.mark_install(package) + + if _to_install: + print ('about to install these packages: "{}"'.format (' '.join (_to_install))) + fetcher = apt_pkg.Acquire() + install_progress = apt.progress.base.InstallProgress() + dep_cache.commit(fetcher, install_progress)