#!/bin/bash # ============================================================ # Node.js v20.18.0 riscv64 - Installation Script # Usage: sudo bash install.sh # ============================================================ set -e RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' info() { echo -e "${GREEN}[INFO]${NC} $1"; } warn() { echo -e "${YELLOW}[WARN]${NC} $1"; } error() { echo -e "${RED}[ERROR]${NC} $1"; exit 1; } if [ "$EUID" -ne 0 ]; then error "Please run as root: sudo bash install.sh" fi SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" INSTALL_PREFIX="/usr/local" info "Installing Node.js v20.18.0 to $INSTALL_PREFIX..." # Backup existing node if command -v node &>/dev/null; then OLD_VER=$(node --version 2>/dev/null || echo "unknown") warn "Existing Node.js found: $OLD_VER" warn "Backing up to /usr/local/bin/node.backup" cp "$(which node)" /usr/local/bin/node.backup 2>/dev/null || true fi # Copy binaries info "Copying binaries..." cp "$SCRIPT_DIR/bin/node" "$INSTALL_PREFIX/bin/node" chmod +x "$INSTALL_PREFIX/bin/node" # Copy npm/npx if available for bin in npm npx; do if [ -f "$SCRIPT_DIR/bin/$bin" ]; then cp "$SCRIPT_DIR/bin/$bin" "$INSTALL_PREFIX/bin/$bin" chmod +x "$INSTALL_PREFIX/bin/$bin" fi done # Copy lib directory if available if [ -d "$SCRIPT_DIR/lib" ]; then info "Copying libraries..." mkdir -p "$INSTALL_PREFIX/lib" cp -r "$SCRIPT_DIR/lib/"* "$INSTALL_PREFIX/lib/" 2>/dev/null || true fi # Verify installation info "Verifying installation..." INSTALLED_VER=$("$INSTALL_PREFIX/bin/node" --version 2>/dev/null) if [ -n "$INSTALLED_VER" ]; then info "✅ Node.js $INSTALLED_VER installed successfully!" else error "Installation verification failed" fi echo "" echo -e "${GREEN}============================================${NC}" echo -e " Node.js $INSTALLED_VER installed!" echo -e " Path: $INSTALL_PREFIX/bin/node" echo -e "${GREEN}============================================${NC}" echo ""