This commit is contained in:
Сергей Маринкевич
2026-05-18 15:49:47 +07:00
committed by GRayHook
commit d63ac2c9d3
3 changed files with 181 additions and 0 deletions
+59
View File
@@ -0,0 +1,59 @@
#!/usr/bin/env bash
set -euo pipefail
# Usage:
# ./prepare-online.sh [x64|arm64] [22.15.0]
#
# If version is omitted, script resolves the latest v22 release.
ARCH="${1:-x64}"
VERSION="${2:-}"
case "${ARCH}" in
x64) NODE_ARCH="x64" ;;
arm64) NODE_ARCH="arm64" ;;
*)
echo "Unsupported arch: ${ARCH}. Use x64 or arm64."
exit 1
;;
esac
if [[ -z "${VERSION}" ]]; then
# Pick latest v22 from official index without triggering pipefail/SIGPIPE.
INDEX_FILE="$(mktemp)"
curl -fsSL "https://nodejs.org/dist/index.tab" -o "${INDEX_FILE}"
VERSION="$(awk 'NR>1 && $1 ~ /^v22\./ {print substr($1,2); exit}' "${INDEX_FILE}")"
rm -f "${INDEX_FILE}"
fi
if [[ -z "${VERSION}" ]]; then
echo "Unable to resolve Node.js v22 version."
exit 1
fi
NODE_DIR="node-v${VERSION}-linux-${NODE_ARCH}"
ARCHIVE="${NODE_DIR}.tar.xz"
BASE_URL="https://nodejs.org/dist/v${VERSION}"
OUT_DIR="bundle-node-v${VERSION}-linux-${NODE_ARCH}"
mkdir -p "${OUT_DIR}"
echo "Downloading Node.js v${VERSION} (${NODE_ARCH})..."
curl -fL "${BASE_URL}/${ARCHIVE}" -o "${OUT_DIR}/${ARCHIVE}"
curl -fL "${BASE_URL}/SHASUMS256.txt" -o "${OUT_DIR}/SHASUMS256.txt"
echo "Verifying checksum..."
(
cd "${OUT_DIR}"
sha256sum -c SHASUMS256.txt --ignore-missing | awk "/${ARCHIVE}: OK/"
)
cat > "${OUT_DIR}/INSTALL_ARGS.txt" <<EOF
ARCH=${NODE_ARCH}
VERSION=${VERSION}
ARCHIVE=${ARCHIVE}
EOF
echo
echo "Ready: ${OUT_DIR}"
echo "Copy this folder to the offline Ubuntu 20.04 machine."