# easy-init **Repository Path**: jun33/easy-init ## Basic Information - **Project Name**: easy-init - **Description**: easy-init - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-24 - **Last Updated**: 2026-08-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # easy-init `easy-init` 是面向个人开发机的跨平台初始化工具。它支持 macOS、Debian 13 GNOME 和 Windows 11,默认方案体现维护者偏好,用户可通过 TOML 覆盖选择和版本。 ## 最简单的使用方式 仓库:`https://gitee.com/jun33/easy-init` macOS: ```bash curl -fsSL https://gitee.com/jun33/easy-init/raw/master/bootstrap.sh | bash ``` Debian 13: ```bash wget -qO- https://gitee.com/jun33/easy-init/raw/master/bootstrap.sh | bash ``` Windows 11 PowerShell: ```powershell irm https://gitee.com/jun33/easy-init/raw/master/bootstrap.ps1 | iex ``` Bootstrap 会拉取分支最新代码到 `~/.easy-init`,先安装 Miniforge 作为 easy-init 的 Python 运行时,再启动本地入口。已有仓库会尝试 `git pull --ff-only`,失败时回退到 raw 文件同步。 ## 安装模式 直接运行 `easy-init` 会进入交互菜单: ```text 1 快速安装 2 自定义安装 3 恢复/撤销 0 退出 ``` 快速安装使用当前 profile 的 `quick.items`;自定义安装按类别临时选择,依赖会自动加入;恢复只显示当前平台已经产生的 easy-init 托管状态。 明确模式可用于脚本化执行: ```bash easy-init --quick easy-init --quick --yes easy-init --select tools.base,toolchain.java-maven easy-init --dry-run --quick easy-init --restore easy-init --restore restore.macos.gatekeeper --yes easy-init --resume ``` `--yes` 只能和 `--quick`、`--select` 或 `--restore ITEM_ID` 一起使用。无 TTY 环境必须显式指定模式;`--dry-run` 只展示计划,不修改系统。 退出码:`0` 全部成功或已满足,`1` 至少一项失败,`2` 参数/平台/项目错误,`130` 用户取消。 ## 能力目录 | 类别 | 项目 | | --- | --- | | 系统优化 | 当前平台系统优化(macOS Finder/Dock、Debian GNOME 与键盘、Windows Explorer/开发设置) | | 基础工具 | Git、curl、wget、OpenSSH | | 开发工具链 | Java 21 + Maven 3.9.9;Node + pnpm | | 桌面应用 | Chrome 稳定版 | | 镜像与环境变量 | Miniforge Python、pip/Conda、Maven、npm/pnpm 镜像和开发环境变量 | | 权限变更 | 仅 Debian:指定用户 `NOPASSWD: ALL`,高风险且需显式确认 | Java/Maven 与 Node/pnpm 是不可拆分的能力包。Miniforge 是内部依赖,不出现在选择菜单中。Docker、Docker Desktop、WSL2 和 WSL Debian 不属于当前版本。 ## 软件来源和版本 - macOS 使用 HomebrewCN 安装 Homebrew;Debian 使用 APT;Windows 使用用户级 Scoop。 - Git、curl、wget、OpenSSH 使用平台包管理器最新版。 - Java 固定 OpenJDK 21,Maven 固定 3.9.9。 - Node、pnpm、Miniforge 使用官方上游稳定最新版;Chrome 使用稳定版最新版。 - 下载的上游归档会在发布方提供校验值时验证它,并在 JSON 报告中记录来源、版本、架构和校验值。 - Debian 的 JDK/Maven/Node 默认安装到 `/opt`;Windows 软件默认安装到用户目录,避免系统级权限和污染。 ## 配置覆盖 合并顺序:默认配置 -> 个人 profile -> 用户配置。执行范围只由快速方案或本次选择决定,软件 `enabled` 开关不会隐式改变计划。 文件: - 默认:`config/defaults.toml` - 个人:`profiles/personal.toml` - macOS/Debian:`~/.config/easy-init/config.toml` - Windows:`%APPDATA%\\easy-init\\config.toml` 示例: ```toml [quick] items = ["tools.base", "toolchain.java-maven"] debian_items = ["security.debian.passwordless-sudo"] [software.java] version = "21" [software.maven] version = "3.9.9" [software.node] version = "latest" latest_scope = "upstream" [security] sudo_user = "your-user" ``` 镜像会按配置候选逐个探测;中国地区源不可用时继续尝试其他候选,全部失败则保留现有配置或使用官方源。 ## 日志、报告和恢复 - 日志:`state/logs/.log` - 最近报告:`state/last-run-report.json` - 报告包含每个动作的 `catalog_id`、状态、依赖关系摘要和已解析的软件来源。 - 修改用户配置前生成单份同目录 `.bak.easy-init` 备份。 - `--restore` 只撤销 easy-init 自己托管的 Gatekeeper、Debian sudoers/键盘、Shell 环境和镜像配置;不会恢复软件包,也不会覆盖用户后续的手工改动。 ## 开发与测试 ```bash PYTHONPATH=src python3 -m unittest discover -s tests -v python3 -m compileall -q src bash -n bootstrap.sh bin/easy-init git diff --check ``` 架构背景见 [CONTEXT.md](CONTEXT.md) 和 `docs/adr/`。当前实现未在 Debian 13 或 Windows 11 实机执行真实安装验证。