Skip GEO predownload by default

This commit is contained in:
Arvin
2026-06-25 10:34:57 +08:00
parent 12b465c02e
commit b1eb86038a
3 changed files with 66 additions and 2 deletions
+3 -1
View File
@@ -293,15 +293,17 @@ MIHOMO_DOWNLOAD_BASE=https://github.com/MetaCubeX/mihomo/releases/download
CLASH_DOWNLOAD_BASE=https://github.com/WindSpiritSR/clash/releases/download CLASH_DOWNLOAD_BASE=https://github.com/WindSpiritSR/clash/releases/download
CLASH_BUNDLED_ASSET_ENABLED=true CLASH_BUNDLED_ASSET_ENABLED=true
CLASH_SHELL_AUTO_RESTORE_PROXY=true CLASH_SHELL_AUTO_RESTORE_PROXY=true
CLASH_PREDOWNLOAD_GEO=false
``` ```
按需设置即可,不需要每项都写。 按需设置即可,不需要每项都写。
- `CLASH_SHELL_AUTO_RESTORE_PROXY`:控制登录 Shell 是否自动恢复上次 `clashon` 写入的代理变量。默认 `true` 保持兼容;如果不希望 SSH 远程登录后自动带上 `http_proxy` / `https_proxy`,设为 `false`,之后仍可手动执行 `clashon`。 - `CLASH_SHELL_AUTO_RESTORE_PROXY`:控制登录 Shell 是否自动恢复上次 `clashon` 写入的代理变量。默认 `true` 保持兼容;如果不希望 SSH 远程登录后自动带上 `http_proxy` / `https_proxy`,设为 `false`,之后仍可手动执行 `clashon`。
- `CLASH_PREDOWNLOAD_GEO`:控制安装期是否预下载 GEO 数据。默认 `false`,临时部署时不会下载 `Country.mmdb`、`geoip.metadb`、`GeoIP.dat`、`GeoSite.dat` 等大文件;如果希望离线预置这些资源,可设为 `true`。注意:当最终运行配置实际使用 `GEOIP` 规则时,启动前仍会按需准备 `Country.mmdb`,否则 Mihomo 无法可靠加载该配置。
#### GitHub 下载加速 #### GitHub 下载加速
所有来自 GitHub 的资源(内核、GEO 数据、yq、subconverter、Dashboard)在下载时会自动尝试内置镜像池(`gh-proxy.org`、`ghfast.top`、`ghproxy.net`、`kkgithub.com`),无需额外配置即可加速。 所有来自 GitHub 的资源(内核、按需 GEO 数据、yq、subconverter、Dashboard)在下载时会自动尝试内置镜像池(`gh-proxy.org`、`ghfast.top`、`ghproxy.net`、`kkgithub.com`),无需额外配置即可加速。
如果默认镜像不满足需求,可在 `.env` 中指定自定义加速前缀: 如果默认镜像不满足需求,可在 `.env` 中指定自定义加速前缀:
+1 -1
View File
@@ -14,7 +14,7 @@ GEO_ASSET_DOWNLOADS=(
) )
resolve_geo_assets() { resolve_geo_assets() {
case "${CLASH_PREDOWNLOAD_GEO:-true}" in case "${CLASH_PREDOWNLOAD_GEO:-false}" in
0|false|no|off|disable|disabled|FALSE|NO|OFF) return 0 ;; 0|false|no|off|disable|disabled|FALSE|NO|OFF) return 0 ;;
esac esac
@@ -0,0 +1,62 @@
#!/usr/bin/env bash
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_DIR="$(cd "$SCRIPT_DIR/../.." && pwd)"
# shellcheck source=scripts/core/runtime.sh
source "$PROJECT_DIR/scripts/core/runtime.sh"
tmp_dir="$(mktemp -d)"
trap 'rm -rf "$tmp_dir"' EXIT
RUNTIME_DIR="$tmp_dir/runtime"
RESOURCE_DIR="$tmp_dir/resources"
mkdir -p "$RUNTIME_DIR" "$RESOURCE_DIR"
download_log="$tmp_dir/downloads"
copy_log="$tmp_dir/copies"
: > "$download_log"
: > "$copy_log"
copy_bundled_asset() {
printf '%s\n' "$*" >> "$copy_log"
return 1
}
download_file() {
local url="$1"
local out="$2"
local asset_name="$3"
printf '%s %s %s\n' "$asset_name" "$url" "$out" >> "$download_log"
mkdir -p "$(dirname "$out")"
printf 'mock\n' > "$out"
}
assert_download_count() {
local name="$1"
local expected="$2"
local actual
actual="$(wc -l < "$download_log" | tr -d ' ')"
if [ "$actual" != "$expected" ]; then
echo "not ok - $name: got $actual downloads, expected $expected" >&2
sed 's/^/ /' "$download_log" >&2
return 1
fi
echo "ok - $name"
}
unset CLASH_PREDOWNLOAD_GEO
resolve_geo_assets
assert_download_count "default skips install-time GEO predownload" 0
: > "$download_log"
CLASH_PREDOWNLOAD_GEO=false resolve_geo_assets
assert_download_count "explicit false skips install-time GEO predownload" 0
: > "$download_log"
CLASH_PREDOWNLOAD_GEO=true resolve_geo_assets
assert_download_count "explicit true predownloads GEO assets" 5