
1. 为什么你的apt总是龟速或报错刚装好的Ubuntu系统用apt装软件时是不是经常遇到下载速度只有几十KB/s或者干脆提示Failed to fetch、网络不可达这其实不是你的网络问题而是Ubuntu默认的软件源都在国外服务器上。想象一下你要去超市买东西但最近的超市在另一个半球能不慢吗我刚开始用Ubuntu时也深受其害。有一次安装一个不到100MB的软件硬是下了半小时中途还断了三次。后来才知道国内有多个镜像源可以选择比如阿里云、清华大学、中科大等它们都完整同步了Ubuntu官方源的内容但服务器在国内访问速度能提升10倍不止。常见的apt报错主要有这几类网络超时连接国外服务器不稳定下载中断长距离传输容易丢包证书错误https源配置不当版本不匹配源地址中Ubuntu版本代号写错2. 5分钟快速更换国内源2.1 备份原始源文件安全第一在修改任何系统文件前都要备份。打开终端CtrlAltT执行sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak这个命令会把原始的sources.list文件复制一份加上.bak后缀保存。万一新源有问题随时可以恢复sudo cp /etc/apt/sources.list.bak /etc/apt/sources.list2.2 一键替换为国内源不同Ubuntu版本对应的代号不同千万别搞错Ubuntu 22.04jammyUbuntu 20.04focalUbuntu 18.04bionicUbuntu 16.04xenial以Ubuntu 20.04为例用sed命令一键替换为阿里云源sudo sed -i s|http://.*archive.ubuntu.com|http://mirrors.aliyun.com|g /etc/apt/sources.list sudo sed -i s|http://.*security.ubuntu.com|http://mirrors.aliyun.com|g /etc/apt/sources.list如果想用清华源把mirrors.aliyun.com换成mirrors.tuna.tsinghua.edu.cn即可。2.3 更新软件列表换源后需要刷新本地缓存sudo apt update正常情况会看到大量Get:XX的下载信息速度应该在几MB/s。如果报错请跳到第4章排查。3. 主流国内源配置大全3.1 阿里云镜像源阿里云的镜像服务非常稳定我个人最推荐。以下是Ubuntu 20.04的完整配置deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse3.2 清华大学开源镜像站清华源在教育网速度尤其快适合校园用户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 multiverse3.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 multiverse4. 常见报错与解决方案4.1 Failed to fetch错误这是最常见的错误可能原因有源地址拼写错误版本代号不匹配网络连接问题解决方案检查/etc/apt/sources.list中的URL是否正确确认Ubuntu版本代号是否匹配尝试ping镜像站地址测试连通性4.2 证书验证失败使用https源时可能出现Certificate verification failed: The certificate is NOT trusted.解决方案改用http协议把https改成http或者安装CA证书sudo apt install ca-certificates4.3 无法定位软件包换源后执行apt install时报错E: Unable to locate package xxx解决方案先执行sudo apt update刷新缓存检查软件包名是否拼写正确某些软件需要在特定源中才有5. 进阶技巧与优化5.1 测试哪个源最快可以用netselect-apt工具自动测速sudo apt install netselect-apt netselect-apt -s cn它会测试国内各镜像站的速度并生成最优的sources.list。5.2 图形化换源工具新手可以使用software-properties-gtk图形工具sudo apt install software-properties-gtk sudo software-properties-gtk在Ubuntu软件选项卡中选择下载自-其他-选择镜像站。5.3 仅对特定软件换源有些软件如Docker、ROS需要单独配置源# 例如Docker CE sudo add-apt-repository deb [archamd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable6. 疑难杂症排查指南如果按照上述步骤操作后仍然有问题可以尝试清理旧缓存sudo apt clean sudo apt autoclean检查网络代理设置env | grep -i proxy如果输出有代理设置可能需要临时取消unset http_proxy https_proxy查看详细错误日志sudo apt update -o Debug::Acquire::httptrue测试直接下载wget http://mirrors.aliyun.com/ubuntu/dists/focal/InRelease如果能下载但apt不行可能是apt配置问题。7. 我踩过的那些坑第一次给Ubuntu换源时我把bionic写成了bionc结果apt完全不能用。后来才发现是拼写错误——Ubuntu的版本代号都是动物名称bionic是仿生河狸。还有一次用了清华的https源但系统缺少根证书一直报SSL错误。折腾半天才发现最简单的解决方案是把https改成http。最坑的是有次换源后所有软件包都提示已安装但需要重新安装最后发现是因为同时混用了多个源的软件包导致版本冲突。解决方法是用sudo apt install --fix-broken