Improve apt mirror logging and error messages

Standardize and clarify apt mirror diagnostics in misc/build.func and misc/install.func: update warning phrasing when apt-get update fails; change per-mirror failure messages from "Mirror X: <reason>" to "Mirror X failed (<reason>)"; change success messages to "CDN set to <mirror>: tests passed"; and add informational logs like "Attempting mirror: <mirror>" when trying alternate mirrors. These changes improve visibility into mirror selection and failure reasons during package update/installation.
This commit is contained in:
CanbiZ (MickLesk)
2026-03-26 15:44:58 +01:00
parent 5f25ce38b2
commit 937fd1cad4
2 changed files with 17 additions and 11 deletions

View File

@@ -203,7 +203,7 @@ pkg_update() {
if ! $STD apt-get update; then
local failed_mirror
failed_mirror=$(grep -m1 -oP '(?<=URIs: https?://)[^/]+' /etc/apt/sources.list.d/debian.sources 2>/dev/null || grep -m1 -oP '(?<=deb https?://)[^/]+' /etc/apt/sources.list 2>/dev/null || echo "unknown")
msg_warn "apt-get update failed on ${failed_mirror}, trying alternate mirrors..."
msg_warn "apt-get update failed (${failed_mirror}), trying alternate mirrors..."
local eu_mirrors="ftp.de.debian.org ftp.fr.debian.org ftp.nl.debian.org ftp.uk.debian.org ftp.ch.debian.org ftp.se.debian.org ftp.it.debian.org ftp.fau.de ftp.halifax.rwth-aachen.de debian.mirror.lrz.de mirror.init7.net debian.ethz.ch mirrors.dotsrc.org debian.mirrors.ovh.net"
local us_mirrors="ftp.us.debian.org ftp.ca.debian.org debian.csail.mit.edu mirrors.ocf.berkeley.edu mirrors.wikimedia.org debian.osuosl.org mirror.cogentco.com"
local ap_mirrors="ftp.au.debian.org ftp.jp.debian.org ftp.tw.debian.org ftp.kr.debian.org ftp.hk.debian.org ftp.sg.debian.org mirror.aarnet.edu.au mirror.nitc.ac.in"
@@ -240,16 +240,16 @@ pkg_update() {
local out
out=$(apt-get update 2>&1)
if echo "$out" | grep -qi "hashsum\|hash sum"; then
msg_warn "Mirror ${m}: hash mismatch, trying next..."
msg_warn "Mirror ${m} failed (hash mismatch)"
return 1
elif echo "$out" | grep -qi "SSL\|certificate"; then
msg_warn "Mirror ${m}: SSL/certificate error, trying next..."
msg_warn "Mirror ${m} failed (SSL/certificate error)"
return 1
elif echo "$out" | grep -q "^E:"; then
msg_warn "Mirror ${m}: apt-get update failed, trying next..."
msg_warn "Mirror ${m} failed (apt-get update error)"
return 1
else
msg_ok "Using mirror: ${m}"
msg_ok "CDN set to ${m}: tests passed"
return 0
fi
}
@@ -273,6 +273,7 @@ pkg_update() {
others_pick=$(printf '%s\n' $others_ok | shuf | head -3 | xargs)
for mirror in $others_pick; do
msg_info "Attempting mirror: ${mirror}"
if _try_apt_mirror "$mirror"; then
apt_ok=true
break
@@ -282,6 +283,7 @@ pkg_update() {
# Phase 2: Try ftp.debian.org
if [[ "$apt_ok" != true ]]; then
if timeout 2 bash -c "echo >/dev/tcp/ftp.debian.org/80" 2>/dev/null; then
msg_info "Attempting mirror: ftp.debian.org"
if _try_apt_mirror "ftp.debian.org"; then
apt_ok=true
fi
@@ -296,6 +298,7 @@ pkg_update() {
regional_pick=$(printf '%s\n' $regional_ok | shuf | head -3 | xargs)
for mirror in $regional_pick; do
msg_info "Attempting mirror: ${mirror}"
if _try_apt_mirror "$mirror"; then
apt_ok=true
break