# install **Repository Path**: aiyvyang/install ## Basic Information - **Project Name**: install - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-04-03 - **Last Updated**: 2026-04-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Dev Init - 企业级开发环境初始化平台
![Version](https://img.shields.io/badge/version-3.0.3-blue.svg) ![License](https://img.shields.io/badge/license-MIT-green.svg) ![Platform](https://img.shields.io/badge/platform-Linux-orange.svg) **交互式多选安装器,支持前端、后端、全栈和 AI CLI 多种环境** [快速开始](#快速开始) · [配置说明](#配置说明) · [Profile介绍](#profile介绍) · [常见问题](#常见问题)
--- ## ✨ 特性 - 🚀 **交互式安装**:默认进入 checklist,支持空格选择、回车执行 - 🎯 **Profile组合**:支持 `minimal`、`frontend`、`backend`、`fullstack`、`ai-cli` - ⚡ **幂等设计**:重复执行不报错,已安装组件自动跳过 - 🔒 **分层安装**:系统依赖通过 `apt`,运行时和 CLI 优先走用户级安装 - 🇨🇳 **国内加速**:清华、阿里云、npmmirror 镜像源加速 - 🔄 **多镜像Fallback**:自动切换镜像源,提升下载成功率 - 🐳 **CI/CD友好**:支持 GitLab CI、容器镜像构建集成 - 🤖 **AI工具集成**:支持 Claude Code、Codex、Gemini CLI 等AI工具 - 🧱 **模块化脚本**:组件脚本仅定义函数,不在 `source` 时自动执行 - 📋 **执行计划预览**:支持 `--dry-run`,展示依赖补齐、sudo、网络和 shell 配置写入影响 - 🧾 **结构化报告**:每次执行都会落盘 `state/` 和 `reports/` JSON 报告 - 🔁 **Legacy兼容**:位置参数 profile 和 `install-ai-cli.sh` 已接入统一执行器 --- ## 📦 目录结构 ``` dev-init/ ├── bootstrap.sh # ⭐ 入口脚本 ├── lib/ │ ├── core/ # 执行器、状态与报告 │ ├── plan/ # 工具注册表、profile、依赖解析 │ └── ui/ # 纯 Bash checklist 交互 ├── config/ │ ├── default.env # 默认配置 │ └── custom.env.example # 自定义配置模板 ├── scripts/ │ ├── utils.sh # 纯工具函数库 │ ├── init.sh # 初始化/回滚/清理 │ ├── primitives.sh # 统一安装原语 │ ├── base.sh # 基础环境 │ ├── node.sh # Node.js环境 │ ├── java.sh # Java环境 │ ├── python.sh # Python环境 │ ├── maven.sh # Maven构建工具 │ ├── devops.sh # DevOps工具 │ ├── docker.sh # Docker CE 安装 │ └── ai.sh # AI CLI工具 ├── profiles/ │ ├── minimal.sh # 最小环境 │ ├── frontend.sh # 前端环境 │ ├── backend.sh # 后端环境 │ ├── fullstack.sh # 全栈环境 │ └── ai-cli.sh # AI CLI环境 ├── install-ai-cli.sh # AI CLI 兼容入口 └── README.md # 使用文档 ``` --- ## 🚀 快速开始 ### 方式一:本地安装 ```bash # 1. 克隆仓库 git clone https://gitee.com/aiyvyang/install.git dev-init cd dev-init # 2. 执行安装(默认进入交互多选) bash bootstrap.sh # 或直接使用兼容 Profile bash bootstrap.sh frontend # 前端环境 bash bootstrap.sh backend # 后端环境 bash bootstrap.sh minimal # 最小环境 bash bootstrap.sh ai-cli # AI CLI 环境 # 非交互 dry-run 预览计划 bash bootstrap.sh --non-interactive --profile ai-cli --dry-run # 指定工具集合 bash bootstrap.sh --non-interactive --profile minimal --tools node,pnpm,codex # 3. 重新加载Shell配置 source ~/.bashrc # 或 source ~/.zshrc # 4. 验证安装 # 基础工具 node --version java -version python3 --version # DevOps工具 docker --version glab auth status kubectl version --client # AI CLI工具 claude --version codex --version ``` ### 方式二:远程一键安装 ```bash # 通过curl远程执行 curl -fsSL https://gitee.com/aiyvyang/install/raw/main/bootstrap.sh | bash -s fullstack # 或使用wget wget -qO- https://gitee.com/aiyvyang/install/raw/main/bootstrap.sh | bash -s fullstack ``` ### 方式三:兼容入口安装 AI CLI ```bash # 默认安装 Node.js + 常用 AI CLI bash install-ai-cli.sh # 只装依赖环境,不装 AI CLI bash install-ai-cli.sh --only-deps # 跳过 pnpm,使用 npm 全局安装 AI CLI bash install-ai-cli.sh --no-pnpm # 只排除部分工具 bash install-ai-cli.sh --no-gemini --no-openclaw # 显式追加 OpenClaw bash install-ai-cli.sh --with-openclaw ``` --- ## 🎯 Profile介绍 ### minimal - 最小环境 **包含工具**: - curl、wget:网络工具 - git(>=2.40):版本控制 - zsh:Shell环境 - build-essential:编译工具链 **适用场景**:CI/CD流水线、Docker基础镜像 --- ### frontend - 前端环境 **包含工具**: - minimal 所有工具 - fnm:Node.js版本管理器 - Node.js 24 LTS - pnpm:包管理器 - ESLint、Prettier、TypeScript、Vite:前端工具 **适用场景**:前端开发、Vue/React项目 --- ### backend - 后端环境 **包含工具**: - minimal 所有工具 - Temurin JDK 17 - Maven 3.9.x(阿里云镜像) - pyenv:Python版本管理器 - Python 3.12 - Poetry:Python依赖管理 **适用场景**:Java/Spring Boot开发、Python开发 --- ### fullstack - 全栈环境 **包含工具**: - frontend 所有工具 - backend 所有工具 - kubectl、Helm:Kubernetes工具 - Docker CE:容器运行时、Buildx、Compose 插件 - GitLab CLI:GitLab命令行工具 - AI CLI工具:Claude Code、Codex、Gemini CLI、OpenCode - OpenClaw 可按需通过 `--tools openclaw` 单独追加 **适用场景**:需要 Node.js、Java、Python、Kubernetes CLI、Docker 和 AI CLI 的全栈开发环境 --- ### ai-cli - AI CLI 环境 **包含工具**: - minimal 所有工具 - Node.js 24 - 可选 pnpm - Claude Code、Codex、Gemini CLI、OpenCode - OpenClaw 可按需通过 `--tools openclaw` 或 `AI_TOOLS=...` 单独追加 **适用场景**:仅需 AI 编码工具链,不需要 Java / Python / DevOps 组件 --- ## ⚙️ 配置说明 ## 🖥️ 交互模式 直接执行: ```bash bash bootstrap.sh ``` 会进入交互式多选界面: - `Space`:选择/取消工具 - `Enter`:执行安装 - `j/k` 或方向键:移动光标 - `a`:全选 - `n`:清空 - `p`:预览执行计划 - `q`:退出 标记说明: - `[sudo]`:该工具涉及 sudo - `[net]`:该工具依赖网络访问 - `[rc]`:该工具会写入 shell 配置 ## 🧪 非交互模式 ```bash # 列出工具 bash bootstrap.sh --list-tools # 列出 profile bash bootstrap.sh --list-profiles # 仅生成执行计划 bash bootstrap.sh --non-interactive --profile fullstack --dry-run # 从最小环境追加工具 bash bootstrap.sh --non-interactive --profile minimal --tools fnm,node,pnpm,codex # 仅安装 Docker CE bash bootstrap.sh --non-interactive --profile minimal --tools docker # 从 profile 中排除部分工具 bash bootstrap.sh --non-interactive --profile fullstack --exclude helm,openclaw ``` ### 1. 默认配置(config/default.env) ```bash # 版本配置 NODE_VERSION=24 JAVA_VERSION=17 PYTHON_VERSION=3.12 # 镜像源配置 NPM_REGISTRY=https://registry.npmmirror.com MAVEN_MIRROR=https://maven.aliyun.com/repository/public DOCKER_APT_MIRROR_BASE=https://mirrors.tuna.tsinghua.edu.cn/docker-ce # Git配置 GIT_DEFAULT_BRANCH=main # 安装选项 INSTALL_AI_TOOLS=true INSTALL_BASE_TOOLS=true INSTALL_NODE=true INSTALL_PNPM=true INSTALL_FRONTEND_TOOLS=true ``` ### 2. 自定义配置 ```bash # 复制配置模板 cp config/custom.env.example config/custom.env # 编辑配置 vim config/custom.env # 配置Git用户信息(必须) GIT_USER_NAME=你的名字 GIT_USER_EMAIL=你的邮箱@example.com # 自定义版本(可选) NODE_VERSION=20 JAVA_VERSION=21 ``` ### 3. 可选工具严格度配置 安装器支持为可选远程 CLI 工具配置严格度,避免单点失败拖垮整次安装: ```bash # 环境变量控制 DEV_INIT_STRICT_OPTIONAL_TOOLS=true # 默认值,可选工具失败会导致整体失败 DEV_INIT_STRICT_OPTIONAL_TOOLS=false # 可选工具失败仅告警,不影响整体状态 ``` **已标记为 best_effort 的工具:** - `kubectl`: Kubernetes CLI,网络依赖强,可能因版本或网络问题失败 - `glab`: GitLab CLI,认证配置可能缺失 **行为说明:** - `strictness=required`: 失败时整体安装失败 - `strictness=best_effort` + `DEV_INIT_STRICT_OPTIONAL_TOOLS=false`: 失败时仅告警,继续执行 - 报告中会区分 `failed` 和 `best_effort_failed` 状态 ### 4. AI CLI 兼容入口相关环境变量 `install-ai-cli.sh` 最终会透传到 `bootstrap.sh ai-cli`,核心变量包括: ```bash INSTALL_BASE_TOOLS=true INSTALL_NODE=true INSTALL_PNPM=true INSTALL_AI_TOOLS=true INSTALL_FRONTEND_TOOLS=false AI_TOOLS=claude-code,codex,gemini-cli,opencode # 如需额外安装 OpenClaw,可显式追加 AI_TOOLS=claude-code,codex,gemini-cli,opencode,openclaw ``` ### 4. `install-ai-cli.sh` 参数矩阵 | 参数 | 对应变量/行为 | 说明 | |------|---------------|------| | `--no-deps` | `INSTALL_BASE_TOOLS=false` | 跳过基础系统依赖安装 | | `--no-node` | `INSTALL_NODE=false` | 跳过 Node.js 安装,要求系统已有 `node`/`npm` | | `--no-pnpm` | `INSTALL_PNPM=false` | 跳过 pnpm,AI CLI 回退到 npm 全局安装 | | `--no-claude` | 从 `AI_TOOLS` 中移除 `claude-code` | 不安装 Claude Code | | `--no-codex` | 从 `AI_TOOLS` 中移除 `codex` | 不安装 Codex CLI | | `--no-gemini` | 从 `AI_TOOLS` 中移除 `gemini-cli` | 不安装 Gemini CLI | | `--no-opencode` | 从 `AI_TOOLS` 中移除 `opencode` | 不安装 OpenCode | | `--with-openclaw` | 向 `AI_TOOLS` 追加 `openclaw` | 显式安装 OpenClaw | | `--no-openclaw` | 从 `AI_TOOLS` 中移除 `openclaw` | 不安装 OpenClaw | | `--only-deps` | `INSTALL_AI_TOOLS=false` | 仅准备 AI CLI 依赖环境,不安装任何 AI CLI | | `--node-version=` | 导出 `NODE_VERSION=` | 覆盖配置文件中的 Node.js 版本 | | `--help` / `-h` | 直接输出帮助并退出 | 不执行安装 | --- ## 🧩 执行模型 当前安装系统采用显式编排模型: 1. `bootstrap.sh` 加载 `utils.sh`、`primitives.sh`、`init.sh` 2. `bootstrap.sh` 执行 `init` 3. `bootstrap.sh` 加载组件脚本和目标 profile 4. profile 通过 `run_profile_*` 显式调用 `install_*` 函数 说明: - `scripts/*.sh` 只定义函数,不会在 `source` 时自动执行 - 直接执行 `scripts/*.sh` 或 `profiles/*.sh` 会报错并退出 - `install-ai-cli.sh` 仅作为兼容入口,实际逻辑已收敛到 `bootstrap.sh` 和 `scripts/ai.sh` --- ## 📋 安装工具清单 ### 基础工具 | 工具 | 版本 | 说明 | |------|------|------| | curl | latest | 网络工具 | | wget | latest | 下载工具 | | git | >=2.40 | 版本控制 | | zsh | latest | Shell环境 | | build-essential | latest | 编译工具链 | ### 前端工具 | 工具 | 版本 | 说明 | |------|------|------| | fnm | latest | Node.js版本管理器 | | Node.js | 24 LTS | JavaScript运行时 | | pnpm | latest | 包管理器 | | ESLint | latest | 代码检查 | | Prettier | latest | 代码格式化 | | TypeScript | latest | 类型系统 | | Vite | latest | 构建工具 | ### 后端工具 | 工具 | 版本 | 说明 | |------|------|------| | Temurin JDK | 17 | Java开发环境 | | Maven | 3.9.x | Java构建工具 | | pyenv | latest | Python版本管理器 | | Python | 3.12 | Python运行时 | | Poetry | latest | Python依赖管理 | ### DevOps工具 | 工具 | 版本 | 说明 | |------|------|------| | kubectl | latest | Kubernetes CLI | | Helm | 3.x | Kubernetes包管理器 | | Docker CE | latest | Docker Engine、Buildx、Compose 插件 | | GitLab CLI | latest | GitLab命令行工具 | ### AI工具 | 工具 | 说明 | |------|------| | Claude Code | Anthropic AI编程助手 | | Codex | OpenAI编程工具 | | Gemini CLI | Google AI工具 | | OpenCode | 开源AI编程助手 | | OpenClaw | 开源AI工具 | --- ## 🔧 CI/CD集成 ### GitLab CI示例 ```yaml # .gitlab-ci.yml stages: - build - test before_script: - bash bootstrap.sh frontend build_job: stage: build script: - pnpm install - pnpm build tags: - docker test_job: stage: test script: - pnpm test tags: - docker ``` ### Dockerfile示例 ```dockerfile FROM ubuntu:22.04 # 复制 dev-init 脚本 COPY . /dev-init # 初始化后端构建环境 RUN bash /dev-init/bootstrap.sh backend WORKDIR /app COPY . . RUN mvn clean package CMD ["java", "-jar", "target/app.jar"] ``` --- ## 🧪 验证 当前建议通过安装后手工验证确认环境状态: ```bash # 重新加载 shell 配置 source ~/.bashrc # 基础工具 node --version java -version python3 --version # DevOps 工具 docker --version glab auth status kubectl version --client # AI CLI 工具 claude --version codex --version ``` --- ## ❓ 常见问题 ### 1. 安装失败怎么办? **检查网络连接**: ```bash # 测试镜像源连接 curl -I https://mirrors.tuna.tsinghua.edu.cn curl -I https://registry.npmmirror.com ``` **查看详细日志**: ```bash # 启用详细日志 VERBOSE=true bash bootstrap.sh fullstack ``` ### 2. 如何更新已安装的工具? ```bash # 重新执行安装脚本(幂等设计) bash bootstrap.sh fullstack ``` ### 3. 如何切换Node.js版本? ```bash # 使用fnm切换版本 fnm install 20 fnm use 20 fnm default 20 ``` ### 4. 如何配置Git用户信息? ```bash # 方式一:在custom.env中配置 GIT_USER_NAME=你的名字 GIT_USER_EMAIL=你的邮箱@example.com # 方式二:手动配置 git config --global user.name "你的名字" git config --global user.email "你的邮箱@example.com" ``` ### 5. 如何配置Kubernetes连接? ```bash # 阿里云 aliyun cs GetClusterConfig --ClusterId= > ~/.kube/config # 腾讯云 tcloud kubernetes get-kubeconfig --clusterId= > ~/.kube/config # AWS aws eks update-kubeconfig --name= ``` ### 6. 如何卸载? ```bash # 删除用户级安装产物 rm -rf ~/.local/share/fnm rm -rf ~/.pyenv rm -rf ~/.m2 rm -rf ~/.dev-init # 手动清理 shell 配置中由 Dev Init 追加的条目 # 例如: fnm / pyenv / Poetry / JAVA_HOME ``` --- ## 🤝 贡献指南 欢迎提交 Issue 和 Pull Request! 1. Fork 本仓库 2. 创建特性分支:`git checkout -b feature/your-feature` 3. 提交更改:`git commit -m 'Add some feature'` 4. 推送分支:`git push origin feature/your-feature` 5. 提交 Pull Request --- ## 📄 许可证 本项目基于 [MIT](LICENSE) 许可证开源。 --- ## 🙏 致谢 - [fnm](https://github.com/Schniz/fnm) - Fast Node Manager - [pyenv](https://github.com/pyenv/pyenv) - Python版本管理器 - [Eclipse Temurin](https://adoptium.net/) - JDK发行版 - [oh-my-zsh](https://ohmyz.sh/) - Zsh配置框架 ---
**如果这个项目对你有帮助,请给一个 ⭐ Star 支持一下!** Made with ❤️ by 爱宇阳