#!/usr/bin/env bash # Point package managers at a China mirror before apt/apk install. # Gitea runners in CN are far too slow against deb.debian.org / # archive.ubuntu.com / dl-cdn.alpinelinux.org. # # CST_CI_MIRROR=https://mirrors.tuna.tsinghua.edu.cn scripts/ci_pkg_mirror.sh # Default mirror: Tsinghua TUNA. Override with CST_CI_MIRROR if needed. set -euo pipefail MIRROR="${CST_CI_MIRROR:-https://mirrors.tuna.tsinghua.edu.cn}" MIRROR="${MIRROR%/}" if [[ -f /etc/alpine-release ]]; then echo "==> apk mirror -> $MIRROR/alpine" if [[ -f /etc/apk/repositories ]]; then sed -i \ -e "s|https\\?://dl-cdn.alpinelinux.org/alpine|${MIRROR}/alpine|g" \ -e "s|https\\?://[^/[:space:]]*/alpine|${MIRROR}/alpine|g" \ /etc/apk/repositories fi exit 0 fi if ! command -v apt-get >/dev/null; then echo "==> no apt/apk; skip mirror" exit 0 fi # Debian vs Ubuntu: different path under the mirror root. id_like="" . /etc/os-release 2>/dev/null || true case "${ID:-}:${ID_LIKE:-}" in ubuntu:*|*ubuntu*) dist=ubuntu ;; debian:*|*debian*|*) dist=debian ;; esac echo "==> apt mirror -> $MIRROR/$dist (and ${dist}-security)" rewrite() { local f="$1" [[ -f "$f" ]] || return 0 # Classic one-line sources sed -i \ -e "s|https\\?://deb.debian.org/debian-security|${MIRROR}/debian-security|g" \ -e "s|https\\?://deb.debian.org/debian|${MIRROR}/debian|g" \ -e "s|https\\?://security.debian.org/debian-security|${MIRROR}/debian-security|g" \ -e "s|https\\?://security.debian.org|${MIRROR}/debian-security|g" \ -e "s|https\\?://archive.ubuntu.com/ubuntu|${MIRROR}/ubuntu|g" \ -e "s|https\\?://security.ubuntu.com/ubuntu|${MIRROR}/ubuntu|g" \ -e "s|https\\?://ports.ubuntu.com/ubuntu-ports|${MIRROR}/ubuntu-ports|g" \ "$f" # DEB822 (.sources): URIs: http://deb.debian.org/debian sed -i \ -e "s|^URIs: *https\\?://deb.debian.org/debian-security|URIs: ${MIRROR}/debian-security|g" \ -e "s|^URIs: *https\\?://deb.debian.org/debian|URIs: ${MIRROR}/debian|g" \ -e "s|^URIs: *https\\?://security.debian.org/debian-security|URIs: ${MIRROR}/debian-security|g" \ -e "s|^URIs: *https\\?://security.debian.org|URIs: ${MIRROR}/debian-security|g" \ -e "s|^URIs: *https\\?://archive.ubuntu.com/ubuntu|URIs: ${MIRROR}/ubuntu|g" \ -e "s|^URIs: *https\\?://security.ubuntu.com/ubuntu|URIs: ${MIRROR}/ubuntu|g" \ "$f" } rewrite /etc/apt/sources.list shopt -s nullglob for f in /etc/apt/sources.list.d/*.list /etc/apt/sources.list.d/*.sources; do rewrite "$f" done