ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Ubuntu 24.04换源指南:deb822新格式.sources文件详解与实操

Ubuntu 24.04换源指南:deb822新格式.sources文件详解与实操 1. Ubuntu 24.04 换源这件事为什么值得单独写一篇如果你最近刚装完 Ubuntu 24.04 LTS不管是桌面版还是虚拟机里的 Server 版第一件让你抓狂的事大概率不是驱动、不是输入法而是apt update卡在某个地址上转圈最后甩给你一串Ign、Err和Connection failed。默认的软件源在国外国内访问速度慢、丢包高装个gcc都要等半天更别提apt install一堆依赖的时候那种煎熬。换源就是解决这个问题的。说白了就是把系统默认去拉包的那个服务器地址换成国内访问更快的镜像站。以前 Ubuntu 用的是/etc/apt/sources.list这个纯文本文件一行一条源改起来直观。但从 Ubuntu 24.04代号 Noble Numbat开始APT 引入了新的.sources格式文件放在/etc/apt/sources.list.d/目录下用的是 deb822 风格的键值对写法。这个变化让很多人第一次换源时直接懵了——照着老教程改sources.list改完发现没生效或者系统里两个格式的配置同时存在互相打架。这篇内容就是把这个坑填平。我会从.sources新格式的结构讲起说清楚它和旧格式的区别、为什么 Ubuntu 要这么改、换源时到底该动哪个文件、怎么验证换源成功、以及换源失败时怎么一步步排查。适合刚接触 Ubuntu 的新手也适合用了几年 Ubuntu 但升级到 24.04 后发现老方法失灵的老用户。看完你至少能做到手动换源不翻车遇到问题知道去哪看日志、怎么回滚。2. 先搞懂 .sources 新格式到底新在哪2.1 从 sources.list 到 deb822 的演进逻辑老格式sources.list长这样deb http://archive.ubuntu.com/ubuntu noble main restricted universe multiverse deb http://archive.ubuntu.com/ubuntu noble-updates main restricted universe multiverse deb http://security.ubuntu.com/ubuntu noble-security main restricted universe multiverse一行就是一条完整的源定义字段用空格分隔顺序固定类型、URL、发行版代号、组件列表。这种写法简单但有几个硬伤。第一一行里塞了太多信息可读性差尤其是加了[archamd64]、[signed-by...]这类选项之后一行能拉到很长。第二同一个源的不同组件必须重复写 URL 和发行版代号冗余严重。第三机器解析和人工编辑之间的平衡不好把握加个注释、调个顺序都容易出错。deb822 格式就是为了解决这些问题。它借鉴了 Debian 控制文件的写法用字段名: 值的形式一个源可以写成一段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对比一下就能看出好处Suites一行可以列多个发行版代号Components一行可以列多个组件不用重复写 URL。Signed-By明确指定签名密钥安全性更清晰。字段顺序不敏感加注释用#整体结构更像配置文件而不是命令行参数。Ubuntu 24.04 默认就把主源写成了/etc/apt/sources.list.d/ubuntu.sources而/etc/apt/sources.list里只剩一句注释告诉你配置已经迁移到新位置了。这就是为什么你按老教程改sources.list没用——系统根本不读那个文件了。2.2 一个 .sources 文件里到底有哪些字段要换源先得看懂文件里每个字段是什么意思。下面这张表把常用字段列清楚字段名含义常见取值Types源的类型deb二进制包、deb-src源码包URIs镜像站地址http://mirrors.tuna.tsinghua.edu.cn/ubuntu/Suites发行版代号及更新通道noble、noble-updates、noble-security、noble-backportsComponents软件组件分类main、restricted、universe、multiverseSigned-By签名密钥路径/usr/share/keyrings/ubuntu-archive-keyring.gpgArchitectures指定架构可选amd64、arm64Enabled是否启用可选yes、no这里有几个点容易踩坑。Suites里的noble是 Ubuntu 24.04 的代号如果你写成了jammy22.04 的代号APT 会去拉 22.04 的包版本对不上轻则装不上重则把系统搞乱。Components四个分类各有用途main是官方支持的自由软件restricted是官方支持的专有驱动universe是社区维护的自由软件multiverse是有版权或法律限制的软件。一般换源时四个都保留除非你明确知道自己不需要某些组件。Signed-By这个字段在老格式里是通过[signed-by...]选项写的新格式单独拎出来做字段路径指向系统里已有的密钥环文件。换源时这个字段通常不用改因为国内镜像站同步的是 Ubuntu 官方仓库签名密钥是一样的。但如果你用的是第三方源比如某些 PPA 或者 Docker 的源密钥路径可能不同需要单独处理。2.3 为什么改了 sources.list 没反应这是新手最容易卡住的地方。你在网上搜“Ubuntu 换源”出来的教程十有八九是让你sudo nano /etc/apt/sources.list把里面的archive.ubuntu.com替换成mirrors.tuna.tsinghua.edu.cn。你照做了保存然后sudo apt update发现速度还是慢或者直接报错说找不到源。原因就是 Ubuntu 24.04 已经不读sources.list了。你可以自己验证一下cat /etc/apt/sources.list大概率你会看到类似这样的内容# Ubuntu sources have moved to /etc/apt/sources.list.d/ubuntu.sources这就是明证。系统把主源配置迁移到了/etc/apt/sources.list.d/ubuntu.sourcessources.list只是个占位符。你改了一个系统不读的文件当然没效果。那为什么有些教程还在教改sources.list因为那些教程是针对 22.04 及更早版本的或者作者自己也没搞清楚 24.04 的变化。你在 24.04 上照做就是白费功夫。正确的做法是直接编辑/etc/apt/sources.list.d/ubuntu.sources或者用软件源图形界面工具。提示如果你在/etc/apt/sources.list.d/目录下同时存在.list和.sources两种格式的文件APT 会都读取。如果两者定义了同一个源但地址不同可能会出现冲突或重复。换源时建议只保留一种格式把另一种备份或删除。3. 手动换源完整实操从备份到验证3.1 换源前的准备工作动手之前先做两件事备份原配置、确认系统版本代号。备份很简单把原来的.sources文件复制一份改个后缀或者放到别的目录sudo cp /etc/apt/sources.list.d/ubuntu.sources /etc/apt/sources.list.d/ubuntu.sources.bak这样万一换源换出问题一条命令就能回滚sudo cp /etc/apt/sources.list.d/ubuntu.sources.bak /etc/apt/sources.list.d/ubuntu.sources确认系统版本代号是为了填对Suites字段。运行lsb_release -csUbuntu 24.04 会输出noble。如果你用的是 24.04.3 LTS 这种点版本代号还是noble不用改。如果你不确定也可以用cat /etc/os-release看VERSION_CODENAME字段。选镜像站也有讲究。国内常用的有清华 TUNA、中科大 USTC、阿里云、华为云、网易等。不同镜像站同步频率和覆盖范围略有差异。清华和中科大的同步比较及时阿里云和华为云在国内网络环境下速度稳定。你可以先 ping 一下或者用curl -I看响应时间选一个自己网络环境下最快的。curl -I http://mirrors.tuna.tsinghua.edu.cn/ubuntu/dists/noble/Release如果返回200 OK说明这个镜像站有 noble 的仓库可以用。3.2 编辑 ubuntu.sources 文件用你顺手的编辑器打开文件nano 对新手最友好sudo nano /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注意安全更新仓库的地址也改成了同一个镜像站。有些镜像站会把ubuntu-security单独同步但清华、中科大这些大站通常把安全更新也放在同一个ubuntu/路径下所以Suites写noble-security就行。如果你需要源码包可以再加一段Types: deb-src但普通用户用不到加了反而会让apt update变慢因为要下载源码索引。建议不加。改完之后保存退出。nano 的保存是CtrlO回车确认退出是CtrlX。3.3 更新索引并验证换源结果改完文件运行sudo apt update观察输出。如果换源成功你会看到Hit、Get、Ign之类的行地址显示的是你设置的镜像站域名速度应该明显比之前快。最后会显示类似Reading package lists... Done Building dependency tree... Done Reading state information... Done All packages are up to date.如果出现Err或者W:开头的警告就要注意了。常见的警告有Key is stored in legacy trusted.gpg keyring这是密钥环格式的问题不影响使用但可以按提示迁移。如果是404 Not Found说明镜像站路径或者Suites写错了回去检查。验证换源是否真正生效可以看 APT 实际使用的源列表apt-cache policy输出会列出每个包的源优先级和地址。或者更直接一点grep -r URIs /etc/apt/sources.list.d/看看当前生效的.sources文件里URIs是不是你改的地址。还有一个实用命令是apt-get update -o Debug::Acquire::httptrue会打印详细的 HTTP 请求过程能看到实际请求的 URL。不过输出很长一般用不上排查疑难问题时才用。3.4 换源后的收尾工作换源成功、apt update正常之后建议做两件事。第一升级一次系统把之前因为源慢没更新的包补上sudo apt upgrade -y如果提示有held back的包可以用sudo apt full-upgrade处理。注意full-upgrade可能会卸载一些包来解决依赖冲突生产环境慎用个人桌面一般没问题。第二清理无用的包和缓存sudo apt autoremove -y sudo apt cleanautoremove会删掉不再被依赖的包clean会清空/var/cache/apt/archives/下的 deb 包缓存。换源之后旧缓存可能来自旧源清掉更干净。注意如果你在虚拟机里操作换源前最好打个快照。换源本身风险很低但万一改错了文件导致apt完全不能用有快照可以秒回滚比手动修配置省事得多。4. 换源失败怎么排查常见问题速查4.1 报错信息对照表换源过程中遇到的报错大部分集中在几类。下面这张表把常见报错、原因和解决方法列出来方便对照排查报错信息可能原因解决方法Could not resolve xxxDNS 解析失败或网络不通检查网络连接ping镜像站域名Connection timed out镜像站不可达或防火墙拦截换一个镜像站检查代理设置404 Not FoundSuites 或路径写错确认发行版代号和镜像站路径NO_PUBKEY签名密钥缺失导入对应密钥或检查 Signed-ByRelease file expired镜像站同步延迟换镜像站或等待同步Malformed entry.sources 文件格式错误检查字段名拼写和缩进Ign大量出现源地址不可用但被忽略检查 URIs 是否可访问Malformed entry是.sources格式特有的错误通常是因为字段名拼错、冒号用了中文、或者值里有多余空格。deb822 格式对字段名大小写不敏感但拼写必须正确。比如URIs写成URI或者Urls都可能出问题虽然有些版本能容错但最好按标准写。4.2 换源后 apt update 仍然慢怎么办有时候你换了源apt update也成功了但感觉速度没提升多少。这种情况先别急着怀疑换源失败可能是这几个原因。一是 DNS 解析慢。APT 每次请求都要解析域名如果 DNS 服务器响应慢整体就会拖。可以临时在/etc/hosts里把镜像站域名指向 IP或者换一个更快的 DNS。不过这不是换源本身的问题。二是镜像站本身负载高。清华源在白天高峰期可能比较拥挤可以试试中科大或者阿里云。不同地区、不同运营商访问同一个镜像站的速度差异很大多试几个找到最快的。三是apt update下载的索引文件本身不大速度差异不明显。真正体现换源价值的是apt install下载 deb 包的时候。你可以装一个稍微大点的包测试比如sudo apt install htop看下载速度。如果几 MB 的包秒下说明换源生效了。四是系统里还有其他源在拖后腿。比如你之前添加过 PPA或者 Docker、NodeSource 之类的第三方源这些源可能还是国外的。apt update会依次请求所有源只要有一个慢整体就慢。可以用grep -r URIs /etc/apt/sources.list.d/看看还有哪些源把不需要的禁用或删掉。4.3 图形界面换源工具能不能用Ubuntu 桌面版自带“软件和更新”工具在“Ubuntu 软件”标签页里可以选“下载自”的下拉菜单里面能选国内镜像站。这个工具底层也是改.sources文件只是帮你做了封装。对于不熟悉命令行的用户用图形界面换源是最省事的。但图形界面工具有个局限它只能改主源和安全更新源如果你有额外的 PPA 或者第三方源还是得手动改。而且有些版本的图形工具在 24.04 上对.sources格式的支持不够完善改完之后可能生成一个混合格式的文件。所以我的建议是新手可以用图形工具快速换主源但最好还是学会手动改.sources因为迟早会遇到需要手动处理的情况。另外有些第三方工具比如software-properties-gtk在 24.04 上也能用但界面和选项可能和之前版本不同。如果你用命令行sudo software-properties-gtk可以打开图形界面。不过说实话改一个文本文件比点鼠标快多了熟悉之后还是命令行效率高。4.4 换源失败后的回滚操作如果换源之后apt彻底不能用比如apt update报一堆错连apt install都执行不了别慌回滚就行。如果你之前备份了ubuntu.sourcessudo cp /etc/apt/sources.list.d/ubuntu.sources.bak /etc/apt/sources.list.d/ubuntu.sources sudo apt update如果没有备份可以手动把URIs改回http://archive.ubuntu.com/ubuntu/和http://security.ubuntu.com/ubuntu/Suites和Components保持原样。或者从 Ubuntu 官方镜像站下载一份默认的ubuntu.sources文件覆盖。实在不行还可以用apt-get的--option参数临时指定源sudo apt-get -o Dir::Etc::sourcelistsources.list.d/ubuntu.sources -o Dir::Etc::sourceparts- update这个命令让 APT 只读指定的源文件忽略其他配置。不过一般用不上直接改文件更简单。提示回滚之后如果apt update还是报错检查一下/etc/apt/sources.list.d/目录下有没有其他残留的.list或.sources文件。有时候换源工具会生成新文件但没删旧文件导致冲突。5. 几个容易被忽略的细节和我的实操心得5.1 https 还是 http这是个问题国内镜像站基本都支持 https比如清华是https://mirrors.tuna.tsinghua.edu.cn/ubuntu/中科大是https://mirrors.ustc.edu.cn/ubuntu/。用 https 的好处是传输加密防止中间人篡改。但 https 握手会稍微增加一点延迟而且如果系统时间不对证书验证会失败。我的建议是优先用 https。Ubuntu 24.04 默认的archive.ubuntu.com也是 http但换源时改成 https 更稳妥。如果遇到证书错误先检查系统时间timedatectl status如果时间偏差太大sudo apt install ntpsec或者sudo systemctl restart systemd-timesyncd同步一下。时间对了证书问题通常就没了。有些镜像站的 https 证书可能不被系统信任这时候可以临时用 http但长期来看还是解决证书问题更好。另外如果你在公司网络里可能有防火墙拦截 https那就只能用 http 了。5.2 第三方源的 .sources 写法除了 Ubuntu 主源你可能还会添加 Docker、NodeSource、Ollama 等第三方源。这些源现在也推荐用.sources格式。以 Docker 为例官方文档给的写法是Types: deb URIs: https://download.docker.com/linux/ubuntu Suites: noble Components: stable Signed-By: /etc/apt/keyrings/docker.asc注意Signed-By指向的是 Docker 自己的密钥文件不是 Ubuntu 的。你需要先下载密钥sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo tee /etc/apt/keyrings/docker.asc /dev/null sudo chmod ar /etc/apt/keyrings/docker.asc然后再写.sources文件。国内用户如果下载 Docker 的 deb 包慢可以把URIs换成国内镜像站的 Docker 仓库地址但密钥还是用 Docker 官方的。这里要注意镜像站同步的 Docker 仓库可能滞后版本不是最新的看你能不能接受。Ollama 的国内镜像源也是类似思路把URIs换成国内地址Signed-By保持官方密钥。不过 Ollama 的安装方式比较多用官方脚本或者直接下载二进制也行不一定非要走 APT。5.3 换源不是一劳永逸的很多人换完源就不管了直到某天apt update突然报错才发现问题。换源之后有几件事需要定期关注。一是发行版升级。Ubuntu 24.04 是 LTS支持到 2029 年但中间会有 24.04.1、24.04.2 这样的点版本更新。点版本更新不需要改Suites还是noble。但如果你从 22.04 升级到 24.04Suites要从jammy改成noble所有第三方源也要跟着改。升级前最好把第三方源禁用升级完再逐个恢复。二是镜像站地址变更。国内镜像站偶尔会调整路径或者停止服务。比如某个镜像站不再同步 Ubuntu 仓库你的apt update就会报 404。这时候换一个镜像站就行。建议记住两三个备用镜像站地址出问题时快速切换。三是密钥过期。Ubuntu 的签名密钥有有效期虽然系统会自动更新但如果你手动改过Signed-By路径可能会用到过期的密钥。遇到NO_PUBKEY或者EXPKEYSIG错误时重新导入密钥即可。5.4 我的实操心得先测速再换源最后分享一个我自己的习惯。换源之前先花一分钟测一下几个候选镜像站的速度选最快的那个而不是盲目跟风用清华或者阿里。测速方法很简单用curl下载一个索引文件看耗时curl -o /dev/null -s -w %{time_total}\n http://mirrors.tuna.tsinghua.edu.cn/ubuntu/dists/noble/Release curl -o /dev/null -s -w %{time_total}\n http://mirrors.ustc.edu.cn/ubuntu/dists/noble/Release curl -o /dev/null -s -w %{time_total}\n http://mirrors.aliyun.com/ubuntu/dists/noble/Releasetime_total越小越好。注意测的时候多测几次取平均因为网络有波动。另外不同时间段结果可能不同晚上高峰期和凌晨测出来的结果可能差很多。如果你经常在晚上用电脑就晚上测。还有一个细节有些镜像站对 IPv6 支持好有些只支持 IPv4。如果你的网络有 IPv6可以试试curl -6看能不能走 IPv6有时候 IPv6 路径更快。不过这个属于进阶优化普通用户不用太纠结。换源本身是个很基础的操作但 Ubuntu 24.04 改用.sources格式之后确实让不少人踩了坑。把格式搞懂、把文件改对、把验证做足后面用起来就顺了。我自己的几台 24.04 机器都是换成清华源apt install基本能跑满带宽装gcc、python3-pip这些常用工具都是几秒钟的事。如果你在换源过程中遇到奇怪的问题先检查文件格式再看网络最后看密钥按这个顺序排查大部分问题都能定位到。
返回列表