mirror of
https://github.com/hotwa/luci-app-openclaw.git
synced 2026-03-31 04:52:33 +00:00
43 lines
1.4 KiB
Bash
Executable File
43 lines
1.4 KiB
Bash
Executable File
#!/bin/sh
|
|
# 在 Alpine ARM64 Docker 容器内运行
|
|
# 环境变量: NODE_VER (目标版本号), /output (输出目录)
|
|
set -e
|
|
|
|
apk add --no-cache nodejs npm xz
|
|
|
|
ACTUAL_VER=$(node --version | sed 's/^v//')
|
|
echo "Alpine Node.js version: v${ACTUAL_VER} (requested: v${NODE_VER})"
|
|
|
|
# 打包为 portable tarball (与官方 tarball 相同结构)
|
|
PKG_NAME="node-v${NODE_VER}-linux-arm64-musl"
|
|
PKG_DIR="/tmp/${PKG_NAME}"
|
|
mkdir -p "${PKG_DIR}/bin" "${PKG_DIR}/lib/node_modules" "${PKG_DIR}/include/node"
|
|
|
|
cp "$(which node)" "${PKG_DIR}/bin/"
|
|
chmod +x "${PKG_DIR}/bin/node"
|
|
|
|
# 复制 npm
|
|
if [ -d /usr/lib/node_modules/npm ]; then
|
|
cp -r /usr/lib/node_modules/npm "${PKG_DIR}/lib/node_modules/"
|
|
fi
|
|
|
|
# 创建 npm wrapper
|
|
printf '#!/bin/sh\nexec "$(dirname "$0")/node" "$(dirname "$0")/../lib/node_modules/npm/bin/npm-cli.js" "$@"\n' \
|
|
> "${PKG_DIR}/bin/npm"
|
|
# 创建 npx wrapper
|
|
printf '#!/bin/sh\nexec "$(dirname "$0")/node" "$(dirname "$0")/../lib/node_modules/npm/bin/npx-cli.js" "$@"\n' \
|
|
> "${PKG_DIR}/bin/npx"
|
|
chmod +x "${PKG_DIR}/bin/npm" "${PKG_DIR}/bin/npx"
|
|
|
|
# 验证
|
|
echo "=== Verification ==="
|
|
"${PKG_DIR}/bin/node" --version
|
|
"${PKG_DIR}/bin/node" -e "console.log(process.arch, process.platform, process.versions.modules)"
|
|
"${PKG_DIR}/bin/npm" --version 2>/dev/null || echo "npm wrapper created"
|
|
|
|
# 打包
|
|
cd /tmp
|
|
tar cJf "/output/${PKG_NAME}.tar.xz" "${PKG_NAME}"
|
|
ls -lh "/output/${PKG_NAME}.tar.xz"
|
|
echo "=== Done: ${PKG_NAME}.tar.xz ==="
|