# 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 - 企业级开发环境初始化平台



**交互式多选安装器,支持前端、后端、全栈和 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 爱宇阳