🔍搜索⌘K

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
  • 版本适配:
  • 命令解析: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

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 版本代号错误);
  • 解决:
  1. 执行 lsb_release -c 获取 Ubuntu 版本代号(如 focal 对应 20.04,jammy 对应 22.04);
  2. 手动编辑 sources.list:sudo nano /etc/apt/sources.list,将地址中的版本代号改为正确值(如 https://mirrors.aliyun.com/ubuntu/ focal main);
  3. 保存后重新执行 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 未生效;
  • 解决:
  1. 验证环境变量:echo $HOMEBREW_BOTTLE_DOMAIN,确保输出阿里云地址;
  2. 若仍不行,尝试重启终端,或使用 brew install —build-from-source 软件名 从源码编译(速度较慢,但可解决源同步问题)。

五、其他推荐国内源

除阿里云外,以下国内源也稳定可用,可根据地理位置选择(如北方选阿里云,南方选腾讯云,教育网选清华源):

镜像源Ubuntu 源地址模板CentOS 源地址模板Homebrew 核心仓库地址
清华大学https://mirrors.tuna.tsinghua.edu.cn/ubuntu/https://mirrors.tuna.tsinghua.edu.cn/centos/https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git
中国科学技术大学https://mirrors.ustc.edu.cn/ubuntu/https://mirrors.ustc.edu.cn/centos/https://mirrors.ustc.edu.cn/git/homebrew/brew.git
腾讯云https://mirrors.cloud.tencent.com/ubuntu/https://mirrors.cloud.tencent.com/centos/https://mirrors.cloud.tencent.com/homebrew/brew.git

替换时,只需将前文命令中的 “阿里云地址” 替换为对应源的地址即可(步骤完全一致)。

六、总结

本文覆盖三大系统 / 工具的换源流程,核心逻辑均为 “备份原配置 → 替换国内源 → 生效配置”,关键在于:

  • Linux 系统:修改包管理器的核心配置文件(sources.list/CentOS-Base.repo);
  • MacOS Homebrew:需替换 “仓库地址 + 预编译包源”,且区分终端类型;
  • 版本适配:确保源地址与系统版本匹配(如 Ubuntu 20.04 对应 focal,CentOS 8 对应 Stream 源)。

换源后,软件下载速度通常能从 “几十 KB/s” 提升到 “几 MB/s”,彻底解决 “安装软件超时” 的问题,为后续开发环境搭建(如安装 Git、Python、Docker)打下基础。