尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

Ubuntu 20.04更换国内软件源:APT镜像站选择与配置全攻略

Ubuntu 20.04更换国内软件源:APT镜像站选择与配置全攻略 1. 项目概述为什么更换国内源是Ubuntu环境配置的第一步如果你刚装好Ubuntu 20.04打开终端准备sudo apt update结果发现更新速度慢得像在爬或者干脆就卡在“连接中”不动了那大概率是默认的软件源服务器在国外。对于国内的开发者来说更换软件源为国内镜像站几乎是安装完系统后必做的第一件事。这不仅仅是提升下载速度从几KB/s到几MB/s的体验问题更是后续所有开发环境搭建无论是Python、Java、Node.js还是Docker能否顺利进行的基础。一个稳定、高速的软件源能让你在安装build-essential、python3-pip、docker-ce这些关键包时节省大量等待时间避免因网络超时导致的安装失败。我自己在给团队配置新服务器或开发机时更换国内源永远是初始化脚本里的第一条命令。今天我就来详细拆解一下Ubuntu 20.04更换国内源的全过程不止是告诉你“怎么做”更会讲清楚“为什么这么做”以及不同场景下的选择策略和可能遇到的坑。2. 核心原理与国内镜像站选择2.1 软件源APT Source到底是什么简单来说软件源就是一个包含了软件包列表和下载地址的“仓库目录”。Ubuntu使用的APTAdvanced Package Tool工具会读取/etc/apt/sources.list文件以及/etc/apt/sources.list.d/目录下的配置文件来知道应该去哪里下载软件、检查更新。默认情况下这个文件里指向的是Ubuntu官方的全球服务器如archive.ubuntu.com。由于地理距离和网络路由的原因国内直接访问这些服务器速度很不理想。更换国内源本质上就是把这个“仓库地址”从国外的官方服务器改为位于国内的镜像服务器。这些镜像服务器如阿里云、腾讯云、华为云、清华TUNA等会定时通常是每6小时或每天与Ubuntu官方源同步确保你下载到的软件包是最新且一致的。对于绝大多数常规软件包国内镜像源和官方源在内容上是完全相同的差异仅在于同步延迟这个延迟对于日常开发和使用来说几乎可以忽略不计。2.2 主流国内镜像站对比与选型建议不是所有的镜像站都适合你。选择时需要考虑地理位置、同步频率、网络连通性和附加服务。镜像站名称地址示例优点注意事项适用场景阿里云镜像mirrors.aliyun.com速度极快覆盖全国多线BGP网络同步及时。提供丰富的其他开源项目镜像如Docker、PyPI、NPM。有时会因为用户量大在高峰期出现短暂拥堵。首选推荐。适合绝大多数国内用户无论是个人开发还是企业服务器。腾讯云镜像mirrors.cloud.tencent.com同样速度快稳定性好与腾讯云生态结合紧密。开源镜像生态相对阿里云稍弱。腾讯云服务器用户首选内网访问速度有保障。华为云镜像repo.huaweicloud.com网络质量高尤其适合华为云用户。镜像站域名较长手动输入需仔细。华为云服务器用户或对华为服务有偏好的用户。清华大学 TUNAmirrors.tuna.tsinghua.edu.cn老牌教育网镜像历史悠久信誉好。同步频率高。教育网出口某些非教育网运营商访问可能不如商业云镜像快。教育网用户校园内首选或对高校背景有信任感的用户。中科大 USTCmirrors.ustc.edu.cn同样是老牌镜像用户群体庞大社区活跃。同属教育网网络情况与清华镜像类似。教育网用户或中科大校友的常用选择。实操心得我个人的经验是优先使用与你云服务器提供商一致的镜像。如果你在阿里云ECS上就用阿里云镜像在腾讯云CVM上就用腾讯云镜像。这通常能享受到最优的内网速度流量可能免费和稳定性。对于本地虚拟机或物理机可以先用curl简单测试一下延迟和下载速度再做决定。例如测试阿里云镜像的响应速度curl -o /dev/null -s -w ‘%{time_total}\n’ http://mirrors.aliyun.com/ubuntu/。时间越短通常体验越好。3. 详细操作步骤命令行与图形界面两种方式3.1 方法一通过命令行手动备份与替换最可靠这是最通用、最推荐的方式适用于服务器、桌面版等所有环境。第一步备份原始的源列表文件这是至关重要的一步防止改错后无法恢复。Ubuntu 20.04的默认源配置文件是/etc/apt/sources.list。sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup这条命令将原文件复制一份为sources.list.backup。如果后续操作失误你可以通过sudo cp /etc/apt/sources.list.backup /etc/apt/sources.list轻松还原。第二步编辑源列表文件使用你熟悉的命令行文本编辑器如nano、vim。对于新手nano更友好。sudo nano /etc/apt/sources.list打开文件后你会看到很多以deb或deb-src开头的行后面跟着网址。我们的目标是注释掉所有现有的官方源行并添加新的国内源地址。更高效的做法是直接清空原文件内容然后写入全新的配置。以下是替换为阿里云镜像源的完整内容。你可以直接复制替换掉nano编辑器中的全部内容deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse deb-src 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-backports main restricted universe multiverse关键点解析deb: 表示二进制软件包仓库。deb-src: 表示源代码软件包仓库。普通用户通常不需要但开发者有时需要查看源码可以保留。focal: 这是Ubuntu 20.04的代号。这是最容易出错的地方如果你用的是其他版本如22.04 Jammy必须替换成对应的代号。main restricted universe multiverse: 代表软件包的四个主要组件分区全部启用可以确保软件库最全。分成了focal主仓库、focal-security安全更新、focal-updates常规更新、focal-proposed预发布更新、focal-backports向后移植等多个仓库结构清晰。在nano中粘贴后按CtrlO写入回车确认文件名再按CtrlX退出。第三步更新软件包列表替换源之后必须让APT工具重新读取新的仓库信息。sudo apt update这个命令不会升级任何已安装的软件它只是从你新配置的镜像站下载软件包列表信息到本地。看到所有行都正常命中Hit或获取Get没有错误Err或忽略Ign就说明源更换成功了。第四步可选升级已安装的软件包如果apt update成功你可以选择进行全系统升级。sudo apt upgrade这会列出所有可升级的软件包并询问你是否确认。如果你想跳过确认可以使用sudo apt upgrade -y。3.2 方法二使用图形化工具仅限桌面版对于Ubuntu桌面版用户如果不习惯命令行可以通过“软件和更新”程序来更换。打开“活动概览”搜索“Software Updates”或“软件和更新”。在打开的窗口中点击“Ubuntu Software”标签页。在“Download from”下拉菜单中选择“Other...”。在弹出的国家/地区列表中选择“China”。右侧会列出所有可用的中国镜像站如mirrors.aliyun.com、mirrors.tuna.tsinghua.edu.cn等。选择一个镜像站如阿里云点击“Choose Server”。它会要求你输入密码授权然后自动重写/etc/apt/sources.list文件。关闭窗口时它会提示“可用软件信息已过时”点击“Reload”这相当于执行了sudo apt update。注意图形化方法虽然简单但在某些最小化安装的桌面环境或服务器版中可能不可用。命令行方法是万能的。3.3 一键替换脚本快速部署如果你需要频繁地为多台机器配置可以自己编写一个简单的Shell脚本。创建一个文件比如change_source.sh内容如下#!/bin/bash # 备份原文件 sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup.$(date %Y%m%d%H%M%S) # 定义阿里云源内容 SOURCE_CONTENT‘deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse deb-src 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-backports main restricted universe multiverse’ # 写入新内容 echo “$SOURCE_CONTENT” | sudo tee /etc/apt/sources.list /dev/null # 更新 sudo apt update echo “源已更换为阿里云镜像并完成更新。”然后给脚本执行权限并运行chmod x change_source.sh sudo ./change_source.sh注意事项这个脚本是静态的只适用于focal20.04。为其他版本使用前需要修改脚本中的代号。4. 进阶配置与特定软件源管理4.1 配置第三方PPA源的国内镜像很多软件如新版PHP、Docker、Node.js等不在官方源里需要通过PPAPersonal Package Archive添加。这些PPA默认也在国外。一些国内镜像站提供了PPA的镜像。以Docker官方APT源为例通常添加方式如下sudo add-apt-repository “deb [archamd64] https://download.docker.com/linux/ubuntu focal stable”你可以尝试将其中的https://download.docker.com/linux/ubuntu替换为国内镜像站提供的地址。但请注意并非所有PPA都有国内镜像且镜像同步可能有延迟。最稳妥的方法是先使用官方源安装Docker然后配置Docker守护进程的镜像加速器针对镜像拉取而非软件包安装这属于另一个层面的优化。对于其他PPA如果下载慢可以考虑寻找替代安装方式如通过Snap、Flatpak或直接下载二进制包。使用代理在拥有合法网络访问权限的前提下配置系统级的HTTP代理。4.2 管理多个源配置文件除了主配置文件/etc/apt/sources.listAPT还会读取/etc/apt/sources.list.d/目录下所有以.list结尾的文件。这是一种更清晰的管理方式特别是当你添加了很多第三方源时。例如你可以将阿里云的主源放在sources.list中而将某个特定的第三方源如VSCode单独创建一个文件vscode.list放在sources.list.d/目录下。这样在需要禁用或排查某个特定源时直接删除或修改对应的文件即可不会影响主源配置。4.3 为其他开发环境配置国内源更换了系统APT源只是解决了系统级软件包如gcc,python3,git的下载问题。像Python的pip、Node.js的npm、Java的Maven/Gradle、Docker的镜像拉取它们都有自己的仓库需要单独配置国内源。pip: 创建或修改~/.pip/pip.conf内容[global] index-url https://pypi.tuna.tsinghua.edu.cn/simple trusted-host pypi.tuna.tsinghua.edu.cnnpm: 运行npm config set registry https://registry.npmmirror.comDocker镜像加速器: 编辑/etc/docker/daemon.json添加”registry-mirrors”: [“https://your-mirror.mirror.aliyuncs.com”]然后重启Docker服务。这些配置共同构成了一个完整的“国内开发环境加速网络”能极大提升从系统到应用层的所有安装和更新效率。5. 故障排查与常见问题解决实录即使按照步骤操作也可能会遇到问题。这里记录几个我踩过的坑和解决方法。5.1sudo apt update报错 “Certificate verification failed”现象执行apt update时出现Certificate verification failed: The certificate is NOT trusted.等类似SSL证书错误。原因系统时间不正确或者镜像站使用了自签名证书较少见。解决首先检查系统时间date。如果时间偏差很大比如是几年前SSL证书验证就会失败。同步时间# 安装时间同步工具如果未安装 sudo apt install ntpdate -y # 同步时间 sudo ntpdate time.windows.com # 或者使用 systemd-timesyncd sudo timedatectl set-ntp true如果时间正确可能是镜像站临时问题。可以暂时忽略证书检查不推荐长期使用编辑/etc/apt/sources.list在有问题的源行网址的http后加上[allow-insecureyes]但这只是权宜之计应优先检查网络或更换其他镜像站。5.2 更换源后更新速度依然很慢现象源地址已经改成国内镜像但apt update或apt install速度没有明显改善。排查确认源地址是否真的生效cat /etc/apt/sources.list检查是否还残留官方源地址未被注释。测试网络连接ping mirrors.aliyun.com看延迟和丢包率。如果延迟高、丢包可能是你本地网络到该镜像站的线路问题。尝试另一个镜像站将源地址换成腾讯云或华为云的再试一次。不同运营商对不同镜像站的访问效果可能有差异。检查DNS有时候DNS解析到了不理想的IP。可以尝试修改/etc/resolv.conf使用114.114.114.114或8.8.8.8等公共DNS。5.3 安装软件时提示“无法定位软件包”现象sudo apt install package-name提示E: Unable to locate package package-name。原因软件包名称拼写错误。添加的源中不包含该软件包尤其是第三方PPA。执行apt update失败或未执行本地软件包列表是旧的。解决首先确保已成功运行sudo apt update。使用apt search package-name来搜索完整的包名。确认该软件是否存在于你配置的源中。对于Ubuntu官方软件main和universe仓库包含绝大多数常用软件。5.4 版本代号不匹配导致的错误现象在sources.list中错误地将focal写成了其他版本的代号如jammy导致apt update时大量404 Not Found错误。解决仔细检查sources.list中每一行的版本代号。Ubuntu 20.04是focal。一个快速查看系统代号的方法是lsb_release -cs。5.5 图形界面方法更换源后“Reload”失败现象在“软件和更新”里更换服务器后点击“Reload”长时间无响应或报错。解决直接关闭窗口打开终端手动执行sudo apt update通常可以完成更新。如果手动更新也失败可能是图形化工具生成的源文件格式有误。直接使用命令行方法覆盖配置是最可靠的。6. 最佳实践与维护建议备份习惯在修改任何系统关键配置文件包括但不限于sources.list之前养成先备份的好习惯。cp source source.backup是一个简单的护身符。版本升级后当你将Ubuntu从20.04升级到22.04后必须将sources.list和sources.list.d/下的所有相关文件中的版本代号focal更新为新版本的代号jammy。否则源会全部失效。定期检查国内镜像站偶尔会进行维护或更换访问地址。如果某天突然所有源都失效了可以去该镜像站的官网查看公告。组合使用系统APT源解决了基础环境问题。对于Python、Node.js、Docker、Java等具体开发栈务必记得配置其对应的国内源或镜像加速器形成完整的加速链路。服务器环境在生产服务器上建议固定使用一个稳定可靠的商业云镜像如你所用的云厂商提供的镜像并定期测试更新是否正常。避免使用同步可能不稳定的镜像源。更换国内源这个操作本身很简单但它就像打通了开发环境的“任督二脉”后续所有工具的安装和更新都会变得顺畅。花五分钟做好这件事能为后续节省大量不必要的等待和排错时间。对于在Ubuntu上进行开发的朋友来说这绝对是性价比最高的环境配置操作没有之一。
返回列表