Skip to content

Commit fdf6b1b

Browse files
LiHua000deepin-bot[bot]
authored andcommitted
fix: [env] set user`s environment to QApt (#334)
Log: as title Bug: https://pms.uniontech.com/bug-view-318565.html
1 parent c97f7a2 commit fdf6b1b

2 files changed

Lines changed: 30 additions & 0 deletions

File tree

src/deb-installer/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ else()
3939
if(${QAPT_VERSION_STR} VERSION_GREATER_EQUAL "3.0.5.1-1-deepin1" AND ${QAPT_VERSION_STR} MATCHES ".*deepin.*")
4040
message(STATUS "enable virtual package enhance")
4141
add_definitions(-DENABLE_VIRTUAL_PACKAGE_ENHANCE)
42+
# Qt5环境且QApt版本>=3.0.5.1-1-deepin1,支持setEnvVariable方法
43+
add_definitions(-DENABLE_QAPT_SETENV)
4244
else()
4345
message(STATUS "disable virtual package enhance")
4446
endif()

src/deb-installer/model/deblistmodel.cpp

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -557,6 +557,21 @@ bool DebListModel::slotUninstallPackage(int index)
557557

558558
m_currentTransaction = transsaction; // 保存trans指针
559559

560+
#ifdef ENABLE_QAPT_SETENV // Qt5环境且qapt >= 3.0.5.1-1-deepin1,支持setEnvVariable
561+
QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
562+
QVariantMap map;
563+
564+
m_currentTransaction = transsaction; //保存trans指针
565+
// 获取当前真实用户信息
566+
QString currentUser = env.value("USER");
567+
// 如果SUDO_USER存在,说明当前是通过sudo启动的
568+
QString realUser = env.value("SUDO_USER");
569+
if (realUser.isEmpty())
570+
realUser = currentUser;
571+
map.insert("SUDO_USER", realUser);
572+
transsaction->setEnvVariable(map);
573+
#endif
574+
560575
qCDebug(appLog) << "Starting uninstall transaction for package:" << packageId;
561576
transsaction->run(); // 开始卸载
562577

@@ -1238,6 +1253,19 @@ void DebListModel::installDebs()
12381253

12391254
m_currentTransaction = transaction;
12401255

1256+
#ifdef ENABLE_QAPT_SETENV // Qt5环境且qapt >= 3.0.5.1-1-deepin1,支持setEnvVariable
1257+
QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
1258+
QVariantMap map;
1259+
1260+
// 获取当前真实用户信息
1261+
QString currentUser = env.value("USER");
1262+
// 如果SUDO_USER存在,说明当前是通过sudo启动的
1263+
QString realUser = env.value("SUDO_USER");
1264+
if (realUser.isEmpty())
1265+
realUser = currentUser;
1266+
map.insert("SUDO_USER", realUser);
1267+
m_currentTransaction->setEnvVariable(map);
1268+
#endif
12411269
qCDebug(appLog) << "Running current transaction";
12421270
m_currentTransaction->run();
12431271
}

0 commit comments

Comments
 (0)