From 62a05823c6b9abf10522a28062638687694269aa Mon Sep 17 00:00:00 2001 From: ZhangTingan Date: Fri, 13 Jun 2025 15:24:39 +0800 Subject: [PATCH] fix: [env] set user`s environment to QApt Log: as title Bug: https://pms.uniontech.com/bug-view-318565.html --- src/deb-installer/model/deblistmodel.cpp | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/src/deb-installer/model/deblistmodel.cpp b/src/deb-installer/model/deblistmodel.cpp index 1999a3c2..79192a25 100644 --- a/src/deb-installer/model/deblistmodel.cpp +++ b/src/deb-installer/model/deblistmodel.cpp @@ -424,8 +424,18 @@ void DebListModel::slotUninstallPackage(const int index) // 卸载结束之后 删除指针 connect(transsaction, &Transaction::finished, transsaction, &Transaction::deleteLater); - m_currentTransaction = transsaction; //保存trans指针 + QProcessEnvironment env = QProcessEnvironment::systemEnvironment(); + QVariantMap map; + m_currentTransaction = transsaction; //保存trans指针 + // 获取当前真实用户信息 + QString currentUser = env.value("USER"); + // 如果SUDO_USER存在,说明当前是通过sudo启动的 + QString realUser = env.value("SUDO_USER"); + if (realUser.isEmpty()) + realUser = currentUser; + map.insert("SUDO_USER", realUser); + transsaction->setEnvVariable(map); transsaction->run(); //开始卸载 } @@ -896,6 +906,18 @@ void DebListModel::installDebs() m_currentTransaction = transaction; + QProcessEnvironment env = QProcessEnvironment::systemEnvironment(); + QVariantMap map; + + // 获取当前真实用户信息 + QString currentUser = env.value("USER"); + // 如果SUDO_USER存在,说明当前是通过sudo启动的 + QString realUser = env.value("SUDO_USER"); + if (realUser.isEmpty()) + realUser = currentUser; + map.insert("SUDO_USER", realUser); + m_currentTransaction->setEnvVariable(map); + m_currentTransaction->run(); }