فهرست منبع

feat:部署新增uv工具检查和安装

Jerry Liang 1 ماه پیش
والد
کامیت
ceea8a0225
3فایلهای تغییر یافته به همراه36 افزوده شده و 2 حذف شده
  1. 12 0
      deploy/DEPLOYMENT.md
  2. 22 1
      deploy/scripts/install_deps.sh
  3. 2 1
      deploy/scripts/setup.sh

+ 12 - 0
deploy/DEPLOYMENT.md

@@ -206,6 +206,18 @@ sudo npm install -g pnpm@8
 pnpm -v        # 8.x
 ```
 
+### 3.4 uv(Python 包/工具管理器,可选)
+
+后端 AI 对话 / MCP 相关能力可能通过 `uvx` 拉起基于 Python 的 MCP server,需要 `uv`。
+`install_deps.sh` 会自动检测并安装(缺失时),也可手动安装:
+
+```bash
+# 官方脚本,安装到 /usr/local/bin(全局可用,不修改 shell profile)
+curl -LsSf https://astral.sh/uv/install.sh \
+  | sudo env UV_INSTALL_DIR=/usr/local/bin sh -s -- --no-modify-path
+uv --version   # 期望输出 uv 0.x.x
+```
+
 ---
 
 ## 4. 数据库安装

+ 22 - 1
deploy/scripts/install_deps.sh

@@ -9,6 +9,7 @@
 #   - MinIO(对象存储)+ mc(MinIO Client)
 #   - Docker + Docker Compose 插件(Casdoor 需要)
 #   - Go 1.26 / Node 22 + pnpm(仅“构建”时需要,可选)
+#   - uv(Python 包/工具管理器,uvx 拉起 MCP server 等,可选)
 #
 # 特点:
 #   * 每个组件都是“先检测,缺失才安装”,可重复执行(幂等)
@@ -222,6 +223,25 @@ ensure_node() {
     ok "Node/pnpm 安装完成:$(node -v) / pnpm $(pnpm -v)"
 }
 
+# ---------------------------------------------------------------------------
+# uv(Python 包/工具管理器,用于 uvx 拉起 MCP server 等)
+# ---------------------------------------------------------------------------
+ensure_uv() {
+    local ver=""
+    has uv && ver="$(uv --version 2>/dev/null | awk '{print $2}')"
+    _detect_guard "uv" "$([[ -n $ver ]] && echo 1 || echo 0)" "${ver}" && return 0
+    info "安装 uv(官方脚本,安装到 /usr/local/bin)..."
+    # 官方安装脚本:用 UV_INSTALL_DIR 指定全局目录,--no-modify-path 避免改动 shell profile
+    curl -LsSf https://astral.sh/uv/install.sh \
+        | sudo env UV_INSTALL_DIR=/usr/local/bin UV_UNMANAGED_INSTALL=/usr/local/bin sh -s -- --no-modify-path
+    if has uv; then
+        ok "uv 安装完成:$(uv --version | awk '{print $2}')"
+    else
+        err "uv 安装后仍无法在 PATH 中找到,请检查 /usr/local/bin 是否在 PATH"
+        return 1
+    fi
+}
+
 # ---------------------------------------------------------------------------
 # 主流程
 # ---------------------------------------------------------------------------
@@ -239,7 +259,8 @@ main() {
             docker) ensure_docker ;;
             go) ensure_go ;;
             node) ensure_node ;;
-            *) warn "未知组件:${c}(可选:postgres mongo redis minio mc docker go node)" ;;
+            uv) ensure_uv ;;
+            *) warn "未知组件:${c}(可选:postgres mongo redis minio mc docker go node uv)" ;;
         esac
     done
     ok "依赖处理完成"

+ 2 - 1
deploy/scripts/setup.sh

@@ -448,7 +448,8 @@ step_deps() {
     local base; base="$(_scripts_base)"
     local api_port="${MINIO_ENDPOINT##*:}"
     # 需要的组件:若要装 Casdoor 则一并确保 docker
-    local comps="postgres mongo redis minio mc"
+    # uv 作为 MCP/AI 对话运行时依赖(uvx 拉起 MCP server),默认一并检测安装
+    local comps="postgres mongo redis minio mc uv"
     [[ "${DO_CASDOOR}" == "y" ]] && comps="${comps} docker"
     run "MINIO_API_PORT='${api_port}' MINIO_ROOT_USER='${MINIO_ROOT_USER}' MINIO_ROOT_PASSWORD='${MINIO_ROOT_PASSWORD}' bash '${base}/install_deps.sh' ${comps}"
     ok "依赖检测/安装完成"