43 lines
1.6 KiB
Bash
43 lines
1.6 KiB
Bash
#!/bin/bash
|
||
# ============================================================
|
||
# 安装 Javy(JS→WASM 编译工具)到服务器
|
||
# ------------------------------------------------------------
|
||
# 用法:bash deploy/install_javy.sh
|
||
# 作用:从 GitHub 官方 Releases 下载 Javy(约 14MB 单文件),
|
||
# 校验 SHA256 后安装到 /usr/local/bin/javy
|
||
# 幂等:已安装且版本一致时直接跳过,可重复执行
|
||
# 体积说明:下载包约 14MB,解压后约 40MB,仅占磁盘少量空间
|
||
# ============================================================
|
||
set -eu
|
||
|
||
JAVY_VERSION="${JAVY_VERSION:-9.1.0}"
|
||
JAVY_BIN="/usr/local/bin/javy"
|
||
URL="https://github.com/bytecodealliance/javy/releases/download/v${JAVY_VERSION}/javy-x86_64-linux-v${JAVY_VERSION}.gz"
|
||
SHA_URL="${URL}.sha256"
|
||
|
||
# 已安装且版本匹配 -> 跳过(避免重复下载)
|
||
if [ -x "$JAVY_BIN" ] && "$JAVY_BIN" --version 2>/dev/null | grep -q "$JAVY_VERSION"; then
|
||
echo "Javy ${JAVY_VERSION} 已安装,跳过下载:$($JAVY_BIN --version)"
|
||
exit 0
|
||
fi
|
||
|
||
echo "== 下载 Javy ${JAVY_VERSION}(约 14MB)=="
|
||
TMP=$(mktemp -d)
|
||
trap 'rm -rf "$TMP"' EXIT
|
||
curl -fL -sS -o "$TMP/javy.gz" "$URL"
|
||
curl -fL -sS -o "$TMP/javy.gz.sha256" "$SHA_URL"
|
||
|
||
echo "== 校验 SHA256 =="
|
||
EXPECT=$(awk '{print $1}' "$TMP/javy.gz.sha256")
|
||
ACTUAL=$(sha256sum "$TMP/javy.gz" | awk '{print $1}')
|
||
if [ "$EXPECT" != "$ACTUAL" ]; then
|
||
echo "校验失败:期望 $EXPECT,实际 $ACTUAL" >&2
|
||
exit 1
|
||
fi
|
||
echo "校验通过"
|
||
|
||
gunzip -f "$TMP/javy.gz"
|
||
install -m 0755 "$TMP/javy" "$JAVY_BIN"
|
||
echo "安装完成:$("$JAVY_BIN" --version)"
|
||
echo "路径:$JAVY_BIN"
|