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"
|