mirror of
https://github.com/wnlen/clash-for-linux.git
synced 2026-10-10 04:03:04 +08:00
Skip GEO predownload by default
This commit is contained in:
@@ -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` 中指定自定义加速前缀:
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
Reference in New Issue
Block a user