#!/bin/bash # ================================================================= # Debian 11 APT 源自动配置脚本 # 功能: # 1. 备份现有的 sources.list 文件。 # 2. 使用阿里云镜像源覆盖 sources.list。 # 3. 执行 apt update。 # 4. 安装 curl。 # ================================================================= # --- 脚本配置 --- SOURCES_FILE="/etc/apt/sources.list" BACKUP_FILE="${SOURCES_FILE}.bak.$(date +%Y%m%d-%H%M%S)" # 使用 here document 定义新的源内容 # 优点是格式清晰,易于维护 read -r -d '' NEW_SOURCES_CONTENT << EOF # 默认注释了源码镜像,以提高 apt update 速度,如有需要可自行取消注释 deb http://mirrors.aliyun.com/debian/ bullseye main contrib non-free # deb-src http://mirrors.aliyun.com/debian/ bullseye main contrib non-free deb http://mirrors.aliyun.com/debian/ bullseye-updates main contrib non-free # deb-src http://mirrors.aliyun.com/debian/ bullseye-updates main contrib non-free deb http://mirrors.aliyun.com/debian-security/ bullseye-security main contrib non-free # deb-src http://mirrors.aliyun.com/debian-security/ bullseye-security main contrib non-free EOF # --- 脚本开始 --- # 步骤 0: 检查权限 echo "===== [0/4] 检查运行权限 =====" if [ "$(id -u)" -ne 0 ]; then echo -e "\033[0;31m错误:此脚本必须以 root 用户身份运行。\033[0m" >&2 echo "请使用 'sudo ./update_sources.sh' 来执行。" >&2 exit 1 fi echo "权限检查通过。" echo "" # 步骤 1: 备份原始文件 echo "===== [1/4] 备份原始源文件 =====" if [ -f "$SOURCES_FILE" ]; then cp "$SOURCES_FILE" "$BACKUP_FILE" echo "原始文件已备份到: $BACKUP_FILE" else echo "原始文件 $SOURCES_FILE 不存在,将直接创建新文件。" fi echo "" # 步骤 2: 写入新的源地址 echo "===== [2/4] 写入新的阿里云镜像源 =====" # 使用 tee 命令将内容写入文件,同时也可以在屏幕上显示 # > "$SOURCES_FILE" 表示覆盖整个文件 echo "$NEW_SOURCES_CONTENT" > "$SOURCES_FILE" echo "新的源配置已成功写入到 $SOURCES_FILE。" echo "新文件内容如下:" echo "----------------------------------------" cat "$SOURCES_FILE" echo "----------------------------------------" echo "" # 步骤 3: 更新软件包列表 echo "===== [3/4] 执行 apt update =====" apt-get update # 检查 apt-get update 是否成功 if [ $? -ne 0 ]; then echo "" echo -e "\033[0;31m错误:'apt-get update' 执行失败!\033[0m" >&2 echo "请检查您的网络连接或源配置是否正确。" >&2 echo "原始配置文件已备份在 $BACKUP_FILE ,您可以手动恢复。" >&2 exit 1 fi echo "软件包列表更新成功。" echo "" # 步骤 4: 安装 curl echo "===== [4/4] 安装 curl =====" apt-get install -y curl # 检查 curl 是否安装成功 if ! command -v curl &> /dev/null; then echo "" echo -e "\033[0;31m错误:curl 安装失败!\033[0m" >&2 exit 1 fi echo -e "\033[0;32mCurl 已成功安装!\033[0m" curl --version echo "" echo -e "\033[0;32m脚本执行完毕,所有操作已成功完成!\033[0m"