Skip to content

Instantly share code, notes, and snippets.

@jun9
Created August 9, 2025 03:50
Show Gist options
  • Save jun9/3e15af074efb3ddd9288a1e7cefd64f7 to your computer and use it in GitHub Desktop.
Save jun9/3e15af074efb3ddd9288a1e7cefd64f7 to your computer and use it in GitHub Desktop.
cn.ubuntu.source.sh
#!/bin/bash
# ========================================================
# 国内 Ubuntu 镜像源一键配置(无需注册版)
# 功能:更换 APT、Docker、pip 为国内高速源
# 特点:所有源均无需注册账号(使用中科大、网易、阿里云公共镜像)
# 支持:Ubuntu 20.04/22.04/24.04
# ========================================================
set -e # 出错退出
echo "🚀 开始配置国内镜像源(无需注册版本)..."
# ========================
# 1. 检查是否为 root
# ========================
if [ "$(id -u)" -ne 0 ]; then
echo "❌ 请以 root 权限运行此脚本!"
echo "建议:sudo bash $0"
exit 1
fi
# ========================
# 2. 获取 Ubuntu 版本代号(如 jammy, focal)
# ========================
if ! command -v lsb_release &> /dev/null; then
echo "⚠️ lsb_release 未安装,正在安装..."
apt-get update && apt-get install -y lsb-release
fi
UBUNTU_CODENAME=$(lsb_release -cs)
echo "📦 检测到系统版本代号: $UBUNTU_CODENAME"
# 支持的版本检查
case "$UBUNTU_CODENAME" in
focal|jammy|noble|bionic)
echo "✅ 支持的 Ubuntu 版本"
;;
*)
echo "❌ 当前版本 $UBUNTU_CODENAME 可能不受支持,继续尝试..."
;;
esac
# ========================
# 3. 备份并更换 APT 源为阿里云
# ========================
echo "🔁 配置 APT 源为阿里云..."
APT_LIST="/etc/apt/sources.list"
APT_BAK="$APT_LIST.bak.$(date +%Y%m%d%H%M%S)"
# 备份原文件
if [ ! -f "$APT_BAK" ]; then
cp "$APT_LIST" "$APT_BAK"
echo "✅ 已备份原 sources.list 到 $APT_BAK"
fi
# 写入阿里云源
cat > "$APT_LIST" << EOF
# 阿里云镜像源
deb https://mirrors.aliyun.com/ubuntu/ $UBUNTU_CODENAME main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ $UBUNTU_CODENAME-security main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ $UBUNTU_CODENAME-updates main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ $UBUNTU_CODENAME-backports main restricted universe multiverse
# 源码(可选)
deb-src https://mirrors.aliyun.com/ubuntu/ $UBUNTU_CODENAME main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ $UBUNTU_CODENAME-security main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ $UBUNTU_CODENAME-updates main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ $UBUNTU_CODENAME-backports main restricted universe multiverse
EOF
echo "✅ APT 源已更换为阿里云"
# 更新 apt 缓存
apt-get update && echo "🔄 APT 软件包列表已更新" || {
echo "⚠️ APT 更新失败,请检查网络"
exit 1
}
# ========================
# 4. 配置 Docker 镜像加速(无需注册:中科大 + 网易)
# ========================
echo "🐳 配置 Docker 镜像加速器(中科大 + 网易,无需注册)..."
DOCKER_DIR="/etc/docker"
DAEMON_JSON="$DOCKER_DIR/daemon.json"
mkdir -p "$DOCKER_DIR"
# 备份旧配置(如有)
if [ -f "$DAEMON_JSON" ]; then
cp "$DAEMON_JSON" "$DAEMON_JSON.bak"
echo "✅ 已备份旧 Docker 配置到 $DAEMON_JSON.bak"
fi
# 使用无需注册的公共镜像加速器
cat > "$DAEMON_JSON" << 'EOF'
{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"https://hub-mirror.c.163.com"
],
"insecure-registries": [],
"debug": false
}
EOF
echo "✅ Docker 镜像加速已配置:中科大 + 网易"
# 检查 Docker 是否安装并重启
if command -v docker &> /dev/null; then
systemctl daemon-reload
systemctl restart docker && echo "🔄 Docker 服务已重启并应用配置"
else
echo "💡 Docker 未安装,配置已写入 $DAEMON_JSON"
echo "📌 后续安装 Docker 后将自动使用加速器"
echo " 安装命令参考:https://docs.docker.com/engine/install/ubuntu/"
fi
# ========================
# 5. 配置 pip 使用阿里云源
# ========================
echo "📦 配置 pip 源为阿里云..."
PIPPATH_ROOT="/root/.pip"
PIPCONF_ROOT="$PIPPATH_ROOT/pip.conf"
mkdir -p "$PIPPATH_ROOT"
cat > "$PIPCONF_ROOT" << 'EOF'
[global]
index-url = https://mirrors.aliyun.com/pypi/simple/
trusted-host = mirrors.aliyun.com
timeout = 120
EOF
echo "✅ pip 配置完成:/root/.pip/pip.conf"
# 如果是通过 sudo 执行,也为普通用户配置
if [ -n "$SUDO_USER" ] && id "$SUDO_USER" &>/dev/null; then
USER_HOME=$(eval echo ~$SUDO_USER)
USER_PIP="$USER_HOME/.pip"
USER_CONF="$USER_PIP/pip.conf"
mkdir -p "$USER_PIP"
cp "$PIPCONF_ROOT" "$USER_CONF"
chown -R "$SUDO_USER:$SUDO_USER" "$USER_PIP"
echo "✅ 已为用户 $SUDO_USER 配置 pip"
fi
# ========================
# 6. 完成提示
# ========================
echo ""
echo "🎉 所有镜像源配置完成!(无需注册)"
echo ""
echo "📌 当前配置:"
echo " - APT: 阿里云"
echo " - Docker: 中科大 + 网易(无需注册)"
echo " - pip: 阿里云"
echo ""
echo "✅ 建议测试:"
echo " apt install curl -y"
echo " docker pull hello-world"
echo " pip install requests"
echo ""
echo "💡 提示:若后续安装 Docker,请确保使用官方或云厂商推荐方式"
echo "🔚 脚本执行完毕!"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment