Linux & macOS 换源全指南:解决软件下载慢问题
概述
无论是使用 Linux(如 Ubuntu、CentOS)还是 macOS,通过系统默认包管理器(apt、yum、brew)下载软件时,常会遇到 “速度慢、超时失败” 的问题 —— 核心原因是默认源服务器位于国外,国内网络访问存在延迟或带宽限制。
解决这一问题的关键是替换为国内镜像源(如阿里云、清华大学、中科大镜像),这些镜像源会同步国外官方仓库的内容,且国内访问速度极快(通常能达到 MB/s 级别)。
本文针对 Ubuntu(apt 工具)、CentOS(yum 工具)、macOS(Homebrew 工具) 三大主流系统 / 工具,提供 “备份原配置 → 替换国内源 → 生效配置” 的完整步骤,每一步均标注关键注意事项(如系统版本适配、终端类型区分),新手也能快速操作,彻底解决软件下载慢的痛点。
一、Ubuntu 系统:替换 apt 源(Debian 系通用)
Ubuntu 系统使用 apt(Advanced Package Tool)管理软件,默认源配置文件为 /etc/apt/sources.list。替换为国内源(以阿里云为例,稳定且速度快)的步骤如下:
1. 第一步:备份原配置文件(关键!避免出错无法恢复)
修改系统配置前,务必先备份原文件,后续若出现问题可快速还原:
# 备份 sources.list,备份文件名为 sources.list.bak
sudo cp /etc/apt/sources.list{,.bak}
- 命令解析:{,.bak} 是 Shell 语法糖,等价于 sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak,快速创建备份;
- 执行后可通过 ls /etc/apt/sources.list* 验证,若显示 sources.list 和 sources.list.bak,说明备份成功。
2. 第二步:替换为阿里云源
通过 sed 命令批量替换配置文件中的源地址(无需手动编辑文件,避免格式错误):
# 替换 3 类 Ubuntu 源地址为阿里云镜像
sudo sed -i s/cn.archive.ubuntu/mirrors.aliyun/g /etc/apt/sources.list
sudo sed -i s/archive.ubuntu/mirrors.aliyun/g /etc/apt/sources.list
sudo sed -i s/security.ubuntu/mirrors.aliyun/g /etc/apt/sources.list
- 命令解析:
- sed -i:直接修改文件内容(i 表示 “in-place”);
- s/旧地址/新地址/g:全局替换(g 表示 “global”),覆盖 Ubuntu 官方源(archive.ubuntu)、中国区源(cn.archive.ubuntu)、安全更新源(security.ubuntu)。
3. 第三步:验证替换结果
替换后需确认配置文件中已无官方源地址,避免混合使用导致冲突:
# 查看 sources.list 中非注释、非空行的内容(过滤无用信息)
cat /etc/apt/sources.list | grep -vE '^#|^$'
- 预期输出:所有地址均包含 mirrors.aliyun.com(如 deb https://mirrors.aliyun.com/ubuntu/ focal main restricted),无 archive.ubuntu.com 等官方地址,说明替换成功。
4. 第四步:更新源缓存(使配置生效)
替换源后需执行 apt update,让系统加载新源的软件包索引:
sudo apt update
- 执行过程中若显示 “Hit:1 https://mirrors.aliyun.com/ubuntu/ focal InRelease” 等信息,且无 “404 Not Found” 报错,说明新源已生效;
- 后续安装软件(如 sudo apt install git)时,将从阿里云源下载,速度会显著提升。
二、CentOS 系统:替换 yum 源(RHEL 系通用)
CentOS 系统使用 yum(Yellowdog Updater Modified)管理软件,默认源配置文件为 /etc/yum.repos.d/CentOS-Base.repo。同样以阿里云源为例,步骤如下:
1. 第一步:备份原 repo 文件
# 备份 CentOS-Base.repo,备份文件名为 CentOS-Base.repo.bak
sudo cp /etc/yum.repos.d/CentOS-Base.repo{,.bak}
- 验证备份:ls /etc/yum.repos.d/CentOS-Base.repo*,显示两个文件即为成功。
2. 第二步:下载阿里云 repo 文件替换原文件
CentOS 不同版本(如 7、8)的 repo 配置不同,直接从阿里云下载对应版本的配置文件,避免手动编辑格式错误:
# 以 CentOS 8 为例,下载阿里云的 Centos-8.repo 替换原文件
sudo curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-8.repo
- 版本适配:
- 若为 CentOS 7,将链接改为 http://mirrors.aliyun.com/repo/Centos-7.repo;
- 若不确定系统版本,执行 cat /etc/centos-release 查看(如 CentOS Linux release 8.5.2111)。
- 命令解析:curl -o 目标路径 下载链接,将阿里云的 repo 文件直接保存到 /etc/yum.repos.d/ 目录,覆盖原文件。
3. 第三步:清理旧缓存并生成新缓存
yum 会缓存旧源的软件包信息,需先清理再生成新缓存,确保使用新源:
# 清理旧缓存(删除过期的软件包索引)
sudo yum clean all
# 生成新缓存(加载阿里云源的软件包索引)
sudo yum makecache
- 执行 yum makecache 后,若显示 “Metadata cache created”,说明新缓存生成成功;
- 后续执行 yum install 软件名(如 yum install wget)时,将从阿里云源下载。
三、macOS 系统:替换 Homebrew 源
Homebrew(简称 brew)是 macOS 最常用的包管理器,默认从 GitHub 和 Homebrew 官方仓库下载软件,国内访问速度慢。需替换 brew 核心仓库、homebrew-core 软件仓库、bottles 预编译包源 三类地址,以阿里云为例:
1. 第一步:替换 brew 核心仓库(brew.git)
brew 本身的代码仓库(brew.git)默认托管在 GitHub,替换为阿里云镜像:
# 进入 brew 仓库目录(通过 brew --repo 获取路径)
cd "$(brew --repo)"
# 将 git 远程地址改为阿里云镜像
git remote set-url origin https://mirrors.aliyun.com/homebrew/brew.git
- 验证替换:git remote -v,若显示 origin https://mirrors.aliyun.com/homebrew/brew.git (fetch),说明成功。
2. 第二步:替换 homebrew-core 软件仓库(homebrew-core.git)
homebrew-core 是 brew 官方的软件仓库(包含绝大多数软件的配方),同样替换为阿里云镜像:
# 进入 homebrew-core 仓库目录
cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"
# 将 git 远程地址改为阿里云镜像
git remote set-url origin https://mirrors.aliyun.com/homebrew/homebrew-core.git
- 验证替换:git remote -v,显示阿里云地址即为成功。
3. 第三步:替换 bottles 预编译包源(关键!加速二进制包下载)
brew 下载软件时,优先下载预编译的二进制包(称为 bottles),默认源在国外,需通过环境变量 HOMEBREW_BOTTLE_DOMAIN 指定国内源。需根据终端类型(bash 或 zsh)修改配置文件:
情况 1:使用 bash 终端(默认终端)
# 将环境变量写入 ~/.bashrc(bash 启动配置文件)
echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.aliyun.com/homebrew/homebrew-bottles' >> ~/.bashrc
# 使配置立即生效(无需重启终端)
source ~/.bashrc
情况 2:使用 zsh 终端(如 Oh My Zsh 用户)
若已切换为 zsh,配置文件为 ~/.zshrc,需修改对应文件:
# 将环境变量写入 ~/.zshrc(zsh 启动配置文件)
echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.aliyun.com/homebrew/homebrew-bottles' >> ~/.zshrc
# 使配置立即生效
source ~/.zshrc
- 验证配置:执行 echo $HOMEBREW_BOTTLE_DOMAIN,若输出阿里云地址,说明生效。
4. 第四步:更新 brew 源(使配置生效)
brew update
- 执行后若显示 “Already up-to-date.” 或从阿里云源拉取更新,说明新源已生效;
- 后续执行 brew install 软件名(如 brew install node)时,bottles 包将从阿里云下载,速度大幅提升。
5. 可选:恢复为 Homebrew 官方源
若后续需要切换回官方源(如国内源同步延迟),执行以下命令:
# 恢复 brew 核心仓库
cd "$(brew --repo)"
git remote set-url origin https://github.com/Homebrew/brew.git
# 恢复 homebrew-core 仓库
cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"
git remote set-url origin https://github.com/Homebrew/homebrew-core.git
# 清除 HOMEBREW_BOTTLE_DOMAIN 环境变量(bash 用户)
sed -i '' 's/.*HOMEBREW_BOTTLE_DOMAIN.*//'g ~/.bashrc
source ~/.bashrc
# 清除 HOMEBREW_BOTTLE_DOMAIN 环境变量(zsh 用户)
sed -i '' 's/.*HOMEBREW_BOTTLE_DOMAIN.*//'g ~/.zshrc
source ~/.zshrc
# 更新官方源
brew update
四、常见问题与解决方案
1. Ubuntu 换源后 apt update 提示 “404 Not Found”
- 原因:源地址与系统版本不匹配(如用了 CentOS 的源,或 Ubuntu 版本代号错误);
- 解决:
- 执行 lsb_release -c 获取 Ubuntu 版本代号(如 focal 对应 20.04,jammy 对应 22.04);
- 手动编辑 sources.list:sudo nano /etc/apt/sources.list,将地址中的版本代号改为正确值(如 https://mirrors.aliyun.com/ubuntu/ focal main);
- 保存后重新执行 sudo apt update。
2. CentOS 8 换源后 yum 提示 “Failed to download metadata”
- 原因:CentOS 8 官方已停止维护,需使用 CentOS Stream 8 源;
- 解决:下载阿里云的 CentOS Stream 8 源:
sudo curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-Stream-8.repo
sudo yum clean all && sudo yum makecache
- 原因:部分软件(如非官方仓库的软件)未同步到国内源,或 HOMEBREW_BOTTLE_DOMAIN 未生效;
- 解决:
- 验证环境变量:echo $HOMEBREW_BOTTLE_DOMAIN,确保输出阿里云地址;
- 若仍不行,尝试重启终端,或使用 brew install --build-from-source 软件名 从源码编译(速度较慢,但可解决源同步问题)。
五、其他推荐国内源
除阿里云外,以下国内源也稳定可用,可根据地理位置选择(如北方选阿里云,南方选腾讯云,教育网选清华源):
替换时,只需将前文命令中的 “阿里云地址” 替换为对应源的地址即可(步骤完全一致)。
六、总结
本文覆盖三大系统 / 工具的换源流程,核心逻辑均为 “备份原配置 → 替换国内源 → 生效配置”,关键在于:
- Linux 系统:修改包管理器的核心配置文件(sources.list/CentOS-Base.repo);
- macOS Homebrew:需替换 “仓库地址 + 预编译包源”,且区分终端类型;
- 版本适配:确保源地址与系统版本匹配(如 Ubuntu 20.04 对应 focal,CentOS 8 对应 Stream 源)。
换源后,软件下载速度通常能从 “几十 KB/s” 提升到 “几 MB/s”,彻底解决 “安装软件超时” 的问题,为后续开发环境搭建(如安装 Git、Python、Docker)打下基础。