Created
August 9, 2025 03:50
-
-
Save jun9/3e15af074efb3ddd9288a1e7cefd64f7 to your computer and use it in GitHub Desktop.
cn.ubuntu.source.sh
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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