Ubuntu 20.04(Focal Fossa)默认使用 Ubuntu 官方软件源。如果服务器位于国内,访问境外软件源时可能出现下载速度慢、连接超时或软件包更新失败等情况。将软件源切换为国内镜像,可以明显改善 apt update、软件安装以及系统升级时的网络体验。
下面以 Ubuntu 20.04 为例,介绍备份软件源、替换镜像地址、刷新软件包索引以及常见问题处理方法。
一、查看当前 Ubuntu 软件源
Ubuntu 的软件源配置主要位于:
Bash/etc/apt/sources.list
可以使用 cat 查看当前配置:
Bashcat /etc/apt/sources.list
也可以使用:
Bashgrep -v '^#' /etc/apt/sources.list | grep -v '^$'
这个命令会过滤掉注释行和空行,更方便查看实际生效的软件源。
Ubuntu 20.04 常见的官方源配置类似:
deb http://archive.ubuntu.com/ubuntu/ focal main restricted universe multiverse deb http://archive.ubuntu.com/ubuntu/ focal-updates main restricted universe multiverse deb http://archive.ubuntu.com/ubuntu/ focal-backports main restricted universe multiverse deb http://security.ubuntu.com/ubuntu focal-security main restricted universe multiverse
其中:
-
focal对应 Ubuntu 20.04; -
focal-updates用于提供常规更新; -
focal-security提供安全更新; -
focal-backports提供从较新 Ubuntu 版本回移植的软件包; -
main、restricted、universe、multiverse表示不同的软件仓库组件。
二、更换软件源之前先备份
修改系统配置文件之前,建议先进行备份。这样即使新的镜像配置出现问题,也可以快速恢复。
执行:
Bashsudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
确认备份文件存在:
Bashls -l /etc/apt/sources.list*
如果后续需要恢复官方配置,可以执行:
Bashsudo cp /etc/apt/sources.list.bak /etc/apt/sources.list
备份这一操作看似简单,但在服务器环境中非常重要,尤其是通过远程 SSH 操作时,可以降低误修改导致系统无法更新的风险。
三、选择国内 Ubuntu 20.04 镜像源
国内有多个常用的 Ubuntu 镜像站,包括阿里云、清华大学、中国科技大学、网易等。
实际选择时不必过度追求某一个固定镜像。镜像站的网络质量、同步状态和访问速度可能随着运营商、地区以及时间发生变化,可以根据服务器所在网络环境进行选择。
1. 阿里云镜像源
常见配置如下:
deb https://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse deb https://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse deb https://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse deb https://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
2. 清华大学镜像源
清华大学镜像站也提供 Ubuntu 软件包镜像:
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse
3. 中国科技大学镜像源
可以使用:
deb https://mirrors.ustc.edu.cn/ubuntu/ focal main restricted universe multiverse deb https://mirrors.ustc.edu.cn/ubuntu/ focal-updates main restricted universe multiverse deb https://mirrors.ustc.edu.cn/ubuntu/ focal-backports main restricted universe multiverse deb https://mirrors.ustc.edu.cn/ubuntu/ focal-security main restricted universe multiverse
4. 网易镜像源
网易镜像也可以作为备用方案:
deb https://mirrors.163.com/ubuntu/ focal main restricted universe multiverse deb https://mirrors.163.com/ubuntu/ focal-updates main restricted universe multiverse deb https://mirrors.163.com/ubuntu/ focal-backports main restricted universe multiverse deb https://mirrors.163.com/ubuntu/ focal-security main restricted universe multiverse
同一台机器不建议同时混用多个第三方 Ubuntu 镜像。通常选择一个稳定镜像即可。
四、使用命令行更换 Ubuntu 20.04 软件源
对于服务器环境,直接编辑 sources.list 是最通用的方法。
首先打开配置文件:
Bashsudo nano /etc/apt/sources.list
如果习惯使用 Vim:
Bashsudo vim /etc/apt/sources.list
将原有的软件源内容替换为需要使用的镜像,例如阿里云:
deb https://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse deb https://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse deb https://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse deb https://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
保存之后退出编辑器。
使用 Nano 时,可以按:
Ctrl + O Enter Ctrl + X
五、刷新 APT 软件包索引
修改软件源后,不能直接认为系统已经完成切换,还需要重新获取软件包索引。
执行:
Bashsudo apt update
如果软件源配置正确,终端中会看到类似:
Hit:1 https://mirrors.aliyun.com/ubuntu focal InRelease Get:2 https://mirrors.aliyun.com/ubuntu focal-updates InRelease Get:3 https://mirrors.aliyun.com/ubuntu focal-security InRelease
最后如果出现:
Reading package lists... Done
通常说明软件包索引更新成功。
可以进一步查看 APT 是否能够正常安装软件:
Bashsudo apt install curl
如果能够正常解析依赖并下载软件包,说明新的软件源基本可以正常使用。
六、使用命令批量替换软件源
如果只是临时更换镜像,也可以使用 sed 批量修改。
例如将常见的官方地址替换成阿里云:
Bashsudo sed -i 's|http://archive.ubuntu.com/ubuntu/|https://mirrors.aliyun.com/ubuntu/|g' /etc/apt/sources.list
如果配置中使用的是 HTTPS 官方地址,也可以针对实际内容进行替换。
修改完成后检查:
Bashgrep -v '^#' /etc/apt/sources.list | grep -v '^$'
确认地址已经发生变化,再执行:
Bashsudo apt update
需要注意的是,批量替换命令依赖原始配置的具体写法。如果软件源来自其他文件,或者地址格式不同,sed 不一定能够全部替换。
七、Ubuntu 20.04 软件源中的几个关键组件
软件源配置中的仓库组件并不是随意填写的。
例如:
main restricted universe multiverse
分别代表不同的软件包范围。
main
Ubuntu 官方正式维护的自由软件,属于系统核心软件仓库。
restricted
包含部分受到限制但系统运行可能需要的软件,例如某些硬件相关驱动。
universe
包含大量由 Ubuntu 社区维护的软件包,开发环境和服务器环境中经常会用到。
multiverse
包含许可证或其他原因导致无法完全按照 Ubuntu 自由软件政策维护的软件。
如果软件安装时提示找不到某个软件包,有时并不是镜像源失效,而是对应仓库组件没有启用。
可以通过以下命令检查:
Bashsudo add-apt-repository universe
也可以检查 /etc/apt/sources.list 中是否包含:
universe
八、为什么更换国内源后仍然很慢
更换软件源后下载速度没有明显改善,并不一定代表配置错误。
首先检查当前实际使用的地址:
Bashapt policy
也可以执行:
Bashgrep -R "^deb " /etc/apt/sources.list /etc/apt/sources.list.d/ 2>/dev/null
这个命令可以检查主配置文件和额外软件源目录。
Ubuntu 的部分第三方软件源并不存放在 /etc/apt/sources.list,而是在:
/etc/apt/sources.list.d/
例如:
Bashls /etc/apt/sources.list.d/
如果某个第三方仓库仍然使用境外地址,执行 apt update 时依然可能受到网络影响。
此外,还需要考虑服务器所在机房的网络线路。如果服务器本身位于海外,那么切换国内镜像不一定能够带来明显优势。
九、出现 NO_PUBKEY 错误怎么办
如果执行:
Bashsudo apt update
时出现类似:
NO_PUBKEY XXXXXXXX
说明 APT 在验证软件仓库签名时缺少相应的公钥。
这种情况下不要为了让更新命令通过而直接关闭 APT 的签名验证。
应该首先确认具体是哪个软件仓库出现问题,再根据该仓库官方提供的方式安装或更新签名密钥。
尤其需要注意,Ubuntu 官方仓库和第三方仓库的密钥管理方式可能不同,不建议随意从不可信网站下载 .gpg 或密钥文件。
十、出现 Release file 错误怎么办
如果执行 apt update 后出现:
The repository ... does not have a Release file
需要检查软件源中的发行版代号是否正确。
Ubuntu 20.04 对应:
focal
例如:
deb https://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
如果误写成:
jammy
那么实际上对应的是 Ubuntu 22.04,而不是 Ubuntu 20.04。
因此,Ubuntu 20.04 的软件源不能简单套用其他 Ubuntu 版本的配置。
可以通过:
Bashlsb_release -a
查看当前系统版本。
也可以:
Bashcat /etc/os-release
确认系统发行版信息。
十一、apt update 与 apt upgrade 的区别
更换软件源后,经常有人直接执行:
Bashsudo apt upgrade
实际上更换源之后首先应该执行:
Bashsudo apt update
apt update 的作用是从软件仓库获取最新的软件包索引信息,并不会直接升级已经安装的软件。
如果确认索引更新正常,再执行:
Bashsudo apt upgrade
升级现有软件包。
如果需要处理依赖变化,可以根据实际情况使用:
Bashsudo apt full-upgrade
生产服务器执行升级之前,应先确认业务兼容性,并做好必要的数据和配置备份。
十二、如何恢复 Ubuntu 官方软件源
如果国内镜像出现同步异常、软件包缺失或网络访问问题,可以恢复之前的备份。
执行:
Bashsudo cp /etc/apt/sources.list.bak /etc/apt/sources.list
然后:
Bashsudo apt update
如果没有备份,也可以重新配置 Ubuntu 20.04 官方源,例如:
deb http://archive.ubuntu.com/ubuntu/ focal main restricted universe multiverse deb http://archive.ubuntu.com/ubuntu/ focal-updates main restricted universe multiverse deb http://archive.ubuntu.com/ubuntu/ focal-backports main restricted universe multiverse deb http://security.ubuntu.com/ubuntu focal-security main restricted universe multiverse
恢复完成后再次运行:
Bashsudo apt update
十三、Ubuntu 20.04 生命周期问题需要注意
Ubuntu 20.04 属于较早版本的 Ubuntu LTS。普通维护周期结束后,软件源和安全更新策略会发生变化。
如果长期运行 Ubuntu 20.04 服务器,应确认当前系统是否仍处于对应的维护支持范围。对于已经进入扩展维护阶段的环境,继续使用普通镜像源时可能遇到软件包仓库变化等问题。
因此,在生产环境中不能只关注“国内源速度快不快”,还应该同时考虑系统版本、官方支持周期、安全更新以及业务软件兼容性。
如果服务器允许升级,建议结合业务情况规划向更新的 LTS 版本迁移,而不是长期停留在旧版本上。
十四、桌面版也可以通过图形界面更换
Ubuntu 20.04 Desktop 用户还可以通过“软件和更新”工具修改下载服务器。
打开应用菜单,搜索:
Software & Updates
进入后找到 Ubuntu Software 选项卡,在 Download from 中选择其他服务器。
部分系统可以通过“其他...”选择具体的镜像地址。
选择完成后关闭窗口,系统通常会提示重新载入软件包信息。确认执行后,APT 就会使用新的软件源。
对于服务器或者没有图形桌面的 Ubuntu 20.04,直接编辑 /etc/apt/sources.list 更方便。
十五、推荐的一套完整操作流程
如果目标只是把 Ubuntu 20.04 切换到国内镜像,可以按照下面的顺序执行:
Bash# 1. 备份原始配置 sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak # 2. 编辑软件源 sudo nano /etc/apt/sources.list
填入:
deb https://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse deb https://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse deb https://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse deb https://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
然后执行:
Bash# 3. 更新软件包索引 sudo apt update # 4. 检查软件源 apt policy # 5. 根据需要升级系统 sudo apt upgrade
如果 apt update 能够正常完成,并且下载地址已经变成所选择的国内镜像,基本就完成了软件源切换。
Ubuntu 20.04 更换国内软件源的核心并不复杂,关键是保持发行版代号正确、修改前做好备份,并确保 focal、focal-updates、focal-security 等仓库配置完整。遇到更新失败时,也不要只盯着下载速度,还需要检查 /etc/apt/sources.list.d/ 中的第三方仓库、GPG 签名、网络连接以及系统版本支持状态。
对于长期运行的服务器,建议固定记录当前软件源配置,并在系统升级前保留可恢复的备份。这样既能获得更稳定的软件包下载速度,也能减少因错误修改 APT 配置而导致系统维护中断的风险。