Ubuntu 20.04 LTS 默认源文件详解与恢复指南

发布时间:2026/10/9 3:00:23
Ubuntu 20.04 LTS 默认源文件详解与恢复指南
简介这份资源面向Ubuntu 20.04 LTS用户尤其是因误改sources.list导致apt报错、软件安装失败或系统升级异常需要快速恢复默认软件源配置的运维与开发人员。资源包内含1个PDF文件大小约35KB以图文形式完整给出Focal Fossa默认源内容涵盖main、restricted、universe、multiverse、updates、backports及security等仓库的deb与deb-src条目并说明各仓库的用途与启用建议。读者可对照文档将默认源内容复制回/etc/apt/sources.list再执行apt-get update与upgrade快速排除源配置错误、恢复软件包管理与安全更新能力。目前已有6782人学习下载适合作为系统维护与故障排查的速查参考。1. 一次误删 sources.list 之后Ubuntu 20.04 LTS 默认源到底长什么样上周帮同事救一台编译环境崩掉的机器现象很典型apt update直接甩出E: 无法定位软件包apt install任何东西都提示依赖断裂连build-essential都装不回去。翻了下/etc/apt/sources.list好家伙原本的 focal 仓库被替换成了一堆来路不明的第三方地址注释还删得七零八落。这种翻车在 Ubuntu 20.04 LTSFocal Fossa上太常见了——有人为了换国内镜像手抖改错有人照着过期教程把focal写成了bionic还有人干脆把整个文件清空想重来。sources.list是 APT 包管理器的入口配置它决定了系统从哪里拉取软件包、更新和安全补丁一旦内容错乱轻则装不上软件重则整个依赖树崩掉。这篇就把 Ubuntu 20.04 LTS 默认源文件的完整内容、恢复步骤、参数含义和几个高频坑一次讲透适合正在救系统的新手也适合想搞清楚main、universe、focal-updates这些字段到底管什么的熟手。2. 拆解默认源文件每个字段在管什么2.1 从一行 deb 记录看仓库结构先看默认源里最核心的一行deb http://cn.archive.ubuntu.com/ubuntu/ focal main restricted这一行拆开看是四个部分。deb表示这是二进制软件包仓库对应的deb-src是源码包仓库http://cn.archive.ubuntu.com/ubuntu/是仓库地址cn.archive是 Canonical 在国内的官方归档镜像focal是 Ubuntu 20.04 LTS 的发行版代号这个字段写错整个源就废了main restricted是组件名main是官方支持的自由软件restricted是官方支持的专有驱动类软件。很多人改源时只盯着地址换忽略了代号和组件结果就是apt update报Release file 过期或者直接找不到包。默认文件里出现的组件一共四类作用边界很清楚组件维护方典型内容是否官方支持mainUbuntu 团队自由软件、基础系统组件是restrictedUbuntu 团队闭源驱动、固件是universe社区大量开源工具、库否multiverse社区非自由许可软件否focal、focal-updates、focal-security、focal-backports则是同一个发行版下的不同更新通道。focal是发布时的快照focal-updates是发布后的错误修复和次要更新focal-security是安全补丁focal-backports是从新版本回迁的软件。默认文件里focal-backports只开了main restricted universe multiverse一行没有deb-src这是官方默认策略不是漏写。2.2 默认源文件的完整内容下面这份就是 Ubuntu 20.04 LTS 安装后/etc/apt/sources.list的默认内容可以直接作为恢复基准。注意deb-src行默认是注释掉的如果你不需要下载源码包保持注释即可取消注释会显著增加apt update的索引下载量。#deb cdrom:[Ubuntu 20.04 LTS _Focal Fossa_ - Release amd64 (20200423)]/ focal main restricted # See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to # newer versions of the distribution. deb http://cn.archive.ubuntu.com/ubuntu/ focal main restricted # deb-src http://cn.archive.ubuntu.com/ubuntu/ focal main restricted ## Major bug fix updates produced after the final release of the ## distribution. deb http://cn.archive.ubuntu.com/ubuntu/ focal-updates main restricted # deb-src http://cn.archive.ubuntu.com/ubuntu/ focal-updates main restricted ## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu ## team. Also, please note that software in universe WILL NOT receive any ## review or updates from the Ubuntu security team. deb http://cn.archive.ubuntu.com/ubuntu/ focal universe # deb-src http://cn.archive.ubuntu.com/ubuntu/ focal universe deb http://cn.archive.ubuntu.com/ubuntu/ focal-updates universe # deb-src http://cn.archive.ubuntu.com/ubuntu/ focal-updates universe ## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu ## team, and may not be under a free licence. Please satisfy yourself as to ## your rights to use the software. Also, please note that software in ## multiverse WILL NOT receive any review or updates from the Ubuntu ## security team. deb http://cn.archive.ubuntu.com/ubuntu/ focal multiverse # deb-src http://cn.archive.ubuntu.com/ubuntu/ focal multiverse deb http://cn.archive.ubuntu.com/ubuntu/ focal-updates multiverse # deb-src http://cn.archive.ubuntu.com/ubuntu/ focal-updates multiverse ## N.B. software from this repository may not have been tested as ## extensively as that contained in the main release, although it includes ## newer versions of some applications which may provide useful features. ## Also, please note that software in backports WILL NOT receive any review ## or updates from the Ubuntu security team. deb http://cn.archive.ubuntu.com/ubuntu/ focal-backports main restricted universe multiverse # deb-src http://cn.archive.ubuntu.com/ubuntu/ focal-backports main restricted universe multiverse ## Uncomment the following two lines to add software from Canonicals ## partner repository. ## This software is not part of Ubuntu, but is offered by Canonical and the ## respective vendors as a service to Ubuntu users. # deb http://archive.canonical.com/ubuntu focal partner # deb-src http://archive.canonical.com/ubuntu focal partner deb http://security.ubuntu.com/ubuntu focal-security main restricted # deb-src http://security.ubuntu.com/ubuntu focal-security main restricted deb http://security.ubuntu.com/ubuntu focal-security universe # deb-src http://security.ubuntu.com/ubuntu focal-security universe deb http://security.ubuntu.com/ubuntu focal-security multiverse # deb-src http://security.ubuntu.com/ubuntu focal-security multiverse # This system was installed using small removable media # (e.g. netinst, live or single CD). The matching deb cdrom # entries were disabled at the end of the installation process. # For information about how to configure apt package sources, # see the sources.list(5) manual.这份内容里有两个地址需要留意cn.archive.ubuntu.com负责常规仓库security.ubuntu.com负责安全更新。安全更新没有走cn.archive这是官方默认行为不要自作主张把 security 也换成国内镜像部分镜像站并不完整同步 security 通道换了反而会报404。2.3 恢复默认源的操作步骤恢复流程本身不复杂关键是顺序和权限。我一般会先备份当前文件再写入默认内容最后验证。第一步备份现有配置给自己留一颗后悔药sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak.$(date %Y%m%d)这条命令把当前文件复制成带日期的备份$(date %Y%m%d)会展开成类似20250115的字符串方便回溯。如果之后发现新配置有问题直接sudo cp /etc/apt/sources.list.bak.20250115 /etc/apt/sources.list就能还原。第二步用编辑器打开文件。原文用的是gedit但在纯命令行环境或者 SSH 会话里gedit依赖图形界面根本起不来。更稳妥的选择是nanosudo nano /etc/apt/sources.list如果你习惯vim用sudo vim /etc/apt/sources.list也一样。把上面 2.2 节的完整内容粘贴进去覆盖原有全部内容。nano里保存是CtrlO回车退出是CtrlX。第三步刷新索引并验证sudo apt update正常输出应该能看到命中:1 http://cn.archive.ubuntu.com/ubuntu focal InRelease这类行最后提示有 N 个软件包可以升级。如果出现W: 无法下载 http://... Release file或者E: 仓库 ... 没有 Release 文件说明地址或代号写错了回到文件里逐行核对focal拼写和仓库 URL。第四步如果apt update通过再跑一次升级确认依赖链完整sudo apt upgrade -y这一步不是必须的但能验证包管理器的依赖解析是否恢复正常。如果upgrade能正常计算并执行说明源配置已经健康。3. 换国内镜像源什么时候该换、怎么换才不出事3.1 默认源和镜像源的取舍默认的cn.archive.ubuntu.com在国内访问速度其实不算差Canonical 在国内有 CDN 节点。但如果你在偏远地区或者网络环境特殊apt update经常卡在等待报头或者下载速度只有几十 KB那换成本地镜像站是合理的。常见的国内镜像有清华 TUNA、阿里云、中科大 USTC、华为云等它们同步频率高速度稳定。但换源有个前提镜像站必须完整同步了你需要的组件和更新通道。有些小镜像站只同步main和focal不同步universe和focal-updates你换过去之后apt install某些社区软件就会报无法定位软件包。所以换源之前先去镜像站官网确认它同步了哪些仓库。清华 TUNA 和阿里云镜像的同步范围通常是最全的。3.2 用 sed 批量替换地址手动一行行改地址容易漏用sed批量替换更稳。以换成清华 TUNA 为例sudo sed -i s|http://cn.archive.ubuntu.com/ubuntu/|https://mirrors.tuna.tsinghua.edu.cn/ubuntu/|g /etc/apt/sources.list sudo sed -i s|http://security.ubuntu.com/ubuntu|https://mirrors.tuna.tsinghua.edu.cn/ubuntu|g /etc/apt/sources.list第一条命令把常规仓库地址替换掉第二条把 security 地址也指向 TUNA。注意sed里的分隔符用了|而不是/因为地址里本身有斜杠用|可以避免转义。-i表示直接修改原文件执行前建议先按 2.3 节备份。替换完成后同样跑sudo apt update验证。如果 TUNA 的 security 通道同步延迟导致报错可以把第二条命令回退让 security 继续走官方地址只替换常规仓库。3.3 换源后的验证清单换完源不要只看apt update有没有报错还要确认三件事。第一apt policy看关键包的候选版本是否正常apt policy build-essential输出里应该能看到候选后面有具体版本号而不是无。第二随便装一个小包测试下载通道sudo apt install -y tree如果tree能正常下载安装说明仓库索引和包文件通道都通了。第三检查/etc/apt/sources.list.d/目录下有没有残留的第三方源文件有些软件安装时会往这里塞配置换源后这些文件可能指向失效地址导致apt update报错。用ls /etc/apt/sources.list.d/看一眼不认识的.list文件先备份再移走。4. 避坑与排查sources.list 改错后的五种典型翻车4.1 现象apt update 报「Release 文件过期」原因通常是系统时间不对或者仓库地址指向了一个已经停止同步的旧镜像。Ubuntu 20.04 LTS 的focal仓库本身还在维护期内但如果你的镜像站已经下线了 focal 同步就会报这个错。解决方法是先校准时间sudo timedatectl set-ntp true再检查仓库地址是否仍然有效必要时换回默认的cn.archive.ubuntu.com。4.2 现象apt install 提示「无法定位软件包」原因多半是组件没开全。比如你要装的软件在universe里但你的 sources.list 只保留了mainAPT 自然找不到。解决方法是确认文件里focal universe和focal-updates universe两行存在且没有被注释。另外如果软件在multiverse里还要确认focal multiverse和focal-updates multiverse也在。4.3 现象apt update 卡在「等待报头」或速度极慢原因是仓库地址的网络连通性差。默认的cn.archive在部分网络环境下确实慢换成本地镜像站通常能解决。但换源后如果速度反而更慢可能是镜像站当前负载高换一个镜像再试。不要同时保留多个镜像地址APT 会按顺序尝试前面的超时会拖慢整体速度。4.4 现象sudo apt update 报「没有 Release 文件」这个错误几乎都是仓库地址或发行版代号写错导致的。比如把focal写成了focal1或者地址末尾多了空格。解决方法是逐行核对 sources.list确保每一行的格式是deb URL 代号 组件三个字段之间用空格分隔行尾不能有多余字符。用cat -A /etc/apt/sources.list可以看到行尾是否有隐藏字符。4.5 现象换源后 apt upgrade 提示「依赖关系无法满足」原因是新旧源的包版本不一致APT 的依赖解析器在混合源下会混乱。解决方法是先sudo apt update刷新索引再sudo apt full-upgrade让 APT 重新计算依赖。如果仍然报错检查/etc/apt/sources.list.d/下是否有第三方源引入了冲突版本把可疑的源文件临时移走再试。5. 进阶技巧用 apt 的调试开关定位源配置问题排查 sources.list 问题时apt update的默认输出往往不够细。我习惯加-o Debug::Acquire::httptrue看 HTTP 请求细节sudo apt update -o Debug::Acquire::httptrue 21 | head -50这条命令会打印 APT 实际请求的 URL、响应码和重定向过程。如果某个仓库地址返回404或403你能立刻定位到是哪一行配置出了问题。21把标准错误合并到标准输出head -50只取前 50 行避免刷屏。另一个有用的开关是apt-get indextargets它能列出 APT 当前认为需要下载的所有索引目标apt-get indextargets --format $(URI) $(IDENTIFIER)输出里每一行对应一个仓库索引如果某个仓库的 URI 明显不对或者某个组件缺失一眼就能看出来。这个命令不修改任何配置纯粹是只读诊断适合在改源前后做对比。还有一个容易被忽略的点Ubuntu 20.04 开始/etc/apt/sources.list不再是唯一入口/etc/apt/sources.list.d/目录下的.list文件和.sources文件也会被 APT 读取。如果你恢复了主文件但apt update仍然报错一定要检查这个目录。我一般会跑grep -rE ^deb /etc/apt/sources.list /etc/apt/sources.list.d/这条命令把所有生效的仓库地址列出来方便逐条核对。如果发现某个.list文件指向了已经不存在的 PPA 或第三方仓库直接备份后删除即可。从那以后我每次动 sources.list 之前都强制先跑一遍sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak.$(date %Y%m%d)改完再用apt-get indextargets核对一遍索引目标确认无误才继续装包。这套习惯帮我省了至少三次重装系统的时间。希望帮到你。本文还有配套的精品资源点击获取