From 4ab0aeb3013c0ec566cecbf2f5d4e7c031ba0bcc Mon Sep 17 00:00:00 2001 From: bzbk007 Date: Sun, 14 Jun 2026 15:24:59 +0800 Subject: [PATCH] Node.js v20.18.0 for RISC-V 64-bit (Orange Pi RV2) --- README.md | 51 ++++++++++++++++++++++++++++++++++++++++ extract.sh | 55 +++++++++++++++++++++++++++++++++++++++++++ install.sh | 69 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 175 insertions(+) create mode 100644 README.md create mode 100644 extract.sh create mode 100644 install.sh diff --git a/README.md b/README.md new file mode 100644 index 0000000..b178585 --- /dev/null +++ b/README.md @@ -0,0 +1,51 @@ +# Node.js v20.18.0 for RISC-V 64 (riscv64) + +Pre-compiled Node.js v20.18.0 for Orange Pi RV2 (RISC-V 64-bit). + +## 📦 内容 + +``` +├── bin/ +│ ├── node # Node.js v20.18.0 二进制 +│ ├── npm # npm 包管理器 +│ └── npx # npx 工具 +├── lib/ # Node.js 库文件 +├── install.sh # 一键安装脚本 +└── README.md +``` + +## 🚀 安装 + +```bash +# 一键安装 +sudo bash install.sh + +# 或手动安装 +sudo cp bin/node /usr/local/bin/node +sudo chmod +x /usr/local/bin/node +node --version +``` + +## 📋 系统要求 + +- **架构**: RISC-V 64-bit (riscv64) +- **系统**: Linux (Debian/Ubuntu/Armbian) +- **设备**: Orange Pi RV2 或兼容设备 + +## 🔧 使用 + +```bash +node --version # v20.18.0 +npm --version # 10.8.2 +npx --version # 10.8.2 +``` + +## ⚠️ 注意事项 + +此版本从 Orange Pi RV2 系统中提取,已验证在以下环境正常工作: +- Orange Pi RV2 (Kylin OS / Ubuntu Noble) +- Linux 6.6.63-ky + +## 📄 License + +Node.js is licensed under the MIT License. diff --git a/extract.sh b/extract.sh new file mode 100644 index 0000000..aa59e7e --- /dev/null +++ b/extract.sh @@ -0,0 +1,55 @@ +#!/bin/bash +# ============================================================ +# Extract Node.js v20 from the RV2 system +# Run this script on the Orange Pi RV2 to prepare the package +# Usage: bash extract.sh +# ============================================================ + +set -e + +NODE_SRC="/usr/local/node-v20" +OUTPUT_DIR="./bin" + +echo "🔍 Looking for Node.js v20 installation..." + +if [ ! -d "$NODE_SRC" ]; then + echo "❌ Node.js v20 not found at $NODE_SRC" + echo " Please check the installation path." + exit 1 +fi + +echo "✅ Found Node.js at $NODE_SRC" + +# Create output directory +mkdir -p "$OUTPUT_DIR" + +# Copy binaries +echo "📦 Copying binaries..." +cp "$NODE_SRC/bin/node" "$OUTPUT_DIR/node" +chmod +x "$OUTPUT_DIR/node" + +# Copy npm/npx +for bin in npm npx; do + if [ -f "$NODE_SRC/bin/$bin" ]; then + cp "$NODE_SRC/bin/$bin" "$OUTPUT_DIR/$bin" + chmod +x "$OUTPUT_DIR/$bin" + echo " ✅ $bin" + fi +done + +# Copy lib (node_modules for npm) +if [ -d "$NODE_SRC/lib" ]; then + echo "📚 Copying libraries..." + mkdir -p ./lib + cp -r "$NODE_SRC/lib/"* ./lib/ 2>/dev/null || true +fi + +# Verify +echo "" +echo "📋 Package contents:" +ls -la "$OUTPUT_DIR/" +echo "" +echo "Node version: $("$OUTPUT_DIR/node" --version)" +echo "" +echo "✅ Done! Package ready for distribution." +echo " Commit and push to Gitea repository." diff --git a/install.sh b/install.sh new file mode 100644 index 0000000..5df33ab --- /dev/null +++ b/install.sh @@ -0,0 +1,69 @@ +#!/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 ""