Files
guzhujushiBlog/deploy/install_javy.sh
T

43 lines
1.6 KiB
Bash
Raw Normal View History

2026-08-22 22:28:41 +08:00
#!/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"