From 1787c4e513c5c887248417ffbf2dfa40801c1716 Mon Sep 17 00:00:00 2001 From: wangsong Date: Mon, 6 Dec 2021 10:27:59 +0800 Subject: [PATCH] =?UTF-8?q?dpkg=E5=8D=B8=E8=BD=BD=E8=BD=AF=E4=BB=B6?= =?UTF-8?q?=E5=8C=85=E7=9A=84=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/SystemUpdater/UpdateManager.py | 31 +++++++++++++------------- backend/kylin-system-updater | 1 + 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/backend/SystemUpdater/UpdateManager.py b/backend/SystemUpdater/UpdateManager.py index 20eb216..69f9fbc 100644 --- a/backend/SystemUpdater/UpdateManager.py +++ b/backend/SystemUpdater/UpdateManager.py @@ -197,27 +197,28 @@ class UpdateManager(): deb_cache = Cache() broken_count = deb_cache._depcache.broken_count if broken_count > 0: - errormsg = '' - pkg_list_str = " ".join(pkgs_list) - # args = ["dpkg", "-r"] - # args.extend([pkg_list_str]) - - # p = subprocess.Popen(args, stdout=subprocess.PIPE) - # (ver, error)= p.communicate() - # print(ver + error) - # print(p.returncode) - # # p.stdin.write(errormsg) - # # p.stdin.close() - # logging.error(p.stdin) - - # pkg_list_str = " ".join(pkgs_list) - return os.spawnlp(os.P_WAIT, "dpkg", "dpkg", "-r", pkg_list_str) + _success,header,desc = self._dpkg_purge_pkgs(pkgs_list) + if _success == True: + logging.info(header) + self.dbusController.PurgePackagesFinished(_success,'',desc) + else: + self.dbusController.PurgePackagesFinished(_success,header,desc) else: purge_backend = get_backend(self, InstallBackend.ACTION_REMOVE_PACKAGES) purge_backend.start(partial_upgrade_list = pkgs_list) except Exception as e: logging.error(e) + def _dpkg_purge_pkgs(self,pkgs_list): + success = False + pkg_list_str = " ".join(pkgs_list) + args = ["dpkg", "-r"] + args.extend([pkg_list_str]) + + p = subprocess.run(args, stdout=subprocess.PIPE,stderr=subprocess.STDOUT,text=True) + success = p.returncode == 0 + return success,p.stdout,'' + #更新结束之后会调到此获取要升级的列表 and 更新cache 生成升级组列表JSON def start_available(self): _success,header,desc = self.refresh_cache() diff --git a/backend/kylin-system-updater b/backend/kylin-system-updater index f229f07..7a1d7b8 100755 --- a/backend/kylin-system-updater +++ b/backend/kylin-system-updater @@ -76,4 +76,5 @@ if __name__ == "__main__": if app.configs.getWithDefault("SystemStatus", "isabnormalreboot", False) == True: app.start_update() + app.start_purge_pkgs(['kylin-video']) app.run() \ No newline at end of file