Ubuntu换源实战指南:一键切换国内镜像源
1. 为什么换源是Ubuntu新手绕不开的第一课刚装好Ubuntu兴冲冲打开终端想装个vim或者git敲下sudo apt update结果光标在那儿一动不动等了三分钟才蹦出一行“正在连接 archive.ubuntu.com……”又卡住再等五分钟终于报错“无法连接到服务器”或者“超时”。这时候你翻论坛、查文档十有八九会看到同一个建议“先换源”。这不是玄学而是实实在在的网络基础设施现实——Ubuntu官方源服务器设在境外国内用户直连时数据包要跨越多个骨干网节点、经历NAT转换、受路由策略影响平均RTT往返时延常在300ms以上丢包率波动大尤其在晚高峰时段apt update耗时动辄15分钟起步apt install中途失败更是家常便饭。我带过几十期Linux入门小班几乎每届都有学员因为卡在第一步“更新失败”而放弃。他们不是不会打命令而是根本没意识到APT源不是可有可无的配置项而是整个Ubuntu软件生态的入口咽喉。它决定了你能否顺利获取安全补丁、能否安装最新版开发工具、甚至影响系统升级的成败。而superupdate.sh这个脚本恰恰把这件原本需要手动编辑/etc/apt/sources.list、核对镜像路径、验证GPG密钥、反复apt update测试的繁琐操作压缩成一条命令。它不依赖Python环境纯Bash编写不到200行代码却覆盖了中科大、清华、阿里云、网易、华为云等7个主流国内镜像站还内置了restore回滚机制——这背后不是炫技而是多年一线支持踩出来的经验新手最怕的不是“不会做”而是“做错了不敢 undo”。你可能会问现在Ubuntu桌面版不是自带图形化源设置了吗确实如此但那个界面只改sources.list不处理sources.list.d/下的第三方源比如Docker、VS Code官方源也不校验镜像是否已同步最新版Release文件更不会自动备份原配置。而superupdate.sh在执行前会先用cp /etc/apt/sources.list{,.bak-$(date %Y%m%d-%H%M%S)}生成带时间戳的备份执行后还会运行apt-get check验证源可用性。这些细节才是区分“能用”和“稳用”的分水岭。所以这篇教程我们不只讲“怎么敲那条命令”更要拆解它每一步在干什么、为什么这么设计、哪些坑我替你踩过了——毕竟一个连sources.list格式都还没摸清的新手直接抄命令和拿着菜谱做满汉全席本质上是一回事。2. superupdate脚本的设计逻辑与核心原理2.1 脚本不是黑箱它到底在做什么很多人把superupdate.sh当成一个“魔法按钮”点一下就万事大吉。但作为运维老手我必须说任何自动化脚本的价值都建立在你理解它做了什么、没做什么的基础上。我们来逐层剥开它的逻辑。首先它不是一个独立程序而是一个Bash Shell脚本这意味着它完全依赖系统自带的bash解释器无需额外安装运行时环境这对刚装完系统的裸机极其友好。它的核心流程只有四步但每一步都藏着关键设计环境预检检查curl或wget是否存在二者选一即可这是下载镜像列表的前提配置备份将/etc/apt/sources.list和/etc/apt/sources.list.d/下所有.list文件打包备份到/var/backups/apt-sources/目录并生成时间戳模板替换根据传入参数如aliyun从内置的镜像模板库中选取对应URL结构批量重写sources.list及所有.list文件中的http://archive.ubuntu.com、http://security.ubuntu.com等域名验证与清理执行apt update -qq静默测试若失败则自动恢复备份成功则提示“换源完成”。这里的关键在于第三步的“模板替换”。它不是简单地全局替换字符串而是精准定位deb和deb-src行只修改协议域名路径前三段如http://archive.ubuntu.com/ubuntu→https://mirrors.aliyun.com/ubuntu保留发行版代号jammy、组件名main universe和架构[archamd64]不变。为什么必须保留这些因为jammy对应Ubuntu 22.04如果误替换成focal20.04apt会找不到匹配的软件包索引直接报错。我见过太多人手动替换时漏掉这一环结果系统升级直接瘫痪。2.2 镜像选择背后的硬核考量脚本支持的镜像站绝非随意罗列。我们以实际测试数据说话测试环境上海电信千兆宽带Ubuntu 22.04 LTS2024年Q2镜像站平均RTT (ms)apt update耗时同步延迟小时HTTPS支持备注阿里云12.328s0.5✅ 全量CDN节点最多适合全国用户中科大8.722s0.3✅ 全量延迟最低但北方节点偶有抖动清华15.631s0.2✅ 全量教育网优化最好校园用户首选网易16318.935s0.5~1.2✅ 全量稳定性高但峰值带宽略低华为云14.226s0.5✅ 全量新兴镜像南方节点表现突出提示所谓“同步延迟”指镜像站从Ubuntu官方源拉取新包的时间差。例如某安全补丁在官方源发布后镜像站需若干小时同步。清华镜像因采用rsync增量同步本地缓存延迟常控制在15分钟内而部分小众镜像可能长达6小时——这对需要紧急修复漏洞的生产环境是致命的。脚本默认选阿里云不是因为它“最大牌”而是综合指标最优CDN覆盖全国300城市即使你在新疆或黑龙江也能就近接入边缘节点HTTPS证书由阿里云统一签发无需额外导入CA且其ubuntu仓库结构与官方100%一致连dists/jammy-updates/main/binary-amd64/Packages.xz这种深层路径都严格复刻。反观某些镜像站为节省空间会合并-updates和-security索引导致apt list --upgradable结果异常——superupdate.sh明确规避了这类非标镜像。2.3 为什么必须用sudo执行权限设计的深意你可能注意到所有执行命令都带sudosudo ./superupdate.sh aliyun。这不是为了“显得高级”而是由APT源文件的权限模型决定的。/etc/apt/sources.list的权限是644所有者root组root其他只读普通用户连cat都可能被拒绝取决于系统umask。更重要的是sources.list.d/下的文件往往由第三方软件包安装时创建比如Docker官方源docker.list其权限也是644且属主为root。如果不用sudo脚本只能读取文件无法写入修改——它会安静地失败不报错也不生效让你误以为“换源成功了”实则一切照旧。但sudo也带来风险脚本若存在逻辑缺陷可能误删系统关键文件。因此superupdate.sh在设计上做了双重保险第一所有写操作前必先执行cp备份第二核心替换逻辑用sed -i.bak而非echo 覆盖这样即使中断原始文件仍以.bak后缀留存。我在测试时故意拔掉网线模拟中断验证了备份机制的有效性——sources.list.bak完好无损。这种“宁可多占1MB磁盘绝不冒1%数据丢失风险”的思路正是专业脚本与玩具脚本的本质区别。3. 从零开始的完整实操手把手带你走通每一步3.1 前置准备确认系统状态与网络连通性别急着敲命令。先花2分钟做三件事能避免80%的后续问题第一确认Ubuntu版本与代号打开终端执行lsb_release -a你会看到类似输出No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 22.04.3 LTS Release: 22.04 Codename: jammy重点看Release和Codename。superupdate.sh支持jammy(22.04)、focal(20.04)、bionic(18.04)但不支持已停止维护的xenial(16.04)。如果你的Codename是noble24.04说明你用的是刚发布的开发版脚本尚未适配——此时应改用sudo sed -i s/archive.ubuntu.com/mirrors.aliyun.com/g /etc/apt/sources.list手动替换后面会详解。第二测试基础网络连通性执行ping -c 3 mirrors.aliyun.com正常应返回PING mirrors.aliyun.com (223.6.19.226) 56(84) bytes of data. 64 bytes from 223.6.19.226 (223.6.19.226): icmp_seq1 ttl50 time14.2 ms ... --- mirrors.aliyun.com ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2003ms rtt min/avg/max/mdev 12.8/13.7/14.2/0.6 ms如果显示Name or service not known说明DNS解析失败需先执行sudo systemd-resolve --flush-caches刷新DNS缓存若显示Destination Host Unreachable则是本地网络问题需检查路由器或网线。第三检查APT锁状态Ubuntu在执行apt update或apt install时会创建/var/lib/dpkg/lock-frontend锁文件。如果上次操作异常中断此文件可能残留导致新命令报错“Could not get lock”。执行sudo lsof /var/lib/dpkg/lock-frontend 2/dev/null || echo 锁文件未被占用若返回进程ID用sudo kill -9 PID结束若无输出说明可安全操作。注意这三步看似琐碎但我在技术支持中发现约35%的“换源失败”案例根源都在第一步版本识别错误或第二步DNS故障。跳过检查直接执行等于蒙眼开车。3.2 下载与执行脚本一条命令背后的分解动作官方给的命令是rm superupdate.sh ; wget https://gitee.com/ncnynl/linux-scripts/raw/master/superupdate.sh ; sudo chmod x ./superupdate.sh; sudo ./superupdate.sh aliyun但作为严谨的操作我建议你分步执行并观察每步输出而不是复制粘贴一气呵成步骤1清理旧脚本如有rm -f superupdate.sh加-f参数避免“文件不存在”报错干扰。注意这里删除的是当前目录下的superupdate.sh不影响系统其他位置。步骤2下载脚本wget https://gitee.com/ncnynl/linux-scripts/raw/master/superupdate.sh执行后你会看到--2024-05-20 10:23:45-- https://gitee.com/ncnynl/linux-scripts/raw/master/superupdate.sh Resolving gitee.com (gitee.com)... 180.97.125.227, 180.97.125.226 Connecting to gitee.com (gitee.com)|180.97.125.227|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 1842 (1.8K) [application/x-sh] Saving to: ‘superupdate.sh’ superupdate.sh 100%[] 1.80K --.-KB/s in 0s关键看200 OK和Length。若返回404 Not Found说明脚本地址已变更需去 Gitee项目页 查找最新链接若卡在Connecting则是Gitee访问不稳定可临时换用GitHub镜像见后文“备用方案”。步骤3赋予执行权限chmod x superupdate.shx表示添加“可执行”权限。Bash脚本本质是文本没有此权限./superupdate.sh会报错“Permission denied”。你可以用ls -l superupdate.sh验证输出中应有-rwxr-xr-x第三个字符是x。步骤4执行换源以阿里云为例sudo ./superupdate.sh aliyun此时脚本启动你会看到类似输出[INFO] 检测到系统为 Ubuntu 22.04 (jammy) [INFO] 正在备份 sources.list 和 sources.list.d/ 下所有 .list 文件... [INFO] 备份完成存于 /var/backups/apt-sources/20240520-102345/ [INFO] 正在替换为 阿里云 镜像源... [INFO] 替换完成共修改 2 个文件。 [INFO] 正在执行 apt update 测试... Hit:1 https://mirrors.aliyun.com/ubuntu jammy InRelease Get:2 https://mirrors.aliyun.com/ubuntu jammy-updates InRelease [119 kB] ... Fetched 1,234 kB in 3s (412 kB/s) Reading package lists... Done [SUCCESS] 换源成功请执行 apt update 更新索引。重点观察[SUCCESS]和最后的Reading package lists... Done。如果出现Err:1 ... Connection failed说明镜像URL不通需检查网络或换其他镜像。3.3 深度解析脚本如何精准修改sources.listsuperupdate.sh的核心能力在于“智能替换”而非暴力搜索。我们以sources.list原始内容为例Ubuntu 22.04默认deb http://archive.ubuntu.com/ubuntu jammy main restricted universe multiverse deb http://archive.ubuntu.com/ubuntu jammy-updates main restricted universe multiverse deb http://archive.ubuntu.com/ubuntu jammy-backports main restricted universe multiverse deb http://security.ubuntu.com/ubuntu jammy-security main restricted universe multiverse脚本执行aliyun参数后会将其改为deb https://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse deb https://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse deb https://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse deb https://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse注意三个关键变化协议升级http→https启用TLS加密防止中间人篡改域名替换archive.ubuntu.com→mirrors.aliyun.comsecurity.ubuntu.com→mirrors.aliyun.com路径补全末尾添加/确保jammy前缀正确拼接mirrors.aliyun.com/ubuntu/ jammy而非mirrors.aliyun.com/ubuntujammy。这个过程由脚本内的sed命令实现sed -i s|http://archive.ubuntu.com/ubuntu|https://mirrors.aliyun.com/ubuntu/|g $file sed -i s|http://security.ubuntu.com/ubuntu|https://mirrors.aliyun.com/ubuntu/|g $file|作为分隔符替代常见的/避免URL中的/引发语法错误-i表示就地修改g表示全局替换。但脚本更聪明的是它会跳过注释行以#开头和空行只处理deb和deb-src行。如果你手动编辑很容易误改# deb cdrom:[Ubuntu...]这类注释导致apt解析失败。实操心得我曾遇到一个案例用户在sources.list里手动添加了PPA源ppa:deadsnakes/ppa而superupdate.sh默认不处理PPA因其URL结构特殊。结果换源后apt update报错“无法验证PPA签名”。解决方案很简单在执行脚本前先用sudo add-apt-repository --remove ppa:deadsnakes/ppa移除PPA换源成功后再重新添加。这提醒我们脚本是利器但不能替代对系统结构的理解。3.4 恢复官方源不是“后悔药”而是“安全阀”执行sudo ./superupdate.sh restore脚本会查找/var/backups/apt-sources/下最新备份按时间戳排序将备份中的sources.list和所有.list文件原样拷贝回/etc/apt/目录执行apt update验证恢复效果。但请注意restore不是万能的。如果在换源后你手动执行过sudo apt update sudo apt upgrade系统可能已从新源下载并安装了部分软件包。此时恢复源apt会认为“本地包版本高于源索引”导致apt list --upgradable显示大量“held back”包。解决方法是sudo apt update sudo apt install --only-upgrade $(apt list --upgradable 2/dev/null | grep -v Listing | cut -d/ -f1)这条命令强制升级所有可升级包消除版本差异。更关键的是restore只恢复APT源配置不恢复已安装的软件包。比如你换源后装了新版firefox来自阿里云镜像恢复官方源后firefox依然存在只是下次升级会从archive.ubuntu.com拉取。这符合设计预期——源配置和软件包是两个独立层面。提示我习惯在每次重大操作前用sudo apt list --installed installed-before-$(date %Y%m%d).txt记录已安装包列表。这样万一出问题能快速比对差异定位是源问题还是包冲突。4. 常见问题与排查技巧实录那些没人告诉你的坑4.1 “换源后apt update报错The repository does not have a Release file”这是最高频的报错典型输出E: The repository https://mirrors.aliyun.com/ubuntu jammy Release does not have a Release file. N: Updating from such a repository cant be done securely, and is therefore disabled by default. N: See apt-secure(8) manpage for repository creation and user configuration details.根本原因镜像URL路径错误导致apt找不到dists/jammy/Release文件。常见于两种情况路径末尾缺少/如https://mirrors.aliyun.com/ubuntu错误 vshttps://mirrors.aliyun.com/ubuntu/正确。少一个/apt会尝试访问https://mirrors.aliyun.com/ubuntujammy/Release自然404镜像站未同步该发行版例如你用的是Ubuntu 24.04noble但阿里云镜像尚未上线noble仓库通常新版本发布后1-2周才同步。排查步骤用浏览器打开https://mirrors.aliyun.com/ubuntu/dists/查看页面是否列出jammy、focal等目录若存在再访问https://mirrors.aliyun.com/ubuntu/dists/jammy/Release确认能下载到Release文件大小约100KB若第2步失败在终端执行curl -I https://mirrors.aliyun.com/ubuntu/dists/jammy/Release看HTTP状态码是否为200。解决方案如果是路径问题手动编辑sources.list确保所有URL以/结尾如果是镜像未同步换用cn中科大或tsinghua清华它们通常同步更快。4.2 “执行脚本后sudo apt install 报错Unable to locate package”例如输入sudo apt install vim返回Reading package lists... Done Building dependency tree... Done Reading state information... Done E: Unable to locate package vim真相apt update根本没成功但你没注意到。apt install会先检查本地索引索引为空时就报此错。快速诊断法apt list --installed | head -5 # 查看已安装包若只有基础包dpkg, bash等说明索引未更新 apt policy vim # 若返回“Installed: (none) Candidate: (none)”证明索引缺失根治步骤强制更新索引sudo apt clean sudo apt update若仍失败检查/etc/apt/sources.list是否被意外修改如多了空格、中文字符用sudo cat /etc/apt/sources.list | grep -v ^# | grep -v ^$确认所有有效行都以deb或deb-src开头。我的避坑技巧在sudo apt update后立即执行apt list --upgradable | wc -l。正常情况下22.04系统应返回100行表示有上百个待升级包。如果返回0或极小数字5基本可判定索引未正确加载。4.3 “换源后系统升级失败Error during update: Could not calculate the upgrade”执行sudo do-release-upgrade时卡在“Calculating the changes”最终报错。这通常发生在跨版本升级如20.04→22.04时。核心矛盾do-release-upgrade需要同时访问old-release旧版源和new-release新版源的Release文件。但国内镜像站为节省空间常只保留最近2个LTS版本的完整仓库。例如22.04发布后部分镜像会下架focal20.04的-updates和-security索引。验证方法# 检查旧源是否完整 curl -I https://mirrors.aliyun.com/ubuntu/dists/focal-updates/Release 2/dev/null | head -1 # 检查新源是否存在 curl -I https://mirrors.aliyun.com/ubuntu/dists/jammy/Release 2/dev/null | head -1稳妥方案升级前临时切回官方源sudo sed -i s|https://mirrors.aliyun.com/ubuntu/|http://archive.ubuntu.com/ubuntu/|g /etc/apt/sources.list sudo sed -i s|https://mirrors.aliyun.com/ubuntu/|http://security.ubuntu.com/ubuntu/|g /etc/apt/sources.list sudo apt update sudo do-release-upgrade升级完成后再用superupdate.sh换回国内源。虽然慢一点但成功率100%。4.4 高级场景如何为Docker、VS Code等第三方源换镜像superupdate.sh默认只处理/etc/apt/sources.list和sources.list.d/下的.list文件但像Docker官方源/etc/apt/sources.list.d/docker.list其URL是https://download.docker.com/linux/ubuntu不在脚本模板库中。这时需手动操作Docker源换阿里云镜像# 备份原文件 sudo cp /etc/apt/sources.list.d/docker.list /etc/apt/sources.list.d/docker.list.bak # 替换URL注意Docker源无/ubuntu/路径 sudo sed -i s|https://download.docker.com/linux/ubuntu|https://mirrors.aliyun.com/docker-ce/linux/ubuntu|g /etc/apt/sources.list.d/docker.list # 更新索引 sudo apt updateVS Code源换清华镜像# VS Code源通常是deb [archamd64] https://packages.microsoft.com/repos/code stable main # 清华镜像对应URL为 https://mirrors.tuna.tsinghua.edu.cn/vscode/deb sudo sed -i s|https://packages.microsoft.com/repos/code|https://mirrors.tuna.tsinghua.edu.cn/vscode/deb|g /etc/apt/sources.list.d/vscode.list sudo apt update关键原则第三方源的镜像URL必须与官方源结构严格一致。例如Docker官方源是/linux/ubuntu/清华镜像就是/docker-ce/linux/ubuntu/少一个/docker-ce/就会404。我整理了一份常用第三方源镜像对照表放在文末“附录”中供你速查。5. 进阶技巧与安全实践让换源真正为你所用5.1 定制化脚本为你的团队预置专属镜像superupdate.sh是通用脚本但企业环境常需定制。比如你公司在北京所有服务器都应优先用清华镜像或你管理一批树莓派ARM架构需指定arm64专用源。这时可以fork脚本并修改步骤1克隆到本地git clone https://gitee.com/ncnynl/linux-scripts.git cd linux-scripts步骤2编辑superupdate.sh在镜像定义区添加自定义源找到类似case $1 in的代码块在aliyun)分支后添加beijing) MIRROR_URLhttps://mirrors.tuna.tsinghua.edu.cn/ubuntu/ SECURITY_MIRROR_URLhttps://mirrors.tuna.tsinghua.edu.cn/ubuntu/ echo [INFO] 正在替换为 清华大学 镜像源北京优化... ;;步骤3添加清华镜像的ARM64支持在replace_sources()函数中针对arm64架构添加特殊处理if [ $(dpkg --print-architecture) arm64 ]; then # 清华ARM64镜像路径略有不同 MIRROR_URLhttps://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ SECURITY_MIRROR_URLhttps://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ fi步骤4打包分发# 生成可执行包 chmod x superupdate.sh # 上传到内部GitLab团队成员执行 curl -sS https://gitlab.yourcompany.com/internal-scripts/superupdate.sh | sudo bash -s beijing这样sudo bash -s beijing就能一键部署公司标准源无需记忆URL。5.2 安全加固为什么HTTPS不是可选项所有主流镜像站阿里云、清华、中科大都支持HTTPS但脚本默认启用。这是有深刻安全考量的防篡改HTTP明文传输中间网络设备如公共WiFi路由器可劫持Packages文件注入恶意包。HTTPS通过TLS加密确保你下载的索引文件与镜像站发布的一致防降级攻击攻击者可伪造HTTP响应将https://mirrors.aliyun.com重定向到钓鱼站点。HTTPS证书链验证能阻止此类攻击合规要求等保2.0和GDPR明确要求软件分发通道必须加密。验证HTTPS是否生效执行apt policy | grep https正常应显示所有源URL均为https。若仍有http说明脚本未正确替换需检查sources.list中是否有硬编码的http行。实操心得我曾帮一家金融客户审计APT源发现其/etc/apt/sources.list.d/下有个internal.list内容是deb http://10.0.1.100/repo focal main内网HTTP源。虽然内网相对安全但审计报告仍要求改为https://10.0.1.100/repo并配置私有CA证书。这提醒我们安全不是“有没有”而是“处处有”。5.3 性能调优让apt update快如闪电换源只是第一步还可以进一步优化APT性能启用并行下载Ubuntu 22.04echo Acquire::http::Pipeline-Depth 10; | sudo tee -a /etc/apt/apt.conf.d/99-pipeline echo Acquire::http::Max-Pipeline-Depth 10; | sudo tee -a /etc/apt/apt.conf.d/99-pipeline这允许apt同时发起10个HTTP连接充分利用带宽。禁用GPG检查仅限可信内网echo Acquire::Check-Valid-Until false; | sudo tee -a /etc/apt/apt.conf.d/99-no-check echo Acquire::AllowInsecureRepositories true; | sudo tee -a /etc/apt/apt.conf.d/99-no-check注意此操作降低安全性仅推荐在离线内网或测试环境使用。使用apt-fast替代apt需额外安装sudo add-apt-repository ppa:apt-fast/stable sudo apt update sudo apt install apt-fastapt-fast基于axel多线程下载实测apt update耗时可再降40%。最后分享一个真实案例某AI实验室有200台Ubuntu工作站每天apt update消耗约3TB外网流量。他们部署了本地APT缓存服务器apt-cacher-ng所有机器指向http://10.0.1.100:3142外网流量归零apt update平均耗时从45秒降至3秒。这说明换源是起点架构优化才是终点。6. 附录一线实测镜像源速查表与备用方案6.1 主流镜像源完整URL对照表2024年实测镜像站Ubuntu主源HTTPSUbuntu安全源HTTPSDocker CE源VS Code源同步延迟推荐场景阿里云https://mirrors.aliyun.com/ubuntu/https://mirrors.aliyun.com/ubuntu/https://mirrors.aliyun.com/docker-ce/linux/ubuntu/https://mirrors.aliyun.com/vscode/deb/0.5h全国通用CDN最优清华TUNAhttps://mirrors.tuna.tsinghua.edu.cn/ubuntu/https://mirrors.tuna.tsinghua.edu.cn/ubuntu/https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu/https://mirrors.tuna.tsinghua.edu.cn/vscode/deb/0.2h教育网/北京用户中科大USTChttps://mirrors.ustc.edu.cn/ubuntu/https://mirrors.ustc.edu.cn/ubuntu/https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/https://mirrors.ustc.edu.cn/vscode/deb/0.3h华东/华南用户华为云https://repo.huaweicloud.com/ubuntu/https://repo.huaweicloud.com/ubuntu/https://repo.huaweicloud.com/docker-ce/linux/ubuntu/https://repo.huaweicloud.com/vscode/deb/0.5h华南/海外用户网易163https://mirrors.163.com/ubuntu/https://mirrors.163.com/ubuntu/https://mirrors.163.com/docker-ce/linux/ubuntu/https://mirrors.163.com/vscode/deb/0.5~1.2h稳定性优先注所有URL末尾的/不可省略否则apt解析失败。表格中“Ubuntu安全源”与主源相同因国内镜像已合并security索引。6.2 备用下载方案当Gitee访问失败时Gitee偶尔因网络波动无法访问此时可用以下方式获取脚本方案1GitHub镜像推荐wget