刚接触Ubuntu的时候,最让人崩溃的一件事就是装软件。跑到一个教程里看到sudo apt install后面跟个包名,结果进度条就像被什么东西卡住一样,在 0% 附近磨磨蹭蹭,偶尔跳到几十KB/s,等几分钟然后直接给你报个网络超时。这是很多新人的第一道坎:apt 默认连的是 Ubuntu 官方源,服务器在海外,国内访问就是慢。解决办法其实很直接——把源地址换成国内镜像站的,也就是常说的给 apt 换国内源。这篇文章就把换源的原理、具体操作步骤、还有各种常见坑一次说清楚,涵盖 Ubuntu 24.04、22.04、20.04 等主流版本,不管你是自己电脑上装的桌面版、虚拟机里的系统,还是 WSL 里的 Ubuntu,都适用。
1. 换源之前,先把这几件事弄明白
1.1 apt 源到底是个什么东西
apt 是 Ubuntu 的软件包管理器,你执行apt install 软件名的时候,它其实是从一个“软件仓库”里下载安装包。这个仓库的地址列表,就是所谓的“源”。Ubuntu 默认帮你配置好的源,地址指向archive.ubuntu.com或security.ubuntu.com,这些服务器都在国外。
源的配置文件传统上放在/etc/apt/sources.list这个文件里,另外/etc/apt/sources.list.d/目录下还会有一些第三方软件的独立配置文件,比如 Docker、VS Code 这些软件安装时加的源。系统更新软件包索引时,会把这些位置全部读一遍。
传统sources.list里一行一个源,格式长这样:
deb http://archive.ubuntu.com/ubuntu/ jammy main restricted universe multiverse拆开来看:deb表示这是二进制软件包仓库,deb-src则是源代码包仓库;中间是一段 URL 地址;jammy是 Ubuntu 的版本代号,决定了这套源属于哪个系统版本;最后那几个单词是组件分类。main是官方维护的自由软件,universe是社区维护的自由软件,restricted是专有驱动等受限软件,multiverse是包含版权或法律限制的软件。
在 Ubuntu 22.04 及更早的版本里,源文件是上面这种单行格式;到了 Ubuntu 24.04,系统改用了一种叫 deb822 的新格式,配置文件路径也变了,放在/etc/apt/sources.list.d/ubuntu.sources。这个格式看起来更像 INI 文件,每段用Types、URIs、Suites、Components等字段描述一套源。很多人抄网上的老教程,改 24.04 时发现找不到sources.list就懵了,其实就是这个原因。
1.2 为什么换了国内源就能变快
官方源服务器在海外,意味着每次下载都要跨越大半个地球的网络路径,中间还要经过国际出口,高峰期丢包率高、带宽有限,速度自然惨不忍睹。
国内镜像站做的事情,简单说就是“搬运工”。它们在位置上来讲离你更近,而且通过这种大量服务器同步保持着和 Ubuntu 官方仓库的一致,带宽资源也充足。你从旁边的镜像站下载,网络路径短了,瓶颈少了,速度自然上去。
打个比方:官方源就像你在国内想去楼下便利店买瓶水,但是必须先坐飞机去国外仓库提货再飞回来,中间还各种堵车;国内镜像站就是你家楼下新开的分店,货物定期从总仓库补过来,你下楼就能买到。
换源后实测下来的体感差距是巨大的。我之前在一台普通云服务器上,用官方源跑apt update经常要十几分钟,换成国内镜像后一分钟内搞定;下载一个几十MB的软件包,速度能差几十倍。但你也要理解,换源解决的是“下载慢”的问题,它和代理是两回事,不需要也不应该通过任何代理类工具去实现,合规的网络优化路径就是直接使用国内镜像源。
2. 镜像站选型:清华、阿里、中科大有啥区别
2.1 主流国内 apt 镜像源横向对比
国内有不少高校和云厂商都维护着 Ubuntu 镜像,比较常用的是这么几个:
| 镜像站 | 访问地址 | 适合场景 | 特点 |
|---|---|---|---|
| 清华 TUNA | mirrors.tuna.tsinghua.edu.cn | 校园网、教育网、个人开发者 | 同步频率高,带宽大,各类 Linux 发行版镜像都有 |
| 阿里云 | mirrors.aliyun.com | 阿里云服务器、公网环境 | 云厂商维护,国内节点多,速度快,稳定 |
| 中科大 USTC | mirrors.ustc.edu.cn | 校园网、公网 | 老牌镜像站,文档完善,覆盖大量发行版 |
| 华为云 | mirrors.huaweicloud.com | 华为云服务器、公网 | 跟阿里类似,云厂商资源充足 |
| 网易 | mirrors.163.com | 公网 | 较老牌,更新速度稍逊于前几个 |
如果你用的是阿里云、腾讯云、华为云这类国内云服务器,其实不用纠结,直接选同厂商的镜像站一般效果最好,因为云厂商内网访问自己家的镜像往往有加速。如果是在个人电脑或者虚拟机里,清华、中科大这种高校镜像也很稳。我自己的选择习惯是:云服务器优先用阿里云/华为云,本地电脑用清华源,基本没出过问题。
选好镜像站后,可以先测一下你机器到它的连通性。比如想测清华源,就执行:
curl -I https://mirrors.tuna.tsinghua.edu.cn/ubuntu/看返回的 HTTP 状态码是不是 200,以及响应时间怎么样。这个过程可以对比几个镜像站,挑速度最好的用。
2.2 版本代号与源地址之间的关键对应
换源时最容易犯的一个错误,就是把别的 Ubuntu 版本的源地址硬套到自己系统上,结果刷出来一堆 404。根源在于 Ubuntu 的源地址里包含版本代号,不同版本代号不同,软件源内容也不一样。
几个主流版本的对应关系:
| Ubuntu 版本 | 版本代号 | 源地址里写的值 |
|---|---|---|
| 18.04 | bionic | bionic |
| 20.04 | focal | focal |
| 22.04 | jammy | jammy |
| 24.04 | noble | noble |
| 24.10 | oracular | oracular |
怎么看自己系统是什么版本?执行:
lsb_release -a或者看/etc/os-release文件也行。记住你系统对应的代号,后面配置模板里凡是出现jammy、noble这样的词,都改成你自己的代号。老版本系统比如 18.04,有的镜像站已经停止同步或者移到了旧版本目录,这种时候更要以镜像站官方文档为准,不要照抄新版本的模板。
3. 完整实操:Ubuntu 24.04 和 22.04 一键换源
3.1 改源之前,先把原始文件备份好
换源这个操作本质是修改系统配置文件。改之前做好备份是最基本的安全意识,万一改错了,或者系统升级时出了兼容性问题,还能一键还原。
如果你用的是 Ubuntu 24.04,配置文件在/etc/apt/sources.list.d/ubuntu.sources,备份命令:
sudo cp /etc/apt/sources.list.d/ubuntu.sources /etc/apt/sources.list.d/ubuntu.sources.bak如果是 22.04 及更早版本,备份文件是:
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak备份文件放在同目录下就行,后面想恢复就直接cp回去。顺便提醒一句,换源前先ls /etc/apt/看一眼目录结构,明确自己的系统是哪种配置文件格式,别一上来就照着老教程去改一个不存在的文件。
3.2 新版 Ubuntu 24.04(deb822 格式)的换法
Ubuntu 24.04 的默认源文件/etc/apt/sources.list.d/ubuntu.sources初始内容大概是这样的:
Types: deb URIs: http://archive.ubuntu.com/ubuntu/ Suites: noble noble-updates noble-backports Components: main restricted universe multiverse Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg Types: deb URIs: http://security.ubuntu.com/ubuntu/ Suites: noble-security Components: main restricted universe multiverse Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg换源的核心就是改URIs这个字段的值。改成清华源的话,把文件内容替换成:
Types: deb URIs: https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ Suites: noble noble-updates noble-backports Components: main restricted universe multiverse Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg Types: deb URIs: https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ Suites: noble-security Components: main restricted universe multiverse Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg改成阿里云源的话,对应的地址就是https://mirrors.aliyun.com/ubuntu/,其他字段不变。
实际操作时,你可以用编辑器直接改文件:
sudo nano /etc/apt/sources.list.d/ubuntu.sources也可以偷个懒用 sed 命令文本替换。比如把官方域名全换成清华源地址:
sudo sed -i 's@//.*archive.ubuntu.com@//mirrors.tuna.tsinghua.edu.cn@g; s@//security.ubuntu.com@//mirrors.tuna.tsinghua.edu.cn@g' /etc/apt/sources.list.d/ubuntu.sources注意这里把security.ubuntu.com也替换成了镜像站地址,因为清华、阿里这些镜像站会把安全更新内容同步在主目录下,不需要单独指向security.ubuntu.com。改完后运行:
sudo apt update看到输出里大量Get,并且最后一个版本代号对应的源没有报错,说明换源成功。
3.3 旧版 Ubuntu 22.04 及更早版本的换法
对于 Ubuntu 22.04、20.04、18.04 这些使用sources.list单行格式的版本,直接修改/etc/apt/sources.list文件为清华源模板:
sudo nano /etc/apt/sources.list把内容替换成下面这样(以 22.04 jammy 为例):
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse阿里云源则替换为:
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如果你的系统是 20.04 focal,就把上面的jammy全部换成focal,其他保持不变。如果你想获取软件包的源码版本,可以在每组前面加一行deb-src开头的条目。不过对大多数场景来说,deb-src用不到,而且会拖慢apt update的速度,通常建议注释掉或者直接不写。
改完执行sudo apt update,如果输出里没有Err、404这类报错,就说明源已经生效。
3.4 图形化方式:桌面版用“软件与更新”工具
如果你用的是带图形界面的 Ubuntu 桌面版,不想折腾命令行,还有一个更直观的换源方法:打开“软件与更新”(Software & Updates)工具,在 Ubuntu 软件 选项卡下方找到“下载自”下拉框,点进去选择“其他站点…”,然后在弹出的列表里找到中国的镜像源(比如 mirrors.tuna.tsinghua.edu.cn),点击“选择服务器”,系统会提示你输入密码并自动刷新软件源。
这个方式的底层原理和手改配置文件完全一样,只是帮你把地址替换的活干了。不过它只在桌面版自带这个工具的 Ubuntu 上可用,服务器版或者 WSL 里没有图形界面,还是要走命令行。
另外补充一个命令行下的小工具安装方式。如果你用的桌面版系统里没有“软件与更新”,可以装一下:
sudo apt install software-properties-common这个包提供add-apt-repository等命令,是后续添加第三方源时经常用到的工具。
4. 换源之后必做的验证与高频问题排查
4.1 update 和 upgrade 有什么区别,换完源先跑哪个
换完源之后,第一件事必须是sudo apt update。
update做的事情是更新软件包索引,也就是把源里的软件列表拉取到本地,让系统知道当前源有哪些软件、什么版本、依赖关系是什么。它不会安装或升级任何软件,只是“刷新商品货架”。upgrade才是真正根据这个列表去升级系统里已安装的软件到新版本。
经常有人把这两步混在一起执行,或者换完源直接apt upgrade。这样做在绝大多数情况下没事,但万一官方镜像源同步有延迟,新源列表和旧软件版本之间可能出现依赖不一致的情况,所以我个人习惯是:先update确认源没问题,再考虑要不要upgrade。
执行sudo apt update时,观察输出内容:
Get表示成功获取到了软件包列表;Hit表示本地缓存已是最新,无需重新下载;Ign表示忽略了一些可选项(比如某些索引文件不存在);Err表示出错,这种就需要看具体错误信息来排查了。
只要没有Err,并且最后没有提示“无法下载”之类的信息,就说明换源成功。
4.2 常见排错:404、签名失效、Hash 校验和不符
换源这事,新手最常遇到就这么几类报错,我一个个说:
404 Not Found。这类错误一般是源地址里的版本代号写错了。比如你是 24.04 却写了jammy,或者你是 20.04 却写了focal以外的代号,镜像站对应目录下没有这些文件,就会出现一排 404。解决方式就是lsb_release -a确认自己的版本代号,然后改对。
公钥签名验证失败。报错信息里会出现The following signatures couldn't be verified because the public key is not available: NO_PUBKEY xxxx。这说明系统缺少验证源签名所需的公钥。解决办法比较简单,直接根据报错里给的公钥 ID 手动添加:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 公钥ID不过在 Ubuntu 24.04 上apt-key已经废弃,推荐换成下面这种方式把公钥放到/etc/apt/keyrings/下再在源配置里Signed-By引用。大多数常用镜像站比如清华源,它的官方文档里都有对应的公钥安装说明,直接照着做就行。
Hash Sum mismatch。这类报错一般是之前下载了一半的缓存文件损坏导致的。解决方法是清掉缓存再更新:
sudo apt clean sudo apt updateThe repository does not have a Release file。这个一般也是源地址或者版本代号不对,镜像站里根本没有对应的目录结构,把配置和镜像站文档对照检查一遍就好。
4.3 一个容易忽略的坑:第三方源配置不要乱动
换源时很多人只盯着sources.list或ubuntu.sources,却忘了/etc/apt/sources.list.d/目录下可能还有一些第三方软件的源配置。比如你装过 Docker,这个目录下会有一个docker.list;装过 VS Code 之类的软件也会有类似文件。
这些第三方软件的源,地址指向的是该软件官方的仓库,它们和 Ubuntu 本身的源是两码事。换 Ubuntu 系统源的时候,不要顺手把这些第三方源也改成国内镜像,除非你确认该软件在国内有官方镜像且同步正常。否则一个不小心,可能导致第三方软件无法更新甚至无法安装。遇到这类源的下载问题,优先去对应软件官方文档查一下它们推荐的国内镜像配置方式。
还有一个小坑是 WSL 里的 Ubuntu。WSL 同样可以用本文的方法换源,步骤跟实体机完全一致,只是有些发行版初始源里会包含 WSL 专属的软件包目录,换源时如果发现apt update报错,回看一下是不是有个变量$WSL之类没替换干净,按镜像站模板调整就行。
4.4 想还原官方源怎么办
换源之后如果遇到镜像站同步异常,或者系统大版本升级时需要回到官方源,也不用慌。之前备份的文件就是干这个用的:
sudo cp /etc/apt/sources.list.bak /etc/apt/sources.listdeb822 格式同理:
sudo cp /etc/apt/sources.list.d/ubuntu.sources.bak /etc/apt/sources.list.d/ubuntu.sources执行完恢复操作后记得sudo apt update刷新一遍。
根据我个人操作多台 Ubuntu 机器的经验,有一点特别想提醒大家:如果你打算把系统从旧版本升级到新版本,比如从 22.04 升到 24.04,升级工具会把源配置重置回官方默认值,这属正常现象,升级完成后再重新按新版本代号换一次源就好了。别到时候看到源被“改回去”还以为是自己把系统搞坏了。
最后再分享一个实用小技巧:多个镜像站的源模板之间其实只差一个域名,你可以把几个常用镜像源的地址存在备忘里,哪个出问题就临时切换到另一个,没必要非得在某个镜像上死磕。换源这件事本身不复杂,核心就是找到适合自己的镜像、写对版本代号、改完记得 update,熟练之后全程一分钟都用不了。