🔍搜索⌘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)打好基础。