From 28f0e8a0c71700b812fd0d7845de90db4cd1420a Mon Sep 17 00:00:00 2001 From: Hongyu Shi Date: Thu, 4 Sep 2025 10:26:04 +0800 Subject: [PATCH 1/7] =?UTF-8?q?chore(deploy):=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E9=83=A8=E7=BD=B2=E6=AD=A5=E9=AA=A4=20UI=20=E5=B1=95=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Hongyu Shi --- src/app/deployment/service.py | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/app/deployment/service.py b/src/app/deployment/service.py index 830787e..ab56ce7 100644 --- a/src/app/deployment/service.py +++ b/src/app/deployment/service.py @@ -279,8 +279,8 @@ class DeploymentService: # 重置状态 self.state.reset() self.state.is_running = True - # 根据部署模式设置总步数:轻量模式7步,全量模式6步 - self.state.total_steps = 7 if config.deployment_mode == "light" else 6 + # 根据部署模式设置总步数:轻量模式5步,全量模式4步 + self.state.total_steps = 5 if config.deployment_mode == "light" else 4 # 执行部署步骤 success = await self._execute_deployment_steps(config, progress_callback) @@ -383,8 +383,8 @@ class DeploymentService: # 定义基础部署步骤 steps = [ - self._check_environment, self._setup_deploy_mode, + self._check_environment, self._run_env_check_script, self._run_install_dependency_script, self._generate_config_files, @@ -474,8 +474,8 @@ class DeploymentService: progress_callback: Callable[[DeploymentState], None] | None, ) -> bool: """设置部署模式""" - self.state.current_step = 2 - self.state.current_step_name = "设置部署模式" + self.state.current_step = 0 + self.state.current_step_name = "初始化部署配置" self.state.add_log("正在设置部署模式...") if progress_callback: @@ -523,8 +523,8 @@ class DeploymentService: progress_callback: Callable[[DeploymentState], None] | None, ) -> bool: """运行环境检查脚本""" - self.state.current_step = 3 - self.state.current_step_name = "环境检查" + self.state.current_step = 1 + self.state.current_step_name = "检查系统环境" self.state.add_log("正在执行系统环境检查...") if progress_callback: @@ -544,7 +544,7 @@ class DeploymentService: progress_callback: Callable[[DeploymentState], None] | None, ) -> bool: """运行依赖安装脚本""" - self.state.current_step = 4 + self.state.current_step = 2 self.state.current_step_name = "安装依赖组件" self.state.add_log("正在安装 openEuler Intelligence 依赖组件...") @@ -567,7 +567,7 @@ class DeploymentService: progress_callback: Callable[[DeploymentState], None] | None, ) -> bool: """运行配置初始化脚本""" - self.state.current_step = 6 + self.state.current_step = 4 self.state.current_step_name = "初始化配置和服务" self.state.add_log("正在初始化配置和启动服务...") @@ -657,7 +657,7 @@ class DeploymentService: progress_callback: Callable[[DeploymentState], None] | None, ) -> bool: """生成配置文件""" - self.state.current_step = 5 + self.state.current_step = 3 self.state.current_step_name = "更新配置文件" self.state.add_log("正在更新配置文件...") @@ -899,7 +899,7 @@ class DeploymentService: progress_callback: Callable[[DeploymentState], None] | None, ) -> bool: """运行 Agent 初始化脚本""" - self.state.current_step = 7 + self.state.current_step = 5 self.state.current_step_name = "初始化 Agent 服务" self.state.add_log("正在检查 openEuler Intelligence 后端服务状态...") -- Gitee From 1509764d316a053af61789f51a306ab5b6e600ec Mon Sep 17 00:00:00 2001 From: Hongyu Shi Date: Thu, 4 Sep 2025 11:17:12 +0800 Subject: [PATCH 2/7] =?UTF-8?q?feat(deploy):=20=E6=B7=BB=E5=8A=A0=20Python?= =?UTF-8?q?=20=E7=89=88=E6=9C=AC=E6=A3=80=E6=9F=A5=E4=BB=A5=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E5=85=A8=E9=87=8F=E9=83=A8=E7=BD=B2=E6=A8=A1=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Hongyu Shi --- src/app/deployment/service.py | 43 +++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/src/app/deployment/service.py b/src/app/deployment/service.py index ab56ce7..1bb3580 100644 --- a/src/app/deployment/service.py +++ b/src/app/deployment/service.py @@ -10,6 +10,7 @@ import asyncio import contextlib import platform import re +import sys from pathlib import Path from typing import TYPE_CHECKING @@ -192,6 +193,13 @@ class DeploymentService: errors.append("仅支持 openEuler 操作系统") return False, errors + # 检查 Python 版本兼容性 + python_version = sys.version_info + current_version = f"{python_version.major}.{python_version.minor}" + if python_version < (3, 10) and progress_callback: + temp_state.add_log(f"⚠ 检测到 Python {current_version},低于 3.10 版本将不支持全量部署模式") + progress_callback(temp_state) + # 检查并安装 openeuler-intelligence-installer if not self.resource_manager.check_installer_available(): if progress_callback: @@ -238,6 +246,35 @@ class DeploymentService: system_info = platform.platform().lower() return "openeuler" in system_info + def check_python_version_for_deployment(self, deployment_mode: str) -> tuple[bool, str]: + """ + 检查 Python 版本是否支持指定的部署模式 + + Args: + deployment_mode: 部署模式 ("light" 或 "full") + + Returns: + tuple[bool, str]: (是否支持, 错误信息) + + """ + try: + python_version = sys.version_info + current_version = f"{python_version.major}.{python_version.minor}" + + # 检查是否低于 3.10 + if python_version < (3, 10) and deployment_mode == "full": + return False, ( + "当前 openEuler 版本低于 24.03 LTS," + "不支持全量部署模式。请使用轻量部署模式或升级到 openEuler 24.03+ 版本" + ) + + except Exception as e: + logger.exception("检查 Python 环境版本时发生错误") + return False, f"无法检查 Python 环境: {e}" + else: + # Python 版本符合要求 + return True, f"Python 环境版本 {current_version} 符合要求" + async def check_sudo_privileges(self) -> bool: """检查 sudo 权限""" try: @@ -453,6 +490,12 @@ class DeploymentService: return False self.state.add_log("✓ 检测到 openEuler 操作系统") + # 检查 openEuler & Python 版本是否支持指定的部署模式 + python_check_ok, python_msg = self.check_python_version_for_deployment(config.deployment_mode) + if not python_check_ok: + self.state.add_log(f"✗ 错误: {python_msg}") + return False + # 检查安装器资源 if not self.resource_manager.check_installer_available(): self.state.add_log("✗ 错误: openeuler-intelligence-installer 包未安装或资源缺失") -- Gitee From 71633770018abd491f452762e16d6736c4117cde Mon Sep 17 00:00:00 2001 From: Hongyu Shi Date: Thu, 4 Sep 2025 11:53:39 +0800 Subject: [PATCH 3/7] =?UTF-8?q?0.10.0=20=E7=89=88=E6=9C=AC=EF=BC=9A?= =?UTF-8?q?=E6=B8=85=E7=A9=BA=20MCP=20Server=20=E7=9B=B8=E5=85=B3=20RPM=20?= =?UTF-8?q?=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Hongyu Shi --- scripts/deploy/5-resource/mcp-servers.rpmlist | 2 -- 1 file changed, 2 deletions(-) diff --git a/scripts/deploy/5-resource/mcp-servers.rpmlist b/scripts/deploy/5-resource/mcp-servers.rpmlist index cc3226e..e69de29 100644 --- a/scripts/deploy/5-resource/mcp-servers.rpmlist +++ b/scripts/deploy/5-resource/mcp-servers.rpmlist @@ -1,2 +0,0 @@ -mcp-servers-perf -mcp-servers-remote-shell -- Gitee From 002798b8e00b62cde526c8e86df0b5c93ed84fdd Mon Sep 17 00:00:00 2001 From: Hongyu Shi Date: Thu, 4 Sep 2025 14:43:12 +0800 Subject: [PATCH 4/7] =?UTF-8?q?chore:=20=E5=B0=86=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E5=8F=B7=E6=94=B9=E5=9B=9E=200.10.0=EF=BC=8C=E5=B9=B6=E5=90=AF?= =?UTF-8?q?=E7=94=A8=20riscv64=20=E5=92=8C=20loongarch64=20=E6=9E=B6?= =?UTF-8?q?=E6=9E=84=E7=9A=84=E6=9E=84=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Hongyu Shi --- distribution/linux/euler-copilot-shell.spec | 14 ++++++++------ setup.py | 2 +- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/distribution/linux/euler-copilot-shell.spec b/distribution/linux/euler-copilot-shell.spec index c1f8d01..086e82d 100644 --- a/distribution/linux/euler-copilot-shell.spec +++ b/distribution/linux/euler-copilot-shell.spec @@ -3,15 +3,14 @@ %global debug_package %{nil} Name: euler-copilot-shell -Version: 1.0.0 -Release: 1%{?dist} +Version: 0.10.0 +Release: 3%{?dist} Summary: openEuler Intelligence 智能命令行工具集 License: MulanPSL-2.0 URL: https://gitee.com/openeuler/euler-copilot-shell Source0: %{name}-%{version}.tar.gz -# 支持x86_64和aarch64双架构 -ExclusiveArch: x86_64 aarch64 +ExclusiveArch: x86_64 aarch64 riscv64 loongarch64 BuildRequires: python3-devel BuildRequires: python3-virtualenv @@ -99,10 +98,13 @@ ln -sf /usr/lib/openeuler-intelligence/scripts/deploy %{buildroot}%{_bindir}/ope %{_bindir}/openeuler-intelligence-installer %changelog -* Thu Aug 28 2025 openEuler - 1.0.0-1 +* Thu Sep 04 2025 openEuler - 0.10.0-3 +- 部署功能新增支持全量部署(含 RAG、Web) +- 允许构建 riscv64 loongarch64 版本 + +* Thu Aug 28 2025 openEuler - 0.10.0-2 - 新增 openEuler Intelligence 部署功能 TUI - 新增选择默认 Agent 功能 -- 版本号升级至 1.0.0 * Wed Aug 13 2025 openEuler - 0.10.0-1 - 重构为子包形式:openeuler-intelligence-cli 和 openeuler-intelligence-installer diff --git a/setup.py b/setup.py index 5fec4d7..0fd4721 100644 --- a/setup.py +++ b/setup.py @@ -8,7 +8,7 @@ from setuptools import find_packages, setup setup( name="oi-cli", - version="1.0.0", + version="0.10.0", description="智能 Shell 命令行工具", author="openEuler", author_email="contact@openeuler.org", -- Gitee From 0086ec67706d0e12208abae39cd1d5d04c99e3fd Mon Sep 17 00:00:00 2001 From: Hongyu Shi Date: Thu, 4 Sep 2025 15:58:52 +0800 Subject: [PATCH 5/7] chore: fix shellcheck clean code Signed-off-by: Hongyu Shi --- scripts/deploy/1-check-env/check_env.sh | 39 +++++++---- .../install_openEulerIntelligence.sh | 64 +++++++++++-------- 2 files changed, 61 insertions(+), 42 deletions(-) diff --git a/scripts/deploy/1-check-env/check_env.sh b/scripts/deploy/1-check-env/check_env.sh index c387714..756bbdd 100644 --- a/scripts/deploy/1-check-env/check_env.sh +++ b/scripts/deploy/1-check-env/check_env.sh @@ -102,9 +102,10 @@ check_url_accessibility() { fi local all_success=true - local timeout_seconds=15 # 设置超时时间 - local temp_file=$(mktemp) # 创建临时文件 - local failed_urls=() # 存储失败的URL + local timeout_seconds=15 # 设置超时时间 + local failed_urls=() # 存储失败的URL + local temp_file # 创建临时文件 + temp_file=$(mktemp) echo -e "${COLOR_INFO}开始检测URL可达性...${COLOR_RESET}" echo -e "${COLOR_INFO}超时时间: ${timeout_seconds}秒${COLOR_RESET}" @@ -197,9 +198,12 @@ function check_version { } function check_os_version { - local id=$(grep '^ID=' /etc/os-release | cut -d= -f2 | tr -d '"') - local version=$(grep -E "^VERSION_ID=" /etc/os-release | cut -d '"' -f 2) - local sp=$(grep -E "^VERSION=" /etc/os-release | grep -oP 'SP\d+') + local id + local version + local sp + id=$(grep '^ID=' /etc/os-release | cut -d= -f2 | tr -d '"') + version=$(grep -E "^VERSION_ID=" /etc/os-release | cut -d '"' -f 2) + sp=$(grep -E "^VERSION=" /etc/os-release | grep -oP 'SP\d+') echo -e "${COLOR_INFO}[Info] 当前发行版为:$id${COLOR_RESET}" @@ -221,7 +225,8 @@ function check_os_version { } function check_hostname { - local current_hostname=$(cat /etc/hostname) + local current_hostname + current_hostname=$(cat /etc/hostname) if [[ -z "$current_hostname" ]]; then echo -e "${COLOR_WARNING}[Warning] 未设置主机名,自动设置为localhost${COLOR_RESET}" set_hostname "localhost" @@ -292,13 +297,15 @@ check_all_packages() { local PACKAGES=("$@") local timeout_seconds=30 - local start_time=$(date +%s) + local start_time + start_time=$(date +%s) echo -e "${COLOR_INFO}--------------------------------${COLOR_RESET}" for pkg in "${PACKAGES[@]}"; do # 检查是否超时 - local current_time=$(date +%s) + local current_time + current_time=$(date +%s) local elapsed=$((current_time - start_time)) if [ $elapsed -ge $timeout_seconds ]; then @@ -389,7 +396,8 @@ function check_dns { function check_ram { local RAM_THRESHOLD=1024 - local current_mem=$(free -m | awk '/Mem/{print $2}') + local current_mem + current_mem=$(free -m | awk '/Mem/{print $2}') echo -e "${COLOR_INFO}[Info] 当前内存:$current_mem MB${COLOR_RESET}" if ((current_mem < RAM_THRESHOLD)); then @@ -404,7 +412,8 @@ check_disk_space() { local DIR="$1" local THRESHOLD="$2" - local USAGE=$(df --output=pcent "$DIR" | tail -n 1 | sed 's/%//g' | tr -d ' ') + local USAGE + USAGE=$(df --output=pcent "$DIR" | tail -n 1 | sed 's/%//g' | tr -d ' ') if [ "$USAGE" -ge "$THRESHOLD" ]; then echo -e "${COLOR_WARNING}[Warning] $DIR 的磁盘使用率已达到 ${USAGE}%,超过阈值 ${THRESHOLD}%${COLOR_RESET}" @@ -465,7 +474,7 @@ setup_firewall() { echo -e "${COLOR_INFO}[Info]防火墙已运行,开放端口${COLOR_RESET}" for port in "${PORTS[@]}"; do echo -e "${COLOR_INFO}[Info]开放端口 $port/tcp...${COLOR_RESET}" - firewall-cmd --permanent --add-port=${port}/tcp || { + firewall-cmd --permanent --add-port="${port}"/tcp || { echo -e "${COLOR_ERROR}[Error]开放端口 $port 失败!${COLOR_RESET}" return 1 } @@ -488,8 +497,10 @@ read_install_mode() { fi # 从文件读取配置(格式:key=value) - local web_install=$(grep "web_install=" "$INSTALL_MODE_FILE" | cut -d'=' -f2) - local rag_install=$(grep "rag_install=" "$INSTALL_MODE_FILE" | cut -d'=' -f2) + local web_install + local rag_install + web_install=$(grep "web_install=" "$INSTALL_MODE_FILE" | cut -d'=' -f2) + rag_install=$(grep "rag_install=" "$INSTALL_MODE_FILE" | cut -d'=' -f2) # 验证读取结果 if [ -z "$web_install" ] || [ -z "$rag_install" ]; then diff --git a/scripts/deploy/2-install-dependency/install_openEulerIntelligence.sh b/scripts/deploy/2-install-dependency/install_openEulerIntelligence.sh index a829536..6d994af 100644 --- a/scripts/deploy/2-install-dependency/install_openEulerIntelligence.sh +++ b/scripts/deploy/2-install-dependency/install_openEulerIntelligence.sh @@ -56,28 +56,28 @@ install_minio() { return 1 fi ! is_x86_architecture || { - local minio_url="https://dl.min.io/server/minio/release/linux-amd64/archive/minio-20250524170830.0.0-1.x86_64.rpm" - local minio_src="../5-resource/rpm/minio-20250524170830.0.0-1.x86_64.rpm" - local minio_file="/opt/minio/minio-20250524170830.0.0-1.x86_64.rpm" + local minio_url="https://dl.min.io/server/minio/release/linux-amd64/archive/minio-20250524170830.0.0-1.x86_64.rpm" + local minio_src="../5-resource/rpm/minio-20250524170830.0.0-1.x86_64.rpm" + local minio_file="/opt/minio/minio-20250524170830.0.0-1.x86_64.rpm" - if [ -f "$minio_src" ]; then - cp -r "$minio_src" "$minio_file" - sleep 1 - fi - if [ ! -f "$minio_file" ]; then - echo -e "${COLOR_INFO}[Info] 正在下载MinIO软件包...${COLOR_RESET}" - if ! wget "$minio_url" --no-check-certificate -O "$minio_file"; then - echo -e "${COLOR_ERROR}[Error] MinIO下载失败${COLOR_RESET}" - return 1 + if [ -f "$minio_src" ]; then + cp -r "$minio_src" "$minio_file" + sleep 1 + fi + if [ ! -f "$minio_file" ]; then + echo -e "${COLOR_INFO}[Info] 正在下载MinIO软件包...${COLOR_RESET}" + if ! wget "$minio_url" --no-check-certificate -O "$minio_file"; then + echo -e "${COLOR_ERROR}[Error] MinIO下载失败${COLOR_RESET}" + return 1 + fi fi - fi - dnf install -y $minio_file || { - echo -e "${COLOR_ERROR}[Error] MinIO安装失败${COLOR_RESET}" - return 1 - } - echo -e "${COLOR_SUCCESS}[Success] MinIO安装成功...${COLOR_RESET}" - return 0 + dnf install -y $minio_file || { + echo -e "${COLOR_ERROR}[Error] MinIO安装失败${COLOR_RESET}" + return 1 + } + echo -e "${COLOR_SUCCESS}[Success] MinIO安装成功...${COLOR_RESET}" + return 0 } echo -e "${COLOR_INFO}[Info] 下载MinIO二进制文件(aarch64)...${COLOR_RESET}" local minio_url="https://dl.min.io/server/minio/release/linux-arm64/minio" @@ -114,7 +114,8 @@ smart_install() { # 本地安装模式(仅在本地仓库可用时尝试) if [[ "$use_local" == true ]]; then # 检查本地是否存在包(支持模糊匹配) - local local_pkg=$(find "$LOCAL_REPO_DIR" -name "${pkg}-*.rpm" | head -1) + local local_pkg + local_pkg=$(find "$LOCAL_REPO_DIR" -name "${pkg}-*.rpm" | head -1) if [[ -n "$local_pkg" ]]; then if dnf --disablerepo='*' --enablerepo=local-rpms install -y "$pkg"; then @@ -146,7 +147,7 @@ install_and_verify() { local pkgs=("$@") # 检查并安装每个包 for pkg in "${pkgs[@]}"; do - smart_install $pkg + smart_install "$pkg" sleep 1 done # 检查安装结果 @@ -480,8 +481,10 @@ check_pip_rag() { # 检查每个包是否需要安装 for pkg in "${!REQUIRED_PACKAGES[@]}"; do - local required_ver="${REQUIRED_PACKAGES[$pkg]}" - local installed_ver=$(pip show "$pkg" 2>/dev/null | grep '^Version:' | awk '{print $2}') + local required_ver + local installed_ver + required_ver="${REQUIRED_PACKAGES[$pkg]}" + installed_ver=$(pip show "$pkg" 2>/dev/null | grep '^Version:' | awk '{print $2}') if [[ -z "$installed_ver" ]]; then echo -e "${COLOR_WARNING}[Warning] 未安装包: $pkg${COLOR_RESET}" @@ -530,8 +533,10 @@ check_pip() { # 检查每个包是否需要安装 for pkg in "${!REQUIRED_PACKAGES[@]}"; do - local required_ver="${REQUIRED_PACKAGES[$pkg]}" - local installed_ver=$(pip show "$pkg" 2>/dev/null | grep '^Version:' | awk '{print $2}') + local required_ver + local installed_ver + required_ver="${REQUIRED_PACKAGES[$pkg]}" + installed_ver=$(pip show "$pkg" 2>/dev/null | grep '^Version:' | awk '{print $2}') if [[ -z "$installed_ver" ]]; then echo -e "${COLOR_WARNING}[Warning] 未安装包: $pkg${COLOR_RESET}" @@ -634,8 +639,10 @@ read_install_mode() { fi # 从文件读取配置(格式:key=value) - local web_install=$(grep "web_install=" "$INSTALL_MODE_FILE" | cut -d'=' -f2) - local rag_install=$(grep "rag_install=" "$INSTALL_MODE_FILE" | cut -d'=' -f2) + local web_install + local rag_install + web_install=$(grep "web_install=" "$INSTALL_MODE_FILE" | cut -d'=' -f2) + rag_install=$(grep "rag_install=" "$INSTALL_MODE_FILE" | cut -d'=' -f2) # 验证读取结果 if [ -z "$web_install" ] || [ -z "$rag_install" ]; then @@ -677,7 +684,8 @@ install_components() { main() { echo -e "${COLOR_INFO}[Info] === 开始服务安装===${COLOR_RESET}" # 获取脚本所在的绝对路径 - declare SCRIPT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) + local SCRIPT_DIR + SCRIPT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) # 切换到脚本所在目录 cd "$SCRIPT_DIR" || return 1 #查看当前脚本执行的模式 -- Gitee From bf75134af42f6bfa81c80308663cea01eaf3e6bc Mon Sep 17 00:00:00 2001 From: Hongyu Shi Date: Thu, 4 Sep 2025 16:21:44 +0800 Subject: [PATCH 6/7] =?UTF-8?q?feat(deploy):=20=E6=9B=B4=E6=96=B0=20Python?= =?UTF-8?q?=20=E7=89=88=E6=9C=AC=E6=A3=80=E6=9F=A5=E9=80=BB=E8=BE=91?= =?UTF-8?q?=E4=BB=A5=E6=94=AF=E6=8C=81=E5=9C=A8=E6=97=A7=E7=89=88=20openEu?= =?UTF-8?q?ler=20=E5=AE=89=E8=A3=85=E4=BE=9D=E8=B5=96=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Hongyu Shi --- scripts/deploy/1-check-env/check_env.sh | 26 +++++-- .../install_openEulerIntelligence.sh | 76 ++++++++++++++++--- 2 files changed, 88 insertions(+), 14 deletions(-) diff --git a/scripts/deploy/1-check-env/check_env.sh b/scripts/deploy/1-check-env/check_env.sh index 756bbdd..718ea4b 100644 --- a/scripts/deploy/1-check-env/check_env.sh +++ b/scripts/deploy/1-check-env/check_env.sh @@ -186,10 +186,26 @@ function check_version { echo -e "${COLOR_INFO}[Info] 当前操作系统版本为:$current_version_id LTS-$sp${COLOR_RESET}" for version_id in "${supported_versions[@]}"; do if [[ "$current_version_id" == "$version_id" ]]; then - if [[ "$sp" == "SP2" ]]; then - echo -e "${COLOR_SUCCESS}[Success] 操作系统满足兼容性要求${COLOR_RESET}" - return 0 - fi + case "$current_version_id" in + "22.03") + if [[ "$sp" == "SP4" ]]; then + echo -e "${COLOR_SUCCESS}[Success] 操作系统满足兼容性要求${COLOR_RESET}" + return 0 + fi + ;; + "24.03") + if [[ "$sp" == "SP2" || "$sp" == "SP3" ]]; then + echo -e "${COLOR_SUCCESS}[Success] 操作系统满足兼容性要求${COLOR_RESET}" + return 0 + fi + ;; + "25.03" | "25.09") + if [[ -z "$sp" ]]; then + echo -e "${COLOR_SUCCESS}[Success] 操作系统满足兼容性要求${COLOR_RESET}" + return 0 + fi + ;; + esac fi done @@ -209,7 +225,7 @@ function check_os_version { case $id in "openEuler") - local supported_versions=("24.03") + local supported_versions=("22.03" "24.03" "25.03" "25.09") check_version "$version" "${supported_versions[@]}" "$sp" ;; "hce") diff --git a/scripts/deploy/2-install-dependency/install_openEulerIntelligence.sh b/scripts/deploy/2-install-dependency/install_openEulerIntelligence.sh index 6d994af..b9ab6be 100644 --- a/scripts/deploy/2-install-dependency/install_openEulerIntelligence.sh +++ b/scripts/deploy/2-install-dependency/install_openEulerIntelligence.sh @@ -517,14 +517,67 @@ check_pip_rag() { return 0 } -check_pip() { - # 定义需要检查的包和版本 - declare -A REQUIRED_PACKAGES=( - ["pymongo"]="" - ["requests"]="" - ["pydantic"]="" - ["aiohttp"]="" - ) + +check_pip_framework() { + # 获取 Python 版本 + local python_version + python_version=$(python3 --version 2>&1 | grep -oP '\d+\.\d+' | head -1) + + # 根据 Python 版本选择包列表 + declare -A REQUIRED_PACKAGES + if [[ "$python_version" =~ ^3\.(11|[2-9][0-9])$ ]]; then + # Python 3.11 或更新版本,使用当前列表 + REQUIRED_PACKAGES=( + ["pymongo"]="" + ["requests"]="" + ["pydantic"]="" + ["aiohttp"]="" + ) + elif [[ "$python_version" =~ ^3\.(9|10)$ ]]; then + # Python 3.9 或 3.10,使用完整列表 + REQUIRED_PACKAGES=( + ["requests"]="" + ["aiohttp"]="" + ["aiofiles"]="24.1.0" + ["asyncer"]="0.0.8" + ["asyncpg"]="0.30.0" + ["cryptography"]="44.0.2" + ["fastapi"]="0.115.12" + ["httpx"]="0.28.1" + ["httpx-sse"]="0.4.0" + ["jinja2"]="3.1.6" + ["jionlp"]="1.5.20" + ["jsonschema"]="4.23.0" + ["lancedb"]="0.21.2" + ["minio"]="7.2.15" + ["ollama"]="0.5.1" + ["openai"]="1.91.0" + ["pandas"]="2.2.3" + ["pgvector"]="0.4.1" + ["pillow"]="10.3.0" + ["pydantic"]="2.11.7" + ["pymongo"]="4.12.1" + ["python-jsonpath"]="1.3.0" + ["python-magic"]="0.4.27" + ["python-multipart"]="0.0.20" + ["pytz"]="2025.2" + ["pyyaml"]="6.0.2" + ["rich"]="13.9.4" + ["sqids"]="0.5.1" + ["sqlalchemy"]="2.0.41" + ["tiktoken"]="0.9.0" + ["toml"]="0.10.2" + ["uvicorn"]="0.34.0" + ) + else + echo -e "${COLOR_WARNING}[Warning] 不支持的 Python 版本: $python_version,使用默认列表${COLOR_RESET}" + REQUIRED_PACKAGES=( + ["pymongo"]="" + ["requests"]="" + ["pydantic"]="" + ["aiohttp"]="" + ) + fi local need_install=0 local install_list=() @@ -569,6 +622,7 @@ check_pip() { return 0 } + install_framework() { echo -e "\n${COLOR_INFO}[Info] 开始安装框架服务...${COLOR_RESET}" local pkgs=( @@ -587,8 +641,9 @@ install_framework() { cd "$SCRIPT_DIR" || return 1 cd "$SCRIPT_DIR" || return 1 install_mongodb || return 1 - check_pip || return 1 + check_pip_framework || return 1 } + install_rag() { local pkgs=( "euler-copilot-rag" @@ -615,6 +670,7 @@ install_rag() { cd "$SCRIPT_DIR" || return 1 check_pip_rag || return 1 } + install_web() { local pkgs=( "nginx" @@ -631,6 +687,7 @@ install_web() { return 1 fi } + # 读取安装模式的方法 read_install_mode() { if [ ! -f "$INSTALL_MODE_FILE" ]; then @@ -660,6 +717,7 @@ read_install_mode() { RAG_INSTALL=$rag_install return 0 } + # 示例:根据安装模式执行对应操作(可根据实际需求扩展) install_components() { # 读取安装模式 -- Gitee From c2914abbb88ce8820f4a8a455a189c779133e88b Mon Sep 17 00:00:00 2001 From: Hongyu Shi Date: Thu, 4 Sep 2025 20:04:54 +0800 Subject: [PATCH 7/7] =?UTF-8?q?feat(deploy):=20=E4=B8=BA=20Python=203.9=20?= =?UTF-8?q?=E7=8E=AF=E5=A2=83=E6=B7=BB=E5=8A=A0=20MCP=20wheel=20=E5=8C=85?= =?UTF-8?q?=E5=AE=89=E8=A3=85=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Hongyu Shi --- .../install_openEulerIntelligence.sh | 11 ++++++++++- .../5-resource/pip/mcp-1.6.0-py3-none-any.whl | Bin 0 -> 77608 bytes 2 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 scripts/deploy/5-resource/pip/mcp-1.6.0-py3-none-any.whl diff --git a/scripts/deploy/2-install-dependency/install_openEulerIntelligence.sh b/scripts/deploy/2-install-dependency/install_openEulerIntelligence.sh index b9ab6be..761f4e0 100644 --- a/scripts/deploy/2-install-dependency/install_openEulerIntelligence.sh +++ b/scripts/deploy/2-install-dependency/install_openEulerIntelligence.sh @@ -569,6 +569,15 @@ check_pip_framework() { ["toml"]="0.10.2" ["uvicorn"]="0.34.0" ) + # 对于 Python 3.9,单独安装 MCP 的 wheel 包 + local wheel_path="../5-resource/pip/mcp-1.6.0-py3-none-any.whl" + if [ -f "$wheel_path" ]; then + echo -e "${COLOR_INFO}[Info] 为 Python 3.9 安装 wheel 包: $wheel_path${COLOR_RESET}" + install_list+=("$wheel_path") + need_install=1 + else + echo -e "${COLOR_WARNING}[Warning] Wheel 文件不存在: $wheel_path${COLOR_RESET}" + fi else echo -e "${COLOR_WARNING}[Warning] 不支持的 Python 版本: $python_version,使用默认列表${COLOR_RESET}" REQUIRED_PACKAGES=( @@ -639,8 +648,8 @@ install_framework() { return 1 fi cd "$SCRIPT_DIR" || return 1 - cd "$SCRIPT_DIR" || return 1 install_mongodb || return 1 + cd "$SCRIPT_DIR" || return 1 check_pip_framework || return 1 } diff --git a/scripts/deploy/5-resource/pip/mcp-1.6.0-py3-none-any.whl b/scripts/deploy/5-resource/pip/mcp-1.6.0-py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..c095abdac4795d3284c163da05c2aac7d838d20f GIT binary patch literal 77608 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 literal 0 HcmV?d00001 -- Gitee