From 87a5bfa2c8e97c11508af3eb10a7a50d0c1d2cdc Mon Sep 17 00:00:00 2001 From: yoyo Date: Wed, 3 Dec 2025 19:28:41 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E8=AF=AD=E6=B3=95=E9=94=99?= =?UTF-8?q?=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .DS_Store | Bin 0 -> 8196 bytes .gitignore | 1 + install.sh | 63 +++++++++++++++++++++++++++++++++++++++-------------- 3 files changed, 48 insertions(+), 16 deletions(-) create mode 100644 .DS_Store create mode 100644 .gitignore diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..6bdce3d067fe6cf319b27053199340fc3633e788 GIT binary patch literal 8196 zcmeHMy>HV%6o1zQ;-~^;04ZVsOI@SpqopOVgb=pEfT0}#1-p(?D~`|DPD2$%iclx` z1Nb)>7!Vs1>hapb%IF1n`~Bns&;2Ur5!c5KstQ zNCepZpkrsWA?ZX=es$o$O8}%vp6#@!@Gy<%4&%!!%!GS1VzgxcRgi)pPi>zd_ zmoDdW`P^#mrEx%qMr1~VuxSR*+3G2!t~H&T)~?eTwhPxDP%knauM=99!$o*i;qLkRMDE#EE_N26-}c1f>pY>!L&s9vj-^v!y0JkD#^*UI;vw0myfqwhot zL|y}MWg(^a@qFBF)!3(fpX#*)v>sAmH31)MA~< znO+ZdDEPSca6N<_`~`T(eT0_6cfe&7Y?PN1kvx`>$eiY~g(t6ZpDfM*eVgF^Cubm) zSK>5~+A$)M(utpo-&cPe%5!mo-u#4|rI$D>Dl&zDLg3s8kZj9nHPOxV zkLpE_tk%}CzrxNM)0+s&O>jtj2*CC1ABH&BQI**=B%KI~9BhC6Lx6h!bKKQ%u@U$K DbmD9^ literal 0 HcmV?d00001 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c7ec943 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +test.log diff --git a/install.sh b/install.sh index b216b90..1bd0f4c 100755 --- a/install.sh +++ b/install.sh @@ -768,9 +768,25 @@ build_from_source() { export http_proxy="${GITHUB_PROXY}/" export https_proxy="${GITHUB_PROXY}/" + # 配置 Git 重写 golang.org 和 google.golang.org 的 URL(通过 GitHub 代理) + # golang.org/x/* 包在 GitHub 上的镜像路径是 github.com/golang/x-* + # 例如:golang.org/x/net -> github.com/golang/net + sudo git config --global url."${GITHUB_PROXY}/https://github.com/golang/".insteadOf "https://golang.org/x/" 2>/dev/null || true + git config --global url."${GITHUB_PROXY}/https://github.com/golang/".insteadOf "https://golang.org/x/" 2>/dev/null || true + + # google.golang.org 也可以通过 GitHub 代理 + # 例如:google.golang.org/protobuf -> github.com/protocolbuffers/protobuf-go + sudo git config --global url."${GITHUB_PROXY}/https://github.com/protocolbuffers/".insteadOf "https://google.golang.org/protobuf" 2>/dev/null || true + git config --global url."${GITHUB_PROXY}/https://github.com/protocolbuffers/".insteadOf "https://google.golang.org/protobuf" 2>/dev/null || true + + # 设置环境变量,让 Go 通过代理访问这些域名 + # 注意:这需要 Go 支持 HTTP_PROXY,我们已经设置了 + # 添加到 Go 环境变量中 GO_ENV="$GO_ENV HTTP_PROXY=${GITHUB_PROXY}/ HTTPS_PROXY=${GITHUB_PROXY}/ http_proxy=${GITHUB_PROXY}/ https_proxy=${GITHUB_PROXY}/" + echo -e "${BLUE}已配置 golang.org 和 google.golang.org 通过 GitHub 代理访问${NC}" + echo -e "${BLUE}已配置 Git 和 Go 使用 GitHub 代理加速${NC}" else echo -e "${YELLOW}⚠ 未找到可用的 GitHub 代理,将直接访问 GitHub${NC}" @@ -825,7 +841,12 @@ build_from_source() { # 禁用 GOSUMDB 以避免连接 proxy.golang.org(在中国大陆通常无法访问) # 如果必须启用校验和,可以使用 GOSUMDB=sum.golang.google.cn,但可能仍有问题 - GO_ENV="$GO_PATH_ENV GOPROXY=${GO_PROXY} GOSUMDB=off GOTIMEOUT=60 GONOPROXY= GONOSUMDB= GOPRIVATE=*" + # 如果配置了 GitHub 代理,添加到环境变量中 + if [ -n "$GITHUB_PROXY" ]; then + GO_ENV="$GO_PATH_ENV GOPROXY=${GO_PROXY} GOSUMDB=off GOTIMEOUT=60 GONOPROXY= GONOSUMDB= GOPRIVATE=* HTTP_PROXY=${GITHUB_PROXY}/ HTTPS_PROXY=${GITHUB_PROXY}/ http_proxy=${GITHUB_PROXY}/ https_proxy=${GITHUB_PROXY}/" + else + GO_ENV="$GO_PATH_ENV GOPROXY=${GO_PROXY} GOSUMDB=off GOTIMEOUT=60 GONOPROXY= GONOSUMDB= GOPRIVATE=*" + fi # 使用 go env -w 永久设置环境变量(避免被其他配置覆盖) echo -e "${BLUE}永久设置 Go 环境变量(避免连接 proxy.golang.org)...${NC}" @@ -965,9 +986,13 @@ build_from_source() { DOWNLOAD_END_TIME=$(date +%s) DOWNLOAD_DURATION=$((DOWNLOAD_END_TIME - DOWNLOAD_START_TIME)) - # 统计下载信息(从输出中统计) - TOTAL_PACKAGES=$(grep -c "go: downloading" "$DOWNLOAD_LOG" 2>/dev/null || echo "0") - SUCCESS_COUNT=$(grep -c "go: downloading" "$DOWNLOAD_LOG" 2>/dev/null || echo "0") + # 统计下载信息(从输出中统计,去除换行符) + TOTAL_PACKAGES=$(grep -c "go: downloading" "$DOWNLOAD_LOG" 2>/dev/null | tr -d '\n' || echo "0") + SUCCESS_COUNT=$(grep -c "go: downloading" "$DOWNLOAD_LOG" 2>/dev/null | tr -d '\n' || echo "0") + + # 确保是数字 + TOTAL_PACKAGES=${TOTAL_PACKAGES:-0} + SUCCESS_COUNT=${SUCCESS_COUNT:-0} echo "" echo -e "${GREEN}✓ 依赖下载完成${NC}" @@ -976,7 +1001,7 @@ build_from_source() { echo -e " 成功下载: ${GREEN}${SUCCESS_COUNT}${NC}" echo -e " 总耗时: ${GREEN}${DOWNLOAD_DURATION}${NC}秒" - if [ "$DOWNLOAD_DURATION" -gt 0 ] && [ "$SUCCESS_COUNT" -gt 0 ]; then + if [ "$DOWNLOAD_DURATION" -gt 0 ] && [ "$SUCCESS_COUNT" -gt 0 ] 2>/dev/null; then AVG_SPEED=$(echo "scale=2; $SUCCESS_COUNT / $DOWNLOAD_DURATION" | bc 2>/dev/null || echo "0") echo -e " 平均速度: ${GREEN}${AVG_SPEED}${NC} 包/秒" fi @@ -1000,8 +1025,9 @@ build_from_source() { DOWNLOAD_END_TIME=$(date +%s) DOWNLOAD_DURATION=$((DOWNLOAD_END_TIME - DOWNLOAD_START_TIME)) - # 统计已下载的包 - DOWNLOADED_COUNT=$(grep -c "go: downloading" "$DOWNLOAD_LOG" 2>/dev/null || echo "0") + # 统计已下载的包(去除换行符) + DOWNLOADED_COUNT=$(grep -c "go: downloading" "$DOWNLOAD_LOG" 2>/dev/null | tr -d '\n' || echo "0") + DOWNLOADED_COUNT=${DOWNLOADED_COUNT:-0} if [ "$DOWNLOAD_EXIT_CODE" = "124" ]; then echo "" @@ -1116,18 +1142,23 @@ build_from_source() { kill "$PROGRESS_PID2" 2>/dev/null || true wait "$PROGRESS_PID2" 2>/dev/null || true rm -f "$PIPE_FILE" 2>/dev/null || true - # 停止进度显示进程 - touch "$DOWNLOAD_PROGRESS_LOG.done2" - sleep 1 - kill "$PROGRESS_PID2" 2>/dev/null || true - wait "$PROGRESS_PID2" 2>/dev/null || true DOWNLOAD_END_TIME=$(date +%s) DOWNLOAD_DURATION=$((DOWNLOAD_END_TIME - DOWNLOAD_START_TIME)) - # 统计下载信息 - TOTAL_PACKAGES=$(grep -c '"Path":' "$DOWNLOAD_LOG" 2>/dev/null || echo "0") - SUCCESS_COUNT=$(grep -c '"Version":' "$DOWNLOAD_LOG" 2>/dev/null || echo "0") + # 统计下载信息(去除换行符) + TOTAL_PACKAGES=$(grep -c '"Path":' "$DOWNLOAD_LOG" 2>/dev/null | tr -d '\n' || echo "0") + SUCCESS_COUNT=$(grep -c '"Version":' "$DOWNLOAD_LOG" 2>/dev/null | tr -d '\n' || echo "0") + + # 如果没有 JSON 格式,尝试从普通输出统计 + if [ "$TOTAL_PACKAGES" = "0" ] || [ -z "$TOTAL_PACKAGES" ]; then + TOTAL_PACKAGES=$(grep -c "go: downloading" "$DOWNLOAD_LOG" 2>/dev/null | tr -d '\n' || echo "0") + SUCCESS_COUNT=$TOTAL_PACKAGES + fi + + # 确保是数字 + TOTAL_PACKAGES=${TOTAL_PACKAGES:-0} + SUCCESS_COUNT=${SUCCESS_COUNT:-0} echo "" echo -e "${GREEN}✓ 依赖下载完成${NC}" @@ -1136,7 +1167,7 @@ build_from_source() { echo -e " 成功下载: ${GREEN}${SUCCESS_COUNT}${NC}" echo -e " 总耗时: ${GREEN}${DOWNLOAD_DURATION}${NC}秒" - if [ "$DOWNLOAD_DURATION" -gt 0 ] && [ "$SUCCESS_COUNT" -gt 0 ]; then + if [ "$DOWNLOAD_DURATION" -gt 0 ] && [ "$SUCCESS_COUNT" -gt 0 ] 2>/dev/null; then AVG_SPEED=$(echo "scale=2; $SUCCESS_COUNT / $DOWNLOAD_DURATION" | bc 2>/dev/null || echo "0") echo -e " 平均速度: ${GREEN}${AVG_SPEED}${NC} 包/秒" fi