From 0c66722989422ee52bbe70dd61ad0b79f63627e3 Mon Sep 17 00:00:00 2001 From: hanruo <552455797@qq.com> Date: Wed, 27 May 2026 16:19:36 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20"=E6=94=AF=E6=8C=81arm=E6=9E=B6?= =?UTF-8?q?=E6=9E=84"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/lib/frp-config.js | 19 ++++++++++++++++++- src/lib/tasks.js | 7 +++++-- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/src/lib/frp-config.js b/src/lib/frp-config.js index 1bddb03..2655cdf 100644 --- a/src/lib/frp-config.js +++ b/src/lib/frp-config.js @@ -1,10 +1,26 @@ "use strict"; +const os = require("node:os"); const path = require("node:path"); const { randomBytes } = require("node:crypto"); const DEFAULT_FRP_VERSION = "0.58.1"; -const DEFAULT_FRP_ARCH = "amd64"; + +// Map Node's os.arch() to the arch token frp uses in its release asset names +// (e.g. frp_0.58.1_linux_arm64.tar.gz). Falls back to amd64 for the common case. +function detectFrpArch() { + switch (os.arch()) { + case "x64": return "amd64"; + case "arm64": return "arm64"; + case "arm": return "arm"; + case "ia32": return "386"; + case "mips": return "mips"; + case "mipsel": return "mipsle"; + default: return "amd64"; + } +} + +const DEFAULT_FRP_ARCH = detectFrpArch(); const DEFAULT_FRP_SERVER_ADDR = "81.70.134.9"; const DEFAULT_FRP_SERVER_PORT = 15443; const DEFAULT_SERVICE_NAME = "frpc"; @@ -212,6 +228,7 @@ function buildGlobals({ serverAddr, serverPort, token, tlsEnable, tcpMux, logFil module.exports = { DEFAULT_FRP_VERSION, DEFAULT_FRP_ARCH, + detectFrpArch, DEFAULT_FRP_SERVER_ADDR, DEFAULT_FRP_SERVER_PORT, DEFAULT_SERVICE_NAME, diff --git a/src/lib/tasks.js b/src/lib/tasks.js index 9f99ee2..c460afa 100644 --- a/src/lib/tasks.js +++ b/src/lib/tasks.js @@ -79,8 +79,11 @@ function gitPluginStep(name, repo, destination) { function condaInstallPlan(options = {}) { const installDir = options.installDir || path.join(os.homedir(), "miniconda3"); - const installer = "/tmp/Miniconda3-latest-Linux-x86_64.sh"; - const url = "https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh"; + // Miniconda asset naming uses uname-style arch tokens (x86_64 / aarch64). + const condaArch = os.arch() === "arm64" ? "aarch64" : "x86_64"; + const installerName = `Miniconda3-latest-Linux-${condaArch}.sh`; + const installer = `/tmp/${installerName}`; + const url = `https://repo.anaconda.com/miniconda/${installerName}`; const condaBin = path.join(installDir, "bin", "conda"); return {