ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

小龙虾脚本:跨平台开发环境一键自动化安装指南

小龙虾脚本:跨平台开发环境一键自动化安装指南 最近好几个同事和读者都在问我同一个问题刚拿到一台新电脑mac也好、windows也好怎么才能快速把开发环境装好。说实话这类问题我见过太多——有人卡在装Homebrew有人搞不定Windows下的Docker还有人配个Maven能折腾一晚上。所以我把积攒的经验整理成了一套自动化安装脚本项目代号“小龙虾”寓意是“看起来小、外壳硬、剥开全是肉”脚本本身很轻量却能跨平台啃下各种安装难题让小白也能快速上手把环境配齐。无论是mac还是windows只要跑一条命令常用的开发工具就能一次性装好我把它公开出来的目的就是希望这套方案能帮你把“装环境”这件烦心事变成一件不用动脑的小事。1. 为什么我会写这样一套脚本1.1 装开发环境的三个老大难先说第一个痛点跨平台。很多开发工具在mac和windows上的安装方式完全是两套逻辑。mac上大家习惯用Homebrew一个brew install搞定大半windows上则可能是安装包、解压版、包管理器混着来。如果你平时要在两台电脑之间切换或者帮同事处理环境问题这种割裂感会非常明显。我见过不少人为了在windows上装一个Linux风格的工具硬生生折腾出各种兼容方案最后还把系统路径搞得一团糟。第二个痛点是包管理器碎片化。mac生态里Homebrew近乎一家独大但windows这边有winget、Chocolatey、Scoop好几个选择小白根本分不清该用哪个。就算选对了工具很多软件还需要额外配置环境变量、处理依赖关系比如JDK装完还要配JAVA_HOMEMaven装完还要改settings.xml。这些步骤单看都不难串起来就很容易漏掉某一步然后报错然后百度然后越弄越乱。第三个痛点是报错信息对新手太不友好。安装Homebrew失败可能只是网络源的问题Windows脚本命令闪退可能只是执行策略不允许Docker启动不了可能只是权限不对。问题本身都不算大但定位问题对小白来说是大麻烦——你连错误日志该看哪一行都不知道。这三个痛点叠加起来装机就成了一场劝退体验尤其对刚转行做开发的人第一关就卡住了。1.2 我的目标把“装环境”变成“跑一条命令”所以我给自己定了一个很明确的目标把装环境变成跑一条命令而且这条命令在mac和windows上行为要一致不能一个行一个不行。脚本要能自动检测当前是什么系统自动选择对应的包管理器自动跳过已经装好的组件还能把每一步的日志记录下来方便排查。当时给我触动最深的是两个真实场景。一个是同事新买的MacBook光是装Homebrew就折腾了两天最后发现是默认源访问太慢换了国内镜像几十秒就装完了可这几十秒的经验他花了两天才摸出来。另一个是windows上跑Docker Desktop安装包下好了双击安装也成功了结果启动的时候一直报“Error: start the windows daemon from a non-elevated terminal”他完全不知道问题出在“非管理员终端”这几个词上。这两件事让我意识到真正该被分享的不是某个具体的安装技巧而是一套把这些技巧固化下来的自动化流程让后来的人不用重复踩我踩过的坑。“小龙虾”这个名字是我半夜起的因为它符合这套脚本的三个特质第一个头小整个项目只有几个脚本文件没有复杂框架第二外壳硬跨平台兼容性经过反复打磨mac和windows都能稳定跑第三剥开有肉表面看只是执行安装实际上把检测、容错、日志、镜像加速这些细节都封装好了。后面我写的所有内容都是围绕这三个特质展开的。2. 整体架构与关键选型2.1 统一入口、平台分发的设计思路整套脚本最核心的设计思路是“统一入口平台分发”。也就是说用户不需要关心自己是什么系统只需要执行同一个入口脚本脚本内部会先做平台检测然后进入对应的安装逻辑。这个思路其实借鉴了后端开发里的“适配器模式”对外暴露同一个接口对内根据运行环境选择不同实现。具体到文件结构上我是这样组织的install.shmac/Linux入口脚本bash编写install.ps1windows入口脚本PowerShell编写manifest.yaml软件清单配置文件统一描述要装哪些软件scripts/按平台拆分的辅助脚本目录logs/运行日志和状态文件目录入口脚本放在最外层使用者只需要下载两个入口文件加一个manifest就可以了。manifest的作用是把“装什么”和“怎么装”彻底分开想在清单里加一个软件不需要改安装逻辑只需要在manifest里追加一条记录反之想调整安装策略也不用动清单只改脚本实现。这种解耦让我后续维护起来特别省心。平台检测的逻辑我放在脚本最前面mac上通过uname -s判断是不是Darwinwindows上则借助Git Bash或MSYS2环境识别MINGW、MSYS、CYGWIN这些标识。这里有个容易被忽略的细节windows用户跑.sh脚本通常需要先安装Git for Windows因为Git自带了一个完整的bash环境但很多小白不知道这一点所以我在windows入口处也预留了一个纯PowerShell的检测逻辑两者配合覆盖大多数使用场景。2.2 为什么Mac走HomebrewWindows走winget加Git Bash选包管理器这件事我纠结了很久最后定下来的结论是mac上只用Homebrewwindows上以winget为主、手动配置为辅同时保留一个可选目录让用户用Scoop装一些更“Unix风”的工具。这么选的逻辑很简单。macOS上Homebrew已经是事实标准几乎所有开发工具都能通过brew install装到而且它会自动处理依赖关系brew services还能托管后台服务比如MySQL、Redis这类。另一条路是手动下载安装包但升级和卸载都麻烦不值得。Homebrew唯一的坑是初次安装的网络问题这个我在第5章会展开讲解决办法是使用国内镜像源脚本里已经内置了切换逻辑。windows这边稍复杂一点。winget是微软官方包管理器优点是系统原生、安全可靠、不需要额外安装缺点是软件库没有Homebrew那么全而且对命令行环境的表达能力有限。所以我让winget负责大头比如Git、Node.js、Python这类常见工具同时我在脚本里保留了一个manual_install的函数接口专门处理那些没有winget包的老旧软件比如某些版本特定的JDK。Git for Windows是必装的因为它不仅提供Git命令还提供一个能跑bash脚本的Git Bash环境这就让windows用户也能跑unix风格的安装脚本一举两得。下面这张表是我当初做选型时的对比可以给同样纠结的人参考管理器适用平台优点缺点我的用法HomebrewmacOS软件全、依赖处理成熟、社区活跃初次安装需要网络环境偶尔更新慢mac端唯一主力wingetWindows微软官方、无需额外安装软件库不如brew全个别包旧windows端主力ScoopWindows绿色软件、目录干净、适合开发工具新软件可能没有收录可选补充ChocolateyWindows软件多、支持脚本批量装部分操作需要管理员权限依赖有时一言难尽备用不默认启用对于常用开发工具的选型我也在manifest里做了分组比如“基础工具组”包含Git、终端、文本编辑器“语言运行时组”包含JDK、Node、Python“数据库与容器组”包含Docker Desktop、Redis、DBeaver等。这样分组不仅便于用户按需选择安装也为后面的交互式菜单埋下了伏笔。2.3 幂等、日志与断点恢复写安装脚本最忌讳的一件事是“装一半失败重跑一遍全部重来”。所以我把幂等性作为整个脚本设计的硬指标不管脚本执行几次最终的系统状态是一样的已经装好的组件不会被重复安装没装好的组件会接着装下去。实现幂等的关键手段是“安装前检查”。mac上执行command -v 软件名windows上在PowerShell里用Get-Command如果命令已经存在就认为软件已安装跳过安装步骤如果命令存在但版本不对我还会用--version之类的参数做一次版本比对发现不匹配就输出提示。这里有个例外Docker Desktop这类GUI软件没有命令行入口我改用检测安装目录的方式检查/Applications/Docker.app或C:\Program Files\Docker\Docker\Docker Desktop.exe是否存在。除了幂等检查脚本还维护了一个状态文件记录每一步的完成情况。每成功安装一个软件就往状态文件里追加一行下次运行时先读取状态文件已经标记完成的就直接跳过。这相当于给脚本加了一层“断点续传”能力——就算第8个软件安装失败重新运行脚本时也不会再折腾前面7个。日志方面我把标准输出和错误输出分别重定向到logs/install_stdout.log和logs/install_stderr.log同时在关键步骤打印时间戳。排查问题时直接看stderr日志的前几十行基本上就能定位到是网络问题、权限问题还是包本身的问题。这个习惯我养成了很久现在已经是写脚本的标配了。3. 核心实现细节与代码解读3.1 平台检测与统一入口先看mac和Git Bash通用的入口脚本核心片段。这一段的职责只有一个搞清楚自己在什么系统上运行。#!/usr/bin/env bash set -euo pipefail detect_platform() { local os os$(uname -s) case $os in Darwin*) echo macos ;; MINGW*|MSYS*|CYGWIN*) echo windows ;; Linux*) echo linux ;; *) echo unknown ;; esac } PLATFORM$(detect_platform) echo 检测到当前平台: $PLATFORM开头那行set -euo pipefail一定要写-e表示任何命令失败就让脚本退出避免带着错误继续跑-u防止变量未定义pipefail保证管道命令的失败能被捕获。这三个选项组合起来是bash脚本的最基本防呆配置。检测到平台后脚本会根据平台读取manifest.yaml中对应的分组然后调用统一的安装函数。对于windows场景我的建议是先安装Git for Windows然后用Git Bash运行这个入口脚本如果你实在不想装Git也可以直接运行PowerShell版本的install.ps1两套入口我会在下一节说明。3.2 安装函数的封装接下来是这套脚本的核心安装函数。我把它设计成“一个函数负责一个软件的完整安装生命周期”包括检查、安装、验证、记录四件事。install_one() { local name$1 local installer$2 if command -v $name /dev/null 21; then echo [SKIP] $name 已安装跳过 mark_done $name return 0 fi echo [INSTALL] 开始安装 $name ... if $installer; then echo [OK] $name 安装成功 mark_done $name return 0 else echo [FAIL] $name 安装失败请查看日志 logs/install_stderr.log return 1 fi }这里的installer参数是一个“命令字符串”我通过在调用方组合具体命令来复用这个函数。例如安装mac上的gitinstall_one git brew install git安装windows上的git使用wingetinstall_one git winget install --id Git.Git -e --source winget这种设计有一个好处如果在windows上发现某个软件用winget装不了我可以直接换一个installer参数比如改成Scoop的install_one git scoop install git而不需要改函数本身。套用一句做后端的朋友常说的话面向接口编程细节全部依赖注入。3.3 软件清单与国内镜像配置manifest.yaml我用的是最简单的键值结构每个软件包含名称、安装命令、是否开机自启、备注等字段。下面是简化示例groups: base: - name: git mac: brew install git windows: winget install --id Git.Git -e --source winget - name: curl mac: brew install curl windows: winget install --id cURL.cURL -e --source winget runtime: - name: openjdk8 mac: brew install --cask temurin8 windows: manual:jdk8_installer.exewindows里的manual:jdk8_installer.exe是一种声明式写法当脚本遇到manual:前缀时会去downloads/目录找对应的安装包找到就静默安装找不到就提示用户手动放入。这个设计解决了很多软件“官方只发安装包、不支持命令行安装”的问题。另一个很重要的细节是镜像配置。mac用户装Homebrew时默认源在国内环境下经常很慢所以我参考常见做法把brew的下载源切换为国内的开源镜像站并把切换命令固化在脚本里用户安装前会先执行一次镜像检测和切换。这样做的效果非常明显原本可能要几个小时的任务几分钟就能完成而且完全不需要用户手工干预。Windows侧类似winget本身走的是微软官方CDN整体速度问题不大所以镜像逻辑主要针对mac。3.4 Windows侧PowerShell实现PowerShell脚本不能直接用bash的command -v但我尽量保持行为一致。先看平台检测和跳过逻辑$platform windows function Test-Installed($name) { return $null -ne (Get-Command $name -ErrorAction SilentlyContinue) } function Install-One($name, $installer) { if (Test-Installed $name) { Write-Host [SKIP] $name 已安装跳过 Mark-Done $name return } Write-Host [INSTALL] 开始安装 $name ... try { Invoke-Expression $installer Mark-Done $name } catch { Write-Host [FAIL] $name 安装失败: $_ Write-Host 请检查 logs/install_stderr.log } }这里有个细节PowerShell里执行外部安装命令时用Invoke-Expression虽然方便但有安全隐患因为字符串会被当作代码执行。更稳妥的写法是用Start-Process -Wait -NoNewWindow启动安装进程并捕获退出码。我的脚本里对winget命令采用的就是这种方式只在极少数需要调用PowerShell内部函数时才用Invoke-Expression。另外windows上执行任何需要改动系统的命令都建议以管理员身份运行PowerShell。这一点很多小白会忽视所以我在脚本开头加了一行明确提示如果当前不是管理员权限直接输出警告并退出避免装到一半卡在权限弹窗上。实践下来提前拦截比半途报错友好得多。4. 实操记录Mac和Windows各跑一遍4.1 Mac端完整动手流程拿一台全新的MacBook从零开始装环境的完整流程是这样的第一步安装Xcode Command Line Tools。这个工具包是macOS开发环境的底层依赖Homebrew安装时也需要它。虽然在安装Xcode或运行git时会自动弹窗提示安装但为了减少等待我建议手动先跑一条命令xcode-select --install它会弹出一个图形安装窗口点同意等几分钟就好。没有这个工具包后面很多事情都跑不起来。第二步下载“小龙虾”脚本。我用的是git clone的方式git clone https://example.com/crawfish-installer.git cd crawfish-installer自己使用的话更推荐用git管理之后更新直接git pull可以保持脚本和manifest都是最新版本。第三步运行入口脚本./install.sh --quick--quick参数表示使用manifest里默认的推荐分组不做交互选择。如果你只想装某一部分可以改成./install.sh --menu会弹出一个简单的选择菜单。脚本运行过程中你会在终端看到类似下面的输出[INSTALL] 开始安装 git ... [OK] git 安装成功 [INSTALL] 开始安装 openjdk8 ... [OK] openjdk8 安装成功 [INSTALL] 开始安装 docker ... [OK] docker 安装成功其实我建议第一次跑的时候不要离开终端盯着看一会儿。如果看到某个软件卡住超过5分钟十有八九是网络问题这时候按CtrlC中断检查日志再重新运行脚本。由于幂等设计已经装好的不会被重复装所以不用担心中断会带来麻烦。4.2 Windows端完整动手流程Windows端的流程稍微有一点前置要求因为整套脚本依赖Git Bash环境。步骤是这样的第一步安装Git for Windows。这里我建议直接使用wingetwinget install --id Git.Git -e --source winget安装完成后在开始菜单找到“Git Bash”打开它。注意这里不要用Windows自带的CMD或PowerShell跑bash脚本否则会遇到各种路径兼容问题。第二步克隆脚本并运行git clone https://example.com/crawfish-installer.git cd crawfish-installer ./install.sh --quick如果Git Bash弹出的安装提示影响了操作或者你更习惯PowerShell也可以直接右键管理员身份运行PowerShell然后执行Set-ExecutionPolicy Bypass -Scope Process -Force powershell -ExecutionPolicy Bypass -File .\install.ps1 --quick第一行Set-ExecutionPolicy Bypass是把当前进程的执行策略临时放开避免PowerShell默认拒绝运行脚本。这里要强调-Scope Process意思是只对当前窗口生效不会永久修改系统策略相对安全。整个流程中你可能会遇到Windows安全中心的弹窗询问是否允许安装软件正常选择“允许”即可。我见过不少人卡在“Windows Installer服务不可用”或“Visual Studio Installer服务不可用”的报错上这类问题通常跟系统服务状态有关我放在第5章里专门说。4.3 安装成果验证脚本跑完不等于环境真的可用我习惯用一组验证命令确认安装结果。下面这张表整理了我最常用来验证环境的命令mac和windows通用只要终端里能正常打出版本号基本就说明安装没问题。验证项命令预期结果Gitgit --versiongit version 2.x.xJDKjava -versionopenjdk version 1.8.x 或 17.xMavenmvn -vApache Maven 3.x.xDockerdocker --versionDocker version 20.x.x / 24.x.xNodenode -vv18.x 或更高版本Pythonpython --versionPython 3.x.xcurlcurl --versioncurl 8.x.xCodex CLI可选codex --version输出CLI版本号验证时有一个细节windows的CMD和Git Bash在显示中文路径或版本信息时可能有编码差异如果看到乱码不用慌终端编码问题不影响实际安装结果。另外有些命令安装后需要新开一个终端窗口才能生效尤其是环境变量改动比如JAVA_HOME、MAVEN_HOME。所以正确做法是脚本执行完后关闭当前终端重新打开一个新终端再跑验证命令这样环境变量才真正加载。5. 踩坑实录常见问题排查5.1 mac安装Homebrew失败或报错Homebrew初装失败是我在支持用户时遇到最多的问题。典型报错是curl: (7) Failed to connect to raw.githubusercontent.com port 443: Connection refused或者卡在下载阶段长时间不动。本质上都是网络源访问不稳定解决办法是用国内镜像源安装。我在脚本里内置的方案是先备份系统里可能存在的旧配置然后切换到国内镜像下载安装脚本再通过镜像源执行安装。核心命令逻辑类似export HOMEBREW_BREW_GIT_REMOTEhttps://mirrors.ustc.edu.cn/brew.git export HOMEBREW_CORE_GIT_REMOTEhttps://mirrors.ustc.edu.cn/homebrew-core.git /bin/bash -c $(curl -fsSL https://mirrors.ustc.edu.cn/misc/brew/install.sh)注意这里不是所有Mirror都支持完整流程我用下来比较稳的是中科大和清华的镜像阿里的也可以具体选哪个可以根据所在网络环境调整。安装完成后还要把仓库地址也同步切成镜像否则后续brew update还是会卡。另一个常见的Homebrew报错跟目录权限有关比如Error: /usr/local/opt/... not writable。这类问题通常是之前安装过旧版本或从Time Machine恢复过系统导致的解决方法是重新设置目录属主sudo chown -R $(whoami) /usr/local/opt如果你用的是Apple Silicon芯片的Mac路径变成/opt/homebrew操作方式一样。总之先定位是网络问题还是权限问题再动手效率高很多。5.2 Windows下脚本命令闪退或执行策略受限Windows用户最常见的两个困惑双击.ps1文件不运行或者Git Bash里执行./install.sh一闪而过。先说.ps1闪退。默认情况下Windows的PowerShell执行策略是Restricted禁止运行任何脚本所以双击ps1文件通常就是闪退或者直接打不开。解决方案有两种第一种是右键选择“使用PowerShell运行”在弹出的窗口里可能会提示需要更改执行策略第二种是像我前面写的那样在当前窗口里先执行Set-ExecutionPolicy Bypass -Scope Process -Force再运行脚本。这里不建议直接修改机器级别的执行策略不安全而且容易误伤其他正常软件。再说Git Bash路径问题。如果你把脚本放在了一个带空格的目录下例如C:\Users\My Name\my project\install.sh直接./install.sh可能失败因为bash会把空格后面的内容当成新参数。解决办法是给执行路径加引号或者干脆把脚本放到一个纯英文无空格的路径下例如C:\dev\crawfish。这个习惯可以避免很多莫名其妙的问题。如果脚本闪退后什么都看不到另一个可能原因是脚本的换行符格式不对。Git Bash要求脚本是LF换行而windows记事本默认写出来是CRLFCRLF在某些环境下会导致bash解析错误。我的仓库里已经设置了.gitattributes强制LF但如果你自己改过脚本可以检查一下用VS Code右下角的“选择行尾序列”功能切换成LF问题通常就解决了。5.3 Docker守护进程启动失败Windows上安装Docker Desktop后启动时经常出现Error: start the windows daemon from a non-elevated terminal; shared clients这句话翻译过来就是你需要在一个有管理员权限的终端里启动Docker守护进程普通终端没有权限操作Docker引擎。解决办法很简单右键以管理员身份运行PowerShell或CMD然后再执行Docker相关命令。如果你用的是Git Bash则要右键Git Bash选择“以管理员身份运行”。我在脚本里特意增加了一条检查如果检测到当前用户不在管理员组就会在安装Docker之后打印一行提醒告诉用户“Docker安装完成但请务必用管理员终端启动”。还有一个容易误判的情况Docker Desktop启动后命令行执行docker version仍然报错提示无法连接到docker daemon。这通常只是Docker Desktop后端服务还没完全启动Windows上Docker Desktop启动较慢尤其是首次启动要初始化WSL2和虚拟化环境。解决办法是等30秒左右再执行命令或者用docker context ls查看当前上下文是否默认指向了docker-desktop。5.4 Windows Installer服务不可用与端口占用有用户反馈安装某些软件时报“Windows Installer服务不可用”或者“Visual Studio Installer服务不可用”这个报错听起来很吓人但百分之八九十是因为系统服务被禁用或未启动。排查方法很简单在服务管理器里找到“Windows Installer”确认启动类型是“手动”并且状态是“已启动”如果服务被禁用右键改回手动再启动一次。端口占用问题也是装环境时的高频问题尤其是启动Elasticsearch、Redis或Tomcat这类服务时。比如你想在windows上启动Elasticsearch提示9200端口被占用这时候可以用下面的命令定位是哪个进程占用了端口netstat -ano | findstr :9200输出结果里最后一列是PID再用任务管理器或者命令行查看这个PID对应的进程tasklist | findstr PID如果确认是无用的进程占用可以执行taskkill /PID PID /F这一套命令组合足够解决90%的端口占用问题。我强烈建议把这三条命令记在笔记里因为以后不管是数据库、容器还是Web服务都会遇到类似场景。但要注意taskkill /F是强制终止执行前务必确认进程不是系统关键进程。5.5 Maven与JDK配置疑难Maven装好以后跑mvn -v报错是最典型的配置类问题。报错信息要么是JAVA_HOME is not defined correctly要么是mvn: command not found。前者通常是因为JAVA_HOME指向了不对的目录后者是因为Maven的bin目录没加到PATH里。先说JAVA_HOME的正确设置。Mac上通过Homebrew安装的JDK8路径通常是/Library/Java/JavaVirtualMachines/temurin-8.jdk/Contents/Home不同版本的目录名不同所以不能用死路径。我在脚本里用了一条动态查询命令来获取实际路径/usr/libexec/java_home -v 1.8这条命令会输出对应版本的实际Home路径输出结果直接写入~/.zshrc的JAVA_HOME环境变量即可。Windows端则建议直接使用安装包静默安装安装完成后设置系统环境变量脚本里通过PowerShell写注册表来设置JAVA_HOME和PATH这里不再展开。至于mvn: command not found先检查Maven解压后的目录结构确认bin/mvn文件存在再把D:\apache-maven-3.9.6\bin加入PATH。改完环境变量后一定要记得新开一个终端再验证因为旧终端的环境变量不会自动刷新。5.6 常见问题速查表为了让你排查时少翻几页我把上面几类问题汇总成一个速查表按“症状 - 原因 - 处理方式”排列可以当作备忘保存。症状大概率原因处理方式Homebrew安装卡住默认源访问慢切换国内镜像源后重新安装Homebrew报目录不可写目录属主异常sudo chown -R $(whoami) /usr/local/optps1脚本双击闪退执行策略限制Set-ExecutionPolicy Bypass -Scope Process -ForceGit Bash脚本闪退路径有空格或换行符是CRLF换纯英文路径并转成LF换行Docker启动提示非管理员终端权限不足右键管理员身份运行终端Windows Installer服务不可用系统服务被禁用服务管理器里启动Windows InstallerElasticsearch端口被占用9200端口被其他进程占用netstat -ano | findstr :9200taskkillmvn -v报JAVA_HOME错误JAVA_HOME路径不对用/usr/libexec/java_home -v 1.8获取真实路径环境变量改了不生效旧终端未刷新新开终端窗口再验证6. 这套脚本还能怎么扩展写到这有朋友可能会问脚本已经能装这么多东西了还能怎么改我提供一个值得尝试的扩展方向把脚本从“一次性安装器”升级成“持续维护工具”。具体来说可以做三件事。第一把manifest.yaml改成可以分环境加载的多文件结构比如manifest.dev.yaml、manifest.data.yaml不同项目组切不同配置文件这样团队新成员入职时跑一条命令就能还原项目所需的完整环境。第二在脚本里加交互式菜单安装前勾选需要的组件类似图形界面里的多选框这对不熟悉命令行的队友非常友好。实际上现在的--menu参数就是一个简化版后续可以扩展成支持上下键选择的分组界面。第三把验证逻辑独立出来做成verify.sh既可以安装完自动跑也可以随时手动执行输出一套“环境体检报告”包括版本、PATH状态、端口占用情况甚至把系统安全日志备份也纳入报告范围。这个体检报告在排查问题时非常实用相当于把“哪里有问题”变成了机器自动排查。我最近还在实验一个新的方向把容器工具链和本地服务管理也纳入脚本。比如把Dify、GPUStack这类AI应用部署工具的安装流程通过调用docker compose的方式集成进来让用户一条命令就能在本地拉起一个完整的AI应用环境。这套思路刚跑通原型等我用熟了再单独写一篇展开。最后说点实际的这次公开“小龙虾”脚本我最大的体会是写安装脚本本质上是在跟未来的自己对话。每当我遇到一个问题顺手在脚本里补一条检测、加一段注释未来重装系统或帮别人排查时就能少走一次弯路。这套脚本目前已经在我自己两台电脑上完整跑过三轮mac端从格式化硬盘到环境就绪大约二十分钟windows端半小时左右。我不敢说它覆盖了所有场景但如果你和我一样不想再为装环境浪费时间完全可以先下载下来按第4章的步骤跑一遍遇到新问题再对着第5章的排查表对照一下。最后再分享一个小技巧每次重装系统前先把manifest.yaml里自己常用的软件组整理一遍删掉不再需要的补上新接触的这样脚本每次重装都会更贴近你当下的习惯装机这件事也会越来越顺。
返回列表