Repository navigation
Install
Webman AOT Builder 安装在 Windows x64 或 macOS Apple Silicon(arm64) 开发电脑上,把你的 Webman 项目构建为供 Linux amd64 使用的 dist-aot/。看到 PS ...> 提示符,就是 Windows PowerShell:只复制下方 Windows PowerShell 代码块。macOS 的 .tar.gz、set -e、./install.sh 不能在 PowerShell 中运行。 如果当前在旧版安装包解压目录,不必在此安装新版;可在普通下载目录打开 PowerShell。无需克隆工具仓库;GitHub 自动生成的 Source code (zip) 不是安装包。v0.2.2 用户请看该版安装说明;v0.2.1 用户请看更早版本说明。
| 你的开发电脑和终端 | 轻量包 | 完整包 |
|---|---|---|
| Windows x64 · Windows PowerShell |
下载 Windows 轻量包 ZIP 7,864,053 字节(7.50 MiB) |
下载 Windows 完整包 ZIP 342,615,119 字节(326.74 MiB) |
| macOS Apple Silicon ·「终端」/ sh |
下载 macOS 轻量包 tar.gz 8,524,619 字节(8.13 MiB) |
下载 macOS 完整包 tar.gz 265,181,452 字节(252.90 MiB) |
想先下载小安装包、可联网准备组件:选轻量包。 安装后,在任意目录首次运行 webman-aot doctor,它会联网下载、校验并准备编译组件:首次运行时会显示实际下载进度与大小。需要离线准备组件:选完整包。 完整包在安装时准备组件,安装位置至少留出 4 GiB 可用空间。两种包后续的 doctor、build、verify 命令相同;差别是组件的来源和准备时间。以上大小是 v0.2.3 Release 中资产的实际字节数,MiB 按 1,048,576 字节换算。
Release 中的 -components.zip 由轻量包的 doctor 自动下载,不是供用户手动安装的包;-php-relink-materials.tar.gz 是 macOS 运行时源码与重链接材料,也不是安装包。下载文件的官方摘要清单是 SHA256SUMS。
只执行与你的电脑和所选包对应的一段命令。命令会在当前目录下载安装包、核对 SHA-256、解压并运行安装脚本。安装完成后,终端仍在开始时的下载目录;不要把下载或解压目录直接当作 Webman 项目根目录,先核对项目结构。如果已用浏览器下载,先在终端进入下载文件所在目录,跳过对应代码块里的下载命令,其余步骤照做。SHA-256 不通过就停止,不要继续安装。
在资源管理器打开普通下载文件夹,在地址栏输入 powershell 并按回车。下面是 Windows PowerShell 命令,不要在 CMD 或 macOS 终端中运行。只复制与你选的包对应的一个代码块;代码块内的下载地址是纯 URL,不含 Markdown 链接文字。
轻量包:
$ErrorActionPreference = 'Stop'
$package = 'webman-aot-builder-0.2.3-windows-x86_64.zip'
Invoke-WebRequest -Uri "https://github.com/supdger/webman-aot-builder/releases/download/v0.2.3/$package" -OutFile $package
$expected = '726257b061404debf3502dc26262c15a923124b4a8f5bf728f594fd4288aa95d'
$actual = (Get-FileHash -Algorithm SHA256 -LiteralPath $package).Hash.ToLowerInvariant()
if ($actual -ne $expected) { throw "SHA-256 mismatch: $package" }
Write-Output "SHA-256 OK: $package"
$extract = Join-Path $env:TEMP 'webman-aot-builder-0.2.3-small-install'
Write-Output "Extracting $package to $extract ..."
Expand-Archive -LiteralPath $package -DestinationPath $extract -Force -Verbose
$installScript = Join-Path $extract 'install.ps1'
Write-Output "Installing from $extract ..."
powershell.exe -NoProfile -ExecutionPolicy Bypass -File $installScript
if ($LASTEXITCODE -ne 0) { throw 'Installation failed.' }
Write-Output '安装完成。先在当前 PowerShell 运行 webman-aot version;若显示 0.2.3,可直接运行 webman-aot doctor。仅找不到命令或仍是旧版时,才重开窗口并检查 PATH。'完整包:
$ErrorActionPreference = 'Stop'
$package = 'webman-aot-builder-0.2.3-full-windows-x86_64.zip'
Invoke-WebRequest -Uri "https://github.com/supdger/webman-aot-builder/releases/download/v0.2.3/$package" -OutFile $package
$expected = '271e9499fd4042ab031dca675b02ff2fae90ac925d6fcb6660f417ae58182e49'
$actual = (Get-FileHash -Algorithm SHA256 -LiteralPath $package).Hash.ToLowerInvariant()
if ($actual -ne $expected) { throw "SHA-256 mismatch: $package" }
Write-Output "SHA-256 OK: $package"
$extract = Join-Path $env:TEMP 'webman-aot-builder-0.2.3-full-install'
Write-Output "Extracting $package to $extract ..."
Expand-Archive -LiteralPath $package -DestinationPath $extract -Force -Verbose
$installScript = Join-Path $extract 'install.ps1'
Write-Output "Installing from $extract ..."
powershell.exe -NoProfile -ExecutionPolicy Bypass -File $installScript
if ($LASTEXITCODE -ne 0) { throw 'Installation failed.' }
Write-Output '安装完成。先在当前 PowerShell 运行 webman-aot version;若显示 0.2.3,可直接运行 webman-aot doctor。仅找不到命令或仍是旧版时,才重开窗口并检查 PATH。'校验应显示 SHA-256 OK;安装应显示 Installation completed in ... seconds.。默认安装到 %LOCALAPPDATA%\webman-aot-builder,命令入口是其中的 bin\webman-aot.cmd。先在当前 PowerShell 检查实际执行的是哪个命令及其版本:
Get-Command webman-aot | Select-Object Source
webman-aot version版本应显示 webman-aot 0.2.3。若当前窗口找不到命令,可先运行 & "$env:LOCALAPPDATA\webman-aot-builder\bin\webman-aot.cmd" version 确认安装,再重开 PowerShell 并检查用户 PATH。若 Get-Command 指向别处且版本不是 0.2.3,再重开 PowerShell 并检查 PATH;确认版本前不要用旧版继续操作。当前窗口能运行 0.2.3 时,直接在这里运行 webman-aot doctor 即可;正在下载组件的 doctor 无需中断或重启。 安装命令不会切换目录,当前 PowerShell 仍在下载目录;build 须到自己的 Webman 项目根目录。Windows 安装包在 Windows 上构建 Linux amd64 程序,不会生成 Windows exe。
在 Finder 打开想存放下载文件的文件夹,打开「终端」,输入 cd (末尾有空格),把该文件夹拖进终端窗口并按回车。然后选一段执行。
轻量包:
(
set -e
package=webman-aot-builder-0.2.3-macos-arm64.tar.gz
curl -fL --progress-bar "https://github.com/supdger/webman-aot-builder/releases/download/v0.2.3/$package" -o "$package"
printf '%s %s\n' 03f2e21112ca70e207f94b9962b7fa542531470cb9b7d9df731e90d22b3cfb52 "$package" | shasum -a 256 -c -
echo "Extracting $package ..."
mkdir -p webman-aot-builder-0.2.3-small-install
tar -xzvf "$package" -C webman-aot-builder-0.2.3-small-install
cd webman-aot-builder-0.2.3-small-install
echo "Installing from $PWD ..."
./install.sh
)完整包:
(
set -e
package=webman-aot-builder-0.2.3-full-macos-arm64.tar.gz
curl -fL --progress-bar "https://github.com/supdger/webman-aot-builder/releases/download/v0.2.3/$package" -o "$package"
printf '%s %s\n' 5784b163aeb6b1c5f9f038c46bdc29eac95ef769fc82439a34a7d206086a9774 "$package" | shasum -a 256 -c -
echo "Extracting $package ..."
mkdir -p webman-aot-builder-0.2.3-full-install
tar -xzvf "$package" -C webman-aot-builder-0.2.3-full-install
cd webman-aot-builder-0.2.3-full-install
echo "Installing from $PWD ..."
./install.sh
)校验应显示 <文件名>: OK;安装应显示 Installation completed in ... seconds.。默认安装到 ~/Library/Application Support/webman-aot-builder,命令入口在 ~/.local/bin/webman-aot。**先在当前「终端」**检查实际执行的是哪个命令及其版本:
command -v webman-aot
webman-aot version版本应显示 webman-aot 0.2.3;此时可直接在当前终端运行 webman-aot doctor。若当前终端找不到命令,可先运行 ~/.local/bin/webman-aot version 确认安装,再重开终端并检查 PATH。若 command -v 指向别处且版本不是 0.2.3,再重开终端并检查 PATH;确认版本前不要用旧版继续操作。运行 build 前再进入自己的 Webman 项目根目录。Intel Mac 不受支持。
安装完成并确认 webman-aot version 显示 0.2.3 后,在当前窗口的任何目录运行 webman-aot doctor;只有命令找不到或仍指向旧版时才需重开终端并检查 PATH。例如,仍在下载目录或安装包解压目录也可以。doctor 只检查开发机和工具链,不检查 Webman 项目;不必先进入项目目录。轻量包第一次运行普通 webman-aot doctor 会联网下载、校验并准备编译组件,无需加 --repair,终端显示 [repair] 进度;完整包安装时已离线准备组件。等待输出 Result: healthy。若下载失败,网络恢复后重跑 webman-aot doctor,已校验组件可复用;持续无法联网可改用同平台完整包。
Windows PowerShell:
webman-aot doctormacOS「终端」:
webman-aot doctor只想检查、不自动下载或准备组件时运行 webman-aot doctor --check;要读取 JSON 检查结果时运行 webman-aot doctor --json,这两种方式均不会自动准备。webman-aot doctor --repair 会显式尝试准备缺失组件。若出现其他 [ERROR],按具体检查项排查;doctor 不会报 project 检查项。
**SaiAdmin 6.1.5 的 Windows 构建:**若 Git 在工作区把 support/bootstrap.php 检出为 CRLF,而索引内容为 LF,构建器会在隔离构建镜像内规范化这一已知的 CRLF 换行,再做受摘要约束的兼容适配。原项目文件不会被改写;无需修改 core.autocrlf 或手动编辑 support/bootstrap.php。其他源码差异或未知版本仍会报兼容错误。
doctor 健康后,再进入自己的 Webman 项目根目录执行 build。 项目根目录应直接包含 composer.json、composer.lock、start.php、app/,且 composer.lock 锁定 workerman/webman-framework。工具源码仓库、dist/source-build/、下载目录和安装包解压目录都不是你的项目根目录。在这些目录运行 build 会报告当前目录和缺失结构,不会在错误目录准备组件或构建。
**Windows PowerShell:**在资源管理器打开自己的 Webman 项目根目录,在地址栏输入 powershell 并按回车;先确认 Get-Location 显示该目录,再执行:
Get-Location
webman-aot build
webman-aot verify**macOS「终端」:**输入 cd ,把自己的 Webman 项目文件夹从 Finder 拖进终端,按回车;先确认 pwd 显示该目录,再执行:
pwd
webman-aot build
webman-aot verifybuild 成功后,项目根目录中会有 dist-aot/。verify 默认检查当前目录的 dist-aot/;如果在别处验证,使用 webman-aot verify --path=项目中的dist-aot目录 明确指定路径。verify 检查分发包结构与静态属性。若是 SaiAdmin 6.1.5 项目,把构建命令改成 webman-aot build --profile=saiadmin,详见 SaiAdmin 兼容说明。要把整个 dist-aot/ 部署到 Linux amd64 目标机,并按 Linux 目标机验收检查启动和业务接口;开发电脑上的 verify 不代替目标机验收。
若 build 报当前目录不是项目根目录,用 Get-Location(Windows)或 pwd(Mac)核对位置,再进入真正的项目根目录重试。切换目录不会改变已准备好的工具链。
回到v0.2.3 安装包解压目录,即直接包含 uninstall.sh 或 uninstall.ps1 的目录。若已删除解压目录,可重新解压同平台的 v0.2.3 安装包,再运行其中的卸载脚本。默认卸载程序和命令入口,保留新版用户数据(包括已下载的组件和备份);确认要清除新版用户数据时才加 --purge(Mac)或 -Purge(Windows)。卸载不会删除你的 Webman 项目或 dist-aot/。
**macOS「终端」:**进入直接包含 uninstall.sh 的解压目录后执行:
./uninstall.sh**Windows PowerShell:**进入直接包含 uninstall.ps1 的解压目录后执行:
powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\uninstall.ps1v0.1.3 和 v0.2.3 都使用短命令 webman-aot,所以安装或卸载后都要用 webman-aot version 判断当前调用的是谁。v0.2.3 的用户数据在 webman-aot-builder 目录;v0.1.3 的旧数据在独立的 webman-aot 目录。新版安装器不会迁移旧组件缓存;旧版 webman-aot self-update 也不会安装 v0.2.3。需要卸载旧版时,使用 v0.1.3 Release 的旧卸载脚本。卸载新版可能恢复安装前原有的同名命令入口,仍以版本输出为准。
- **
webman-aot version不是0.2.3:**关闭并重开终端或 PowerShell,检查上面给出的命令位置;Windows 用Get-Command webman-aot | Select-Object Source,Mac 用command -v webman-aot。先解决PATH冲突再构建。 - **下载或 SHA-256 校验失败:**检查下载文件和对应平台的 SHA256SUMS,重新下载;不要用源码 ZIP 代替安装包。
- **
doctor不健康:**看具体[ERROR];组件错误按提示检查网络并重跑doctor。可在任意目录检查;build才要求 Webman 项目根目录。 - **Linux 上不能运行安装包:**这是开发电脑的构建工具;复制构建出的整个
dist-aot/到 Linux amd64 目标机,并做目标机验收。