ubuntu2204换腾讯云的apt源

!/bin/bash

switch-to-tencent-mirrors.sh

将Ubuntu APT源切换为腾讯云镜像源

支持Ubuntu 18.04/20.04/22.04

set -e

颜色定义

GREEN="\033[0;32m"
YELLOW="\033[1;33m"
RED="\033[0;31m"
BLUE="\033[0;34m"
NC="\033[0m" # No Color

打印信息函数

log_info() {
echo -e "\({GREEN}[INFO]\){NC} $1"
}

log_warn() {
echo -e "\({YELLOW}[WARN]\){NC} $1"
}

log_error() {
echo -e "\({RED}[ERROR]\){NC} $1"
}

log_step() {
echo -e "\({BLUE}[STEP]\){NC} $1"
}

检查是否以root权限运行

if [[ $EUID -ne 0 ]]; then
log_error "此脚本必须以root权限运行"
exit 1
fi

检测Ubuntu版本

UBUNTU_VERSION=\((lsb_release -cs) if [[ -z "\)UBUNTU_VERSION" ]]; then
log_error "无法检测到Ubuntu版本"
exit 1
fi

log_info "检测到Ubuntu版本: $UBUNTU_VERSION"

支持的版本列表

SUPPORTED_VERSIONS=("bionic" "focal" "jammy")
IS_SUPPORTED=false

for version in "\({SUPPORTED_VERSIONS[@]}"; do if [[ "\)UBUNTU_VERSION" == "$version" ]]; then
IS_SUPPORTED=true
break
fi
done

if [[ "$IS_SUPPORTED" == "false" ]]; then
log_warn "不支持的Ubuntu版本: $UBUNTU_VERSION,但仍将尝试替换源"
fi

备份原始sources.list

log_step "备份原始sources.list文件"
BACKUP_FILE="/etc/apt/sources.list.bak.\((date +%Y%m%d%H%M%S)" cp /etc/apt/sources.list "\)BACKUP_FILE"
log_info "原始sources.list已备份到: $BACKUP_FILE"

替换为腾讯云镜像源

log_step "替换为腾讯云镜像源"

case "$UBUNTU_VERSION" in
"bionic") # Ubuntu 18.04
cat > /etc/apt/sources.list << EOF

默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释

deb https://mirrors.cloud.tencent.com/ubuntu/ bionic main restricted universe multiverse

deb-src https://mirrors.cloud.tencent.com/ubuntu/ bionic main restricted universe multiverse

deb https://mirrors.cloud.tencent.com/ubuntu/ bionic-updates main restricted universe multiverse

deb-src https://mirrors.cloud.tencent.com/ubuntu/ bionic-updates main restricted universe multiverse

deb https://mirrors.cloud.tencent.com/ubuntu/ bionic-backports main restricted universe multiverse

deb-src https://mirrors.cloud.tencent.com/ubuntu/ bionic-backports main restricted universe multiverse

deb https://mirrors.cloud.tencent.com/ubuntu/ bionic-security main restricted universe multiverse

deb-src https://mirrors.cloud.tencent.com/ubuntu/ bionic-security main restricted universe multiverse

EOF
;;

"focal") # Ubuntu 20.04
cat > /etc/apt/sources.list << EOF

默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释

deb https://mirrors.cloud.tencent.com/ubuntu/ focal main restricted universe multiverse

deb-src https://mirrors.cloud.tencent.com/ubuntu/ focal main restricted universe multiverse

deb https://mirrors.cloud.tencent.com/ubuntu/ focal-updates main restricted universe multiverse

deb-src https://mirrors.cloud.tencent.com/ubuntu/ focal-updates main restricted universe multiverse

deb https://mirrors.cloud.tencent.com/ubuntu/ focal-backports main restricted universe multiverse

deb-src https://mirrors.cloud.tencent.com/ubuntu/ focal-backports main restricted universe multiverse

deb https://mirrors.cloud.tencent.com/ubuntu/ focal-security main restricted universe multiverse

deb-src https://mirrors.cloud.tencent.com/ubuntu/ focal-security main restricted universe multiverse

EOF
;;

"jammy") # Ubuntu 22.04
cat > /etc/apt/sources.list << EOF

默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释

deb https://mirrors.cloud.tencent.com/ubuntu/ jammy main restricted universe multiverse

deb-src https://mirrors.cloud.tencent.com/ubuntu/ jammy main restricted universe multiverse

deb https://mirrors.cloud.tencent.com/ubuntu/ jammy-updates main restricted universe multiverse

deb-src https://mirrors.cloud.tencent.com/ubuntu/ jammy-updates main restricted universe multiverse

deb https://mirrors.cloud.tencent.com/ubuntu/ jammy-backports main restricted universe multiverse

deb-src https://mirrors.cloud.tencent.com/ubuntu/ jammy-backports main restricted universe multiverse

deb https://mirrors.cloud.tencent.com/ubuntu/ jammy-security main restricted universe multiverse

deb-src https://mirrors.cloud.tencent.com/ubuntu/ jammy-security main restricted universe multiverse

EOF
;;

*)
# 对于未明确支持的版本,尝试通用替换
log_warn "使用通用方法替换源,可能不完全适配您的系统版本"
sed -i "s@http://(archive|security).ubuntu.com/ubuntu/@https://mirrors.cloud.tencent.com/ubuntu/@g" /etc/apt/sources.list
;;
esac

log_info "已成功切换到腾讯云镜像源"

处理APISIX等特殊仓库

log_step "检查并处理特殊仓库"
if grep -q "repos.apiseven.com" /etc/apt/sources.list.d/*.list 2>/dev/null; then
log_info "检测到APISIX仓库,尝试保留"
# 由于APISIX可能没有镜像,我们保留它
fi

更新源

log_step "更新APT源索引"
log_info "正在执行 apt update..."
apt update

log_info "源已更新完成,您现在可以继续安装软件包"
log_info "如果遇到问题,可以使用备份文件恢复: cp $BACKUP_FILE /etc/apt/sources.list"

提示可以安装APISIX地理位置模块了

log_info "现在您可以运行APISIX GeoDefender安装脚本: bash /opt/install-apisix-geo-defender.sh"

exit 0

posted @ 2025-05-28 07:57  昆仑葫芦  阅读(167)  评论(0)    收藏  举报