Files
agent-aide/aide-marketplace/aide-plugin/commands/install-linux.md
sayurinana(vm) ba70fafa15 [aide] finish: 任务完成
新增环境安装 Commands:
- /aide:install-win - Windows 环境安装命令
- /aide:install-linux - Linux 环境安装命令

新增离线安装程序:
- aide-program/offline-installer/windows/
- aide-program/offline-installer/linux/

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-17 05:22:38 +08:00

14 KiB
Raw Blame History

Aide Linux 环境安装

你正在执行 Aide Linux 环境安装流程。这是一个独立运行的命令,用于在 Linux 系统上安装 aide 所需的全部环境依赖。

概述

本命令将检测并安装以下工具:

  • uv - Python 包管理器(用于管理 Python 和依赖)
  • Python - aide 运行时环境(通过 uv 安装)
  • Java JRE - PlantUML 运行依赖(用于生成流程图)

开始

1. 系统检测

首先确认当前系统是 Linux

uname -s

如果不是 Linux 系统,请提示用户使用 /aide:install-win 命令。

2. 发行版识别

检测 Linux 发行版类型:

# 读取发行版信息
cat /etc/os-release 2>/dev/null || lsb_release -a 2>/dev/null

根据发行版确定包管理器:

  • Debian/Ubuntu: apt
  • RHEL/Fedora/CentOS: dnf (或 yum)
  • Arch/Manjaro: pacman
  • openSUSE: zypper
  • 其他: 手动安装

3. 环境检测

检测当前环境中各工具的可用性:

3.1 检测 uv

uv --version 2>/dev/null

3.2 检测 Python

# 先尝试 uv 管理的 Python
uv python list 2>/dev/null

# 如果 uv 不可用,检测系统 Python
python3 --version 2>/dev/null
python --version 2>/dev/null

3.3 检测 Java

java -version 2>&1

3.4 汇总检测结果

根据检测结果,列出:

  • 已安装的工具及版本
  • 缺失的工具

如果所有工具都已安装跳转到「aide PATH 配置」章节。


4. 安装模式选择

向用户询问安装模式:

模式 A自动安装

  • 生成安装报告,用户确认后自动执行安装
  • 适合希望快速完成的用户

模式 B手动指南

  • 生成详细的操作指南和自动化脚本
  • 用户可以自行选择执行
  • 适合需要完全控制安装过程的用户

使用 AskUserQuestion 工具询问用户选择。


5. 模式 A自动安装

5.1 生成安装报告

在执行任何安装操作前,必须先生成安装报告,内容包括:

将要执行的操作

  • 列出每个需要安装的工具
  • 说明安装命令

安装位置

  • uv: ~/.local/bin/~/.cargo/bin/
  • Python: 由 uv 管理,位于 ~/.local/share/uv/python/
  • Java: 系统包管理器默认位置或 /opt/java/

可能的副作用

  • 会修改 shell 配置文件 (~/.bashrc, ~/.zshrc)
  • Java 安装可能需要 sudo 权限

潜在风险

  • 如果已有其他 Python 安装,可能产生版本冲突
  • 需要网络连接下载安装包

5.2 请求用户确认

使用 AskUserQuestion 工具,展示报告并请求用户确认。

如果用户不确认,取消安装并退出。

5.3 执行安装

安装 uv如需要
# 使用官方安装脚本
curl -LsSf https://astral.sh/uv/install.sh | sh

安装后重新加载 shell 环境:

# 加载新的 PATH
source ~/.bashrc 2>/dev/null || source ~/.zshrc 2>/dev/null

# 或者直接添加到当前会话
export PATH="$HOME/.local/bin:$PATH"

# 验证安装
uv --version
安装 Python如需要
# 使用 uv 安装 Python 3.11
uv python install 3.11

# 验证安装
uv python list
安装 Java JRE如需要

根据发行版使用对应的包管理器:

Debian/Ubuntu (apt)

sudo apt update
sudo apt install -y openjdk-17-jre-headless

RHEL/Fedora (dnf)

sudo dnf install -y java-17-openjdk-headless

CentOS (yum)

sudo yum install -y java-17-openjdk-headless

Arch (pacman)

sudo pacman -S --noconfirm jre17-openjdk-headless

openSUSE (zypper)

sudo zypper install -y java-17-openjdk-headless

无包管理器或其他发行版 提供 Adoptium Temurin JRE 下载链接:

指导用户下载 tarball 并手动安装:

# 下载后解压
tar -xzf OpenJDK17U-jre_x64_linux_*.tar.gz -C /opt/

# 创建符号链接
sudo ln -sf /opt/jdk-17*/bin/java /usr/local/bin/java

安装后验证:

java -version

5.4 汇报安装结果

列出每个工具的安装状态和版本。


6. 模式 B手动指南

6.1 生成 Markdown 操作指南

创建文件 aide-install-guide.md,内容包括:

# Aide 环境安装指南 (Linux)

## 1. 安装 uv

uv 是 Astral 开发的高性能 Python 包管理器。

### 方法一:官方脚本(推荐)

```bash
curl -LsSf https://astral.sh/uv/install.sh | sh

安装后重新加载 shell

source ~/.bashrc  # 或 source ~/.zshrc

方法二:手动下载

  1. 访问 https://github.com/astral-sh/uv/releases
  2. 下载 uv-x86_64-unknown-linux-gnu.tar.gz
  3. 解压到 ~/.local/bin/
  4. 确保 ~/.local/bin 在 PATH 中

验证安装

uv --version

2. 安装 Python

使用 uv 安装受管理的 Python

uv python install 3.11

验证安装

uv python list

3. 安装 Java JRE

Java 用于运行 PlantUML 生成流程图。

Debian/Ubuntu

sudo apt update
sudo apt install openjdk-17-jre-headless

RHEL/Fedora

sudo dnf install java-17-openjdk-headless

Arch Linux

sudo pacman -S jre17-openjdk-headless

手动安装(通用)

  1. 访问 https://adoptium.net/temurin/releases/?os=linux&arch=x64&package=jre
  2. 下载 tarball
  3. 解压并配置:
tar -xzf OpenJDK17U-jre_x64_linux_*.tar.gz -C /opt/
sudo ln -sf /opt/jdk-17*/bin/java /usr/local/bin/java

验证安装

java -version

4. 配置 aide PATH

将 aide-program 添加到 PATH

Bash 用户

echo 'export PATH="$PATH:/path/to/aide-program/bin"' >> ~/.bashrc
source ~/.bashrc

Zsh 用户

echo 'export PATH="$PATH:/path/to/aide-program/bin"' >> ~/.zshrc
source ~/.zshrc

Fish 用户

set -Ua fish_user_paths /path/to/aide-program/bin

5. 验证安装

aide env ensure --runtime

常见问题

Q: uv 安装后命令找不到?

A: 运行 source ~/.bashrc 或重新打开终端。

Q: Python 版本冲突?

A: uv 管理的 Python 独立于系统 Python不会冲突。

Q: sudo 权限问题?

A: Java 安装需要 root 权限,或使用 Adoptium tarball 安装到用户目录。


#### 6.2 生成 Shell 安装脚本

创建文件 `aide-install.sh`

```bash
#!/bin/bash
#
# Aide 环境自动安装脚本 (Linux)
#
# 此脚本用于安装 aide 工具所需的环境依赖:
# - uv (Python 包管理器)
# - Python (通过 uv 安装)
# - Java JRE (用于 PlantUML)
#
# 用法:
#   chmod +x aide-install.sh
#   ./aide-install.sh [--aide-path /path/to/aide-program]
#
# 选项:
#   --aide-path PATH    指定 aide-program 目录路径
#   --skip-uv           跳过 uv 安装
#   --skip-python       跳过 Python 安装
#   --skip-java         跳过 Java 安装
#   -h, --help          显示帮助信息
#

set -e

# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
CYAN='\033[0;36m'
NC='\033[0m' # No Color

# 输出函数
success() { echo -e "${GREEN}✓${NC} $1"; }
warning() { echo -e "${YELLOW}⚠${NC} $1"; }
error() { echo -e "${RED}✗${NC} $1"; }
info() { echo -e "${CYAN}→${NC} $1"; }

# 默认值
AIDE_PATH=""
SKIP_UV=false
SKIP_PYTHON=false
SKIP_JAVA=false

# 解析参数
while [[ $# -gt 0 ]]; do
    case $1 in
        --aide-path)
            AIDE_PATH="$2"
            shift 2
            ;;
        --skip-uv)
            SKIP_UV=true
            shift
            ;;
        --skip-python)
            SKIP_PYTHON=true
            shift
            ;;
        --skip-java)
            SKIP_JAVA=true
            shift
            ;;
        -h|--help)
            echo "用法: $0 [选项]"
            echo ""
            echo "选项:"
            echo "  --aide-path PATH    指定 aide-program 目录路径"
            echo "  --skip-uv           跳过 uv 安装"
            echo "  --skip-python       跳过 Python 安装"
            echo "  --skip-java         跳过 Java 安装"
            echo "  -h, --help          显示帮助信息"
            exit 0
            ;;
        *)
            error "未知选项: $1"
            exit 1
            ;;
    esac
done

# 检测命令是否可用
command_exists() {
    command -v "$1" >/dev/null 2>&1
}

# 检测发行版
detect_distro() {
    if [ -f /etc/os-release ]; then
        . /etc/os-release
        echo "$ID"
    elif command_exists lsb_release; then
        lsb_release -is | tr '[:upper:]' '[:lower:]'
    else
        echo "unknown"
    fi
}

# 获取包管理器
get_package_manager() {
    local distro=$(detect_distro)
    case $distro in
        ubuntu|debian|linuxmint|pop)
            echo "apt"
            ;;
        fedora|rhel|centos|rocky|almalinux)
            if command_exists dnf; then
                echo "dnf"
            else
                echo "yum"
            fi
            ;;
        arch|manjaro|endeavouros)
            echo "pacman"
            ;;
        opensuse*)
            echo "zypper"
            ;;
        *)
            echo "unknown"
            ;;
    esac
}

echo "========================================"
echo "    Aide 环境安装脚本 (Linux)          "
echo "========================================"
echo ""

DISTRO=$(detect_distro)
PKG_MANAGER=$(get_package_manager)
info "检测到发行版: $DISTRO"
info "包管理器: $PKG_MANAGER"
echo ""

# 1. 安装 uv
if [ "$SKIP_UV" = false ]; then
    info "检测 uv..."
    if command_exists uv; then
        UV_VERSION=$(uv --version 2>&1)
        success "uv 已安装: $UV_VERSION"
    else
        info "安装 uv..."
        curl -LsSf https://astral.sh/uv/install.sh | sh

        # 加载新的 PATH
        export PATH="$HOME/.local/bin:$PATH"

        if command_exists uv; then
            success "uv 安装成功"
        else
            warning "uv 安装后需要重启终端"
        fi
    fi
fi

# 2. 安装 Python
if [ "$SKIP_PYTHON" = false ]; then
    info "检测 Python..."
    if command_exists uv; then
        PYTHON_LIST=$(uv python list 2>&1 || true)
        if echo "$PYTHON_LIST" | grep -q "3\."; then
            success "Python 已通过 uv 安装"
        else
            info "通过 uv 安装 Python 3.11..."
            uv python install 3.11
            success "Python 3.11 安装成功"
        fi
    else
        warning "uv 不可用,无法安装 Python"
    fi
fi

# 3. 安装 Java
if [ "$SKIP_JAVA" = false ]; then
    info "检测 Java..."
    if command_exists java; then
        JAVA_VERSION=$(java -version 2>&1 | head -n 1)
        success "Java 已安装: $JAVA_VERSION"
    else
        info "安装 Java JRE..."

        case $PKG_MANAGER in
            apt)
                sudo apt update
                sudo apt install -y openjdk-17-jre-headless
                ;;
            dnf)
                sudo dnf install -y java-17-openjdk-headless
                ;;
            yum)
                sudo yum install -y java-17-openjdk-headless
                ;;
            pacman)
                sudo pacman -S --noconfirm jre17-openjdk-headless
                ;;
            zypper)
                sudo zypper install -y java-17-openjdk-headless
                ;;
            *)
                warning "未检测到支持的包管理器,请手动安装 Java JRE"
                info "下载地址: https://adoptium.net/temurin/releases/?os=linux&arch=x64&package=jre"
                ;;
        esac

        if command_exists java; then
            success "Java 安装成功"
        fi
    fi
fi

# 4. 配置 aide PATH
if [ -n "$AIDE_PATH" ]; then
    BIN_PATH="$AIDE_PATH/bin"
    if [ -d "$BIN_PATH" ]; then
        # 检测当前 shell
        SHELL_NAME=$(basename "$SHELL")
        case $SHELL_NAME in
            bash)
                RC_FILE="$HOME/.bashrc"
                ;;
            zsh)
                RC_FILE="$HOME/.zshrc"
                ;;
            *)
                RC_FILE="$HOME/.profile"
                ;;
        esac

        if ! grep -q "$BIN_PATH" "$RC_FILE" 2>/dev/null; then
            info "添加 aide 到 PATH ($RC_FILE)..."
            echo "" >> "$RC_FILE"
            echo "# Aide" >> "$RC_FILE"
            echo "export PATH=\"\$PATH:$BIN_PATH\"" >> "$RC_FILE"
            export PATH="$PATH:$BIN_PATH"
            success "aide 已添加到 PATH"
        else
            success "aide 已在 PATH 中"
        fi
    else
        warning "aide-program/bin 目录不存在: $BIN_PATH"
    fi
fi

echo ""
echo "========================================"
echo "    安装完成!请重启终端后使用         "
echo "========================================"

6.3 保存文件

将上述两个文件保存到当前工作目录,并告知用户文件位置。

同时设置脚本执行权限:

chmod +x aide-install.sh

7. aide PATH 配置

检测 aide-program 的位置(通常是本仓库的 aide-program/bin 目录)。

7.1 检测当前 PATH

echo $PATH | tr ':' '\n' | grep -i aide

7.2 如果 aide 不在 PATH 中

检测用户的 shell 类型:

echo $SHELL

根据 shell 类型生成配置命令:

Bash

echo 'export PATH="$PATH:/完整路径/aide-program/bin"' >> ~/.bashrc
source ~/.bashrc

Zsh

echo 'export PATH="$PATH:/完整路径/aide-program/bin"' >> ~/.zshrc
source ~/.zshrc

Fish

set -Ua fish_user_paths /完整路径/aide-program/bin

7.3 验证配置

which aide
aide --help

8. 最终验证

运行 aide 环境检测:

aide env ensure --runtime

如果验证通过,显示成功信息。

如果验证失败,显示问题诊断和解决建议。


完成

安装完成后,向用户汇报:

环境安装完成:
- uv: [版本]
- Python: [版本]
- Java: [版本]
- aide: [PATH 状态]
- 发行版: [检测到的发行版]

下一步:
- 运行 /aide:setup 配置项目环境
- 或直接使用 /aide:run 执行任务

注意事项

  • 此命令是独立运行的,通常在首次使用 aide 前执行一次
  • 所有安装操作都需要用户确认,不会静默修改系统
  • Java 安装可能需要 sudo 权限
  • 如果安装过程中断,可以重新运行此命令继续
  • 建议在安装完成后重启终端以确保环境变量生效