fix(master): 回滚污染拦截策略,对 install_master.sh 使用子进程独立文件流执行,彻底解决拉取代码卡死及输入串行问题,原版逻辑 100% 无损分拆

This commit is contained in:
hotyue
2026-06-03 03:19:08 +00:00
parent 2e2e81abd3
commit 25c5ad259b
3 changed files with 54 additions and 50 deletions
+18 -16
View File
@@ -1,16 +1,18 @@
#!/bin/bash
# ==========================================================
# 模块名称: build_master.sh (v4.3.0 Orchestrator)
# 核心功能: Master 安装业务总指挥
# 核心功能: Master 安装业务总指挥,按原版时序复用组件
# ==========================================================
# 传递中断引信
trap 'exit 1' INT QUIT TERM
# Master 仅需要复用 env_setup 和专属的 master_setup
MODULES=(
"env_setup.sh"
"master_setup.sh"
)
echo "⏳ 正在装载中枢底层设施依赖..."
for mod in "${MODULES[@]}"; do
curl -fsSL --connect-timeout 10 --retry 3 "${REPO_RAW_URL}/install/${mod}" -o "${SECURE_TMP}/${mod}"
if [ ! -s "${SECURE_TMP}/${mod}" ]; then
@@ -20,21 +22,21 @@ for mod in "${MODULES[@]}"; do
source "${SECURE_TMP}/${mod}"
done
echo -e "\033[32m✅ 中枢模块装载完毕,正在进入部署流程...\033[0m"
# --- 核心业务编排流 ---
# ==========================================================
# 核心业务原子流 (100% 忠实于原版 install_master.sh 执行时序)
# ==========================================================
# [复用模块: env_setup.sh]
do_master_env_precheck # 预检
do_master_env_precheck # 预检 (复用了与 Agent 相同逻辑但修改了提示语,见下方)
do_fetch_master_version # 抓取版本
do_master_handle_menu # OTA 拦截与菜单选择
do_install_deps # 安装 sqlite3 等依赖
# 如果选择卸载,模块内部会 exit
do_master_handle_menu # 拦截指令或展示交互菜单
do_install_deps # [复用 Agent] 多分支依赖安装
# [专属模块: master_setup.sh]
do_master_clean_env # 验证环境与保护 DB
do_master_config # 交互获取 Token 并生成 conf
do_master_init_db # 初始化 SQLite 表结构
do_master_deploy_core # 覆写内核并注入守护进程
do_master_summary # 打印状态汇报与回执
do_master_clean_env # 环境清理
do_master_config # 令牌收集与 conf 生成
do_master_init_db # SQLite 表结构固化
do_master_deploy_core # 覆写内核守护进程注入
do_master_summary # 态汇报与回执
exit 0