SuperAPI AI 工具集

one-line-installer-patterns

部署与运维

查看项目

更新于 10-16 00:30

技能介绍

用途:当项目是多语言(Python + Node + Docker)、需要检测并引导安装系统前置依赖(Docker、fnm/volta 安装的 Node、jq 等)、面向非技术用户、或真实安装动作是 docker compose up 时,可考虑 curl | bash 一行安装脚本。若项目是纯 Python CLI、纯 Node CLI、单一静态二进制或纯容器化应用,应改用 uv tool install、npm/npx、GitHub Releases 或 docker-compose.yml,不要写安装脚本。

主要能力与约定:社区通用形式为 curl -fsSL https://example.com/install.sh | bash,其中 -f 遇 HTTP 错误失败、-s 静默、-S 显示错误、-L 跟随重定向;用 bash 而非 sh,传参用 bash -s -- --version 1.2.3。同时应提供先审查后执行的变体:curl -fsSL .../install.sh -o install.sh、less install.sh、bash install.sh。

安装脚本建议顺序:set -euo pipefail 与 trap cleanup EXIT;检测 OS、架构、libc、shell 与已有安装;解析参数;打印安装计划并要求确认;检测前置依赖并给出修复指引;拉取带版本标签的产物;校验 sha256 或签名;解压到 ~/.local/share/<tool>/<version>;软链到 ~/.local/bin;征得同意后修改 shell rc;打印下一步命令;退出 0。

限制与安全:管道执行无法让用户预先审查内容,存在服务端识别 curl | bash 并返回不同内容的攻击方式。必须仅用 HTTPS、脚本与代码同仓库、固定版本、敏感场景使用签名校验。脚本不应引导安装他人的包管理器、不应静默使用 sudo、不应运行配置向导、不应未校验就解压远程 tar。已知失败模式包括:脚本被下载而非管道执行、跨版本重装、fish/nushell 的 rc 检测、企业代理与自定义 CA、CDN 缓存、子命令在 stdin 上提示、缺少 pipefail、BSD 与 GNU tar 差异、uname -m 返回值不一致。多服务项目通常只是 Docker Compose 的薄封装,更诚实的做法是直接提供 docker-compose.yml 并说明 docker compose up -d。