Ubuntu 修改 apt 源(国内环境)经验分享
2026-07-23
基础学习笔记
00

目录

Ubuntu 修改 apt 源(国内环境)经验分享
一、先判断当前系统用哪种格式
版本代号对照表(写源时 Suites 字段要用)
二、老方式(22.04 及以前,传统 sources.list)
方法 A:整文件替换为国内源(以 22.04 jammy + 阿里云为例)
方法 B:sed 一行替换(不改结构,只换域名)
三、新方式(24.04+,DEB822 ubuntu.sources)
方法 A:直接改 URIs 字段(推荐,最稳)
方法 B:sed 一行替换(自动化 / 远程运维友好)
四、兼容脚本(自动判断新老方式,一条命令搞定)
五、常见问题排查
六、经验提醒
七、参考资料(来自「Linux运维」知识库)

Ubuntu 修改 apt 源(国内环境)经验分享

本文记录在国内网络环境下,把 Ubuntu 的 apt 软件源切换到国内镜像(如阿里云、华为云、清华、中科大)的几种做法。重点在于:新装系统可能是新格式(DEB822),老系统还是老格式(传统 sources.list),两种方式命令不一样,本文都覆盖,并给一个自动兼容脚本。照着做基本能一次换通。


一、先判断当前系统用哪种格式

Ubuntu 24.04 起官方默认改用 DEB822 格式,源文件从 /etc/apt/sources.list 转移到了 /etc/apt/sources.list.d/ubuntu.sources。判断方式:

bash
ls -l /etc/apt/sources.list.d/ubuntu.sources 2>/dev/null && echo "新格式(deb822)" || echo "老格式(sources.list)"
  • ubuntu.sources → 走「新方式(24.04+)」
  • 只有 /etc/apt/sources.list → 走「老方式(22.04 及以前)」

注意:部分云厂商精简镜像、Docker 容器、定制版仍保留老格式,别一上来就改 ubuntu.sources,先确认文件存在。

版本代号对照表(写源时 Suites 字段要用)

Ubuntu 版本代号(Suite)
20.04 LTSfocal
22.04 LTSjammy
24.04 LTSnoble
25.04(非 LTS)plucky
26.04 LTSresolute

国内主流镜像站地址(Ubuntu 路径统一为 /ubuntu/):

  • 阿里云:https://mirrors.aliyun.com/ubuntu/
  • 华为云:https://mirrors.huaweicloud.com/ubuntu/
  • 清华大学:https://mirrors.tuna.tsinghua.edu.cn/ubuntu/
  • 中科大:https://mirrors.ustc.edu.cn/ubuntu/

二、老方式(22.04 及以前,传统 sources.list

配置文件:/etc/apt/sources.list,传统单行格式 deb <地址> <代号> <组件>

方法 A:整文件替换为国内源(以 22.04 jammy + 阿里云为例)

bash
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak # 先备份 sudo tee /etc/apt/sources.list > /dev/null <<'EOF' deb https://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse deb https://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse deb https://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse deb https://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse EOF sudo apt update

换成华为云 / 清华 / 中科大,只需把上面 URL 换成对应镜像站地址;换成 20.04 则把 jammy 改成 focal

方法 B:sed 一行替换(不改结构,只换域名)

适合只想把官方域名替换成镜像,保留原文件其余内容:

bash
sudo sed -i 's|http://archive.ubuntu.com/ubuntu/|https://mirrors.aliyun.com/ubuntu/|g' /etc/apt/sources.list sudo sed -i 's|http://security.ubuntu.com/ubuntu/|https://mirrors.aliyun.com/ubuntu/|g' /etc/apt/sources.list sudo apt update

三、新方式(24.04+,DEB822 ubuntu.sources

配置文件:/etc/apt/sources.list.d/ubuntu.sources,键值对结构。默认的 ubuntu.sources 长这样(以 26.04 resolute 为例):

ini
Types: deb URIs: http://archive.ubuntu.com/ubuntu/ Suites: resolute resolute-updates resolute-backports Components: main restricted universe multiverse Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg Types: deb URIs: http://security.ubuntu.com/ubuntu/ Suites: resolute-security Components: main restricted universe multiverse Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg

方法 A:直接改 URIs 字段(推荐,最稳)

备份后,把两段 URIs 都换成镜像地址,其余不动。务必保留 Signed-By(绑定 GPG 密钥,丢了会报签名错误)。

阿里云(26.04 resolute):

bash
sudo cp /etc/apt/sources.list.d/ubuntu.sources /etc/apt/sources.list.d/ubuntu.sources.bak sudo tee /etc/apt/sources.list.d/ubuntu.sources > /dev/null <<'EOF' Types: deb URIs: https://mirrors.aliyun.com/ubuntu/ Suites: resolute resolute-updates resolute-backports Components: main restricted universe multiverse Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg Types: deb URIs: https://mirrors.aliyun.com/ubuntu/ Suites: resolute-security Components: main restricted universe multiverse Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg EOF sudo apt update

华为云(把 URIs 换成 https://mirrors.huaweicloud.com/ubuntu/ 即可,其余同上)。

如果是 24.04,把上面所有 resolute 换成 noble代号写错(比如把 noble 写成 plucky)会直接 404,这是最高频的坑。

方法 B:sed 一行替换(自动化 / 远程运维友好)

bash
sudo sed -i 's|http://archive.ubuntu.com/ubuntu/|https://mirrors.aliyun.com/ubuntu/|g' /etc/apt/sources.list.d/ubuntu.sources sudo sed -i 's|http://security.ubuntu.com/ubuntu/|https://mirrors.aliyun.com/ubuntu/|g' /etc/apt/sources.list.d/ubuntu.sources sudo apt update

换源后建议做一次升级:

bash
sudo apt full-upgrade -y # full-upgrade 比 upgrade 更智能,按新源依赖自动处理

四、兼容脚本(自动判断新老方式,一条命令搞定)

把下面脚本存成 change_apt_mirror.sh,在任何 Ubuntu 版本上都能跑——它会先检测 ubuntu.sources 是否存在,存在用新方式 sed,否则用老方式 sed**:

bash
#!/bin/bash # 用法:sudo bash change_apt_mirror.sh [镜像地址] MIRROR="${1:-https://mirrors.aliyun.com/ubuntu/}" if [ -f /etc/apt/sources.list.d/ubuntu.sources ]; then echo "检测到 DEB822 新格式,替换 ubuntu.sources ..." sudo sed -i "s|http://archive.ubuntu.com/ubuntu/|${MIRROR}|g" /etc/apt/sources.list.d/ubuntu.sources sudo sed -i "s|http://security.ubuntu.com/ubuntu/|${MIRROR}|g" /etc/apt/sources.list.d/ubuntu.sources else echo "检测到传统 sources.list 格式,替换 ..." sudo sed -i "s|http://archive.ubuntu.com/ubuntu/|${MIRROR}|g" /etc/apt/sources.list sudo sed -i "s|http://security.ubuntu.com/ubuntu/|${MIRROR}|g" /etc/apt/sources.list fi sudo apt update && echo "换源完成 ✅"

使用示例:

bash
sudo bash change_apt_mirror.sh https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ # 换清华源 sudo bash change_apt_mirror.sh # 不传参默认阿里云

五、常见问题排查

现象原因处理
404 Not Found / Unable to locate package代号写错(如 24.04 写成 plucky 而非 noble;26.04 写成 noble 而非 resolute)核对代号表,改对 Suites 后 apt update
GPG 签名错误 / 密钥过期Signed-By 行丢失或密钥损坏重新安装密钥环:sudo apt install --reinstall ubuntu-keyring
换源后装包依赖冲突本地已装版本高于镜像当前版本sudo apt --fix-broken install -y;再 sudo dpkg --configure -a
apt update 卡在官方域名改错了文件(比如系统其实是新格式,却只改了 sources.list)用第四节脚本重新检测替换;或回滚备份
cdrom:// 的行报错(多见于 Debian 初装)源里残留光盘源编辑文件把 deb cdrom://... 那行注释掉(加 #
回滚换源后异常老方式:sudo cp /etc/apt/sources.list.bak /etc/apt/sources.list;新方式:sudo cp /etc/apt/sources.list.d/ubuntu.sources.bak /etc/apt/sources.list.d/ubuntu.sources

六、经验提醒

  • 改之前一定先备份:新方式 ubuntu.sources.bak,老方式 sources.list.bak,一行回滚救命。
  • 代号比 URL 更容易出错:24.04 是 noble、26.04 是 resolute,别凭记忆乱填。不确定就用 lsb_release -cs 查当前代号。
  • 云主机优先同厂商内网源:阿里云 ECS 用阿里云源有内网加速(不占公网带宽),华为云同理。
  • apt update 是验收标准:输出开头显示你的镜像域名且无报错,就说明换通了。
  • 和初始化流程衔接:换源通常是新系统装好后的第一步,之后才是装 openssh-server、配网络。

七、参考资料(来自「Linux运维」知识库)

  • 《新装 Ubuntu 26.04 LTS 换源终极指南:阿里云/华为云 DEB822 配置教程》—— ClawLoader
  • 《CentOS系统更换阿里云yum源&Debian系统更换APT源》—— 云自由
  • 《各种编程语言的 国内镜像源 配置》—— 时空的窝(含清华/中科大镜像站地址)

ai协作,人工编辑

本文作者:张老板

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!