配置APT的核心动作就三步:备份源文件、替换为国内镜像、执行apt update,国内服务器按这个流程走完,软件包下载速度多数情况下能从几十KB提升到几MB每秒。
Ubuntu配置apt国内源:从换源到加速完整流程
Ubuntu用户最常遇到的情况是,新装系统后apt下载速度只有几十KB,换源之后才能正常安装软件,配置apt国内源不难,但很多人卡在版本代号对不上这一步。
选择哪个国内源更合适
国内主流镜像站有简米云、清华大学、中科大和华为云,它们都支持HTTP和HTTPS协议,日常使用差异不大,选一个离服务器地域近的即可。
| 镜像站 | 地域优势 | 特色 |
|---|---|---|
| 简米云 | 华东、华南覆盖好 | 更新快,带宽充足 |
| 清华TUNA | 华北教育网优化 | 同时维护多个发行版 |
| 中科大USTC | 华东、教育网 | 历史久,同步稳定 |
| 华为云 | 华南、西南 | 企业内网速度有优势 |
行业共识认为,国内镜像站的同步频率多数为每六小时到每天一次,极端情况下可能延迟到两天。
备份与编辑sources.list
先确认系统版本代号,再备份原文件,最后替换内容。
- 查看版本:
lsb_release -a - 查看源文件路径:
ls /etc/apt/ - 备份源文件:
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak - 编辑源文件:
sudo vim /etc/apt/sources.list
Ubuntu 22.04的版本代号是jammy,24.04是noble,换源时如果写错代号,apt update会直接报404。
下面是一个Ubuntu 22.04简米云源的示例,可以整段替换原文件:
deb http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
替换完成后保存退出,再执行sudo apt update重新生成索引。
Debian配置apt源和apt源和yum源区别
Debian配置apt源比Ubuntu多一个环节,就是组件字段要写全,很多从CentOS转过来的运维会拿yum的思维套apt,结果配置完成后仍然装不上某些软件。
Debian特有的组件字段
Debian的源文件通常长这样:
deb http://mirrors.aliyun.com/debian/ bookworm main contrib non-free non-free-firmware
deb http://mirrors.aliyun.com/debian/ bookworm-updates main contrib non-free non-free-firmware
deb http://mirrors.aliyun.com/debian-security/ bookworm-security main contrib non-free non-free-firmware
- main:完全自由软件
- contrib:依赖自由软件但本身非自由
- non-free:非自由软件
- non-free-firmware:固件类非自由软件
如果少了contrib或non-free,很多解码器、驱动和闭源工具就搜不到,Debian 12的代号是bookworm,Debian 11是bullseye,Debian 13是trixie。
为什么不能直接照搬Ubuntu源
apt源和yum源区别主要在三处:包格式、工具命令、源文件结构。
- 包格式:Debian/Ubuntu使用.deb,CentOS/RHEL使用.rpm
- 更新命令:apt使用
apt update,yum使用yum makecache - 源文件路径:apt在
/etc/apt/sources.list,yum在/etc/yum.repos.d/.repo - 版本区分:apt用代号,yum用大版本号
业内专家指出,混用不同发行版的源文件会让依赖关系产生冲突,轻则装不上软件,重则破坏系统库,Ubuntu虽然基于Debian,但源内容并不完全兼容,不能把Debian源直接写到Ubuntu的sources.list里。
Linux配置apt源步骤:权限、备份、验证一条线
不管是在物理机、云服务器还是树莓派上配置apt,操作路径都一样,只是源文件和版本代号有区别,Linux配置apt源步骤中最容易被忽略的是权限和备份,很多运维半夜改源改崩了,才发现没有可恢复的原文件。
sudo权限与文件备份
- 普通用户编辑源文件:
sudo vim /etc/apt/sources.list - 备份整个apt目录:
sudo cp -r /etc/apt /etc/apt.bak - 备份单个文件:
sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup - 查看当前源内容:
cat /etc/apt/sources.list

改源之前先备份,这个动作成本几乎为零,但能避免大量回滚时间,如果在云服务器上操作,建议同时给系统盘打个快照。
执行apt update并看懂输出
执行更新命令后,输出会显示三类信息:命中、获取、错误。
Hit:本地索引已经是最新,不用重新下载Get:正在从镜像站下载新的索引文件Err:下载失败,需要检查网络、URL或版本代号
如果看到大量Err,先检查域名是否拼错,再检查版本代号是否和系统版本一致,最后用apt-cache policy 软件包名验证某个软件是否已经被新源索引到。
服务器配置apt加速下载与apt换源后更新命令
除了公网换源,还有两种场景需要单独处理:内网离线服务器、需要走代理的服务器,很多公司生产环境不允许直接访问外网,这时服务器配置apt加速下载就要靠本地源或内网镜像。
内网离线场景:本地源搭建
- 准备一台能访问外网的机器,安装
apt-mirror - 配置
/etc/apt/mirror.list,指定要同步的发行版和组件 - 执行
apt-mirror同步镜像 - 将同步目录通过Nginx或Apache发布为HTTP站点
- 内网服务器把
sources.list指向内网地址即可
如果只是临时离线安装,可以挂载系统ISO镜像,使用apt-cdrom add把光盘加到源里,这个方式适合没有公网、也没有内网镜像的应急场景。
代理配置与清理缓存
生产服务器有时需要通过HTTP代理访问外网,修改apt的代理配置文件:
sudo vim /etc/apt/apt.conf.d/95proxies
Acquire::http::Proxy "http://127.0.0.1:7890"; Acquire::https::Proxy "http://127.0.0.1:7890";
如果只是临时使用代理,可以在命令行前加环境变量:
http_proxy=http://127.0.0.1:7890 https_proxy=http://127.0.0.1:7890 sudo apt update
apt换源后更新命令不要只记apt update,完整的更新流程包括索引更新、软件升级和缓存清理:
sudo apt update:刷新索引sudo apt upgrade:升级已安装软件,不删除旧包sudo apt full-upgrade:升级并处理依赖变化,可能删除旧包sudo apt clean:清空本地下载缓存sudo apt autoclean:只删除过期的缓存包sudo apt autoremove:移除不再使用的依赖
多数情况下,日常维护用update加upgrade就够了。full-upgrade适合大版本升级时使用,平时执行也不会造成问题,但要留意它可能删除某些被替换的包。
配置apt常见问题解答
配置apt后update出现GPG错误怎么处理?
GPG错误通常是因为镜像站更换了签名密钥,或者某些第三方源的密钥没有导入,解决办法是重新导入对应源的公钥,或者使用signed-by字段指定密钥文件路径,对于官方源,换一个镜像站后重新执行apt update,错误一般会自动消失。
配置apt国内源后update速度仍慢怎么排查?
先看你的服务器是否走了IPv6,部分网络环境下IPv6路由不通,apt会一直等待超时,可以临时禁用IPv6,或者强制apt使用IPv4:执行sudo apt -o Acquire::ForceIPv4=true update,再检查DNS解析是否正常,换用5.5.5或29.29.29测试。
配置apt时如何批量替换版本代号?
系统升级后,旧代号需要批量改成新代号,不要手动逐行改,用sed一条命令解决:
sudo sed -i 's/jammy/noble/g' /etc/apt/sources.list
执行前先确认新旧代号是否对应正确,Debian从bullseye升级到bookworm同理,把sources.list里的旧代号全部替换成新代号,然后执行sudo apt update && sudo apt full-upgrade。


