riglen
发布于 2026-03-11 / 3 阅读
0

常用开源镜像源与换源方法汇总

这篇文章整理一些我平时常会用到的系统源、软件源、容器源,以及对应的换源/加速方法,方便以后自己查,也顺手分享给同样经常折腾的朋友。

本文不追求“全网最全”,重点是 常用、能落地、便于自己备忘


一、写在前面

1. 为什么要换源

常见原因主要有这些:

  • 官方源访问慢
  • 下载经常断
  • Docker / 包管理器拉依赖特别慢
  • 境内网络下,部分国外源体验不稳定
  • 装系统、装依赖时,想尽量提升成功率

2. 换源前建议

正式改之前,建议先做三件事:

  1. 备份原配置
  2. 确认系统版本代号
  3. 改完立即更新索引并测试

例如:

cat /etc/os-release
uname -a

3. 常见镜像站

本文主要会用这些作为示例:

  • 清华 TUNA:https://mirrors.tuna.tsinghua.edu.cn
  • 中科大 USTC:https://mirrors.ustc.edu.cn
  • 阿里云:https://mirrors.aliyun.com
  • npm 镜像:https://registry.npmmirror.com
  • Go 代理:https://goproxy.cn

二、系统与系统级软件仓库


1. Debian

适用场景

Debian 服务器、虚拟机、LXC 容器都很常见。

说明

不同 Debian 版本,源配置文件可能不同:

  • 老写法:/etc/apt/sources.list
  • 新写法(Debian 12 及很多新环境常见):/etc/apt/sources.list.d/debian.sources

建议先看本机实际文件再改。

备份

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak 2>/dev/null || true
sudo cp /etc/apt/sources.list.d/debian.sources /etc/apt/sources.list.d/debian.sources.bak 2>/dev/null || true

Debian 12/较新系统常见写法(DEB822)

bookworm 为例:

sudo tee /etc/apt/sources.list.d/debian.sources >/dev/null <<'EOF'
Types: deb
URIs: https://mirrors.ustc.edu.cn/debian
Suites: bookworm bookworm-updates bookworm-backports
Components: main contrib non-free non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg

Types: deb
URIs: https://mirrors.ustc.edu.cn/debian-security
Suites: bookworm-security
Components: main contrib non-free non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
EOF

sudo apt update

传统写法

sudo tee /etc/apt/sources.list >/dev/null <<'EOF'
deb https://mirrors.ustc.edu.cn/debian bookworm main contrib non-free non-free-firmware
deb https://mirrors.ustc.edu.cn/debian bookworm-updates main contrib non-free non-free-firmware
deb https://mirrors.ustc.edu.cn/debian bookworm-backports main contrib non-free non-free-firmware
deb https://mirrors.ustc.edu.cn/debian-security bookworm-security main contrib non-free non-free-firmware
EOF

sudo apt update

恢复官方源

把镜像域名改回:

  • https://deb.debian.org/debian
  • https://security.debian.org/debian-security

2. Ubuntu

说明

Ubuntu 也有两种常见写法:

  • 传统:/etc/apt/sources.list
  • Ubuntu 24.04 及以后,很多安装方式默认使用:/etc/apt/sources.list.d/ubuntu.sources

备份

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak 2>/dev/null || true
sudo cp /etc/apt/sources.list.d/ubuntu.sources /etc/apt/sources.list.d/ubuntu.sources.bak 2>/dev/null || true

Ubuntu 24.04+ 常见写法(DEB822)

noble 为例:

sudo tee /etc/apt/sources.list.d/ubuntu.sources >/dev/null <<'EOF'
Types: deb
URIs: https://mirrors.ustc.edu.cn/ubuntu
Suites: noble noble-updates noble-backports noble-security
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
EOF

sudo apt update

传统写法

jammy 为例:

sudo tee /etc/apt/sources.list >/dev/null <<'EOF'
deb https://mirrors.ustc.edu.cn/ubuntu jammy main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu jammy-updates main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu jammy-backports main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu jammy-security main restricted universe multiverse
EOF

sudo apt update

恢复官方源

把域名改回:

  • https://archive.ubuntu.com/ubuntu
  • https://security.ubuntu.com/ubuntu

3. Proxmox VE(PVE)

说明

PVE 换源通常分两部分:

  1. Debian 基础源
  2. PVE 自己的软件仓库

也就是说,只改 PVE 仓库还不够,Debian 基础源也建议一起改

常见 no-subscription 源

bookworm 为例:

sudo tee /etc/apt/sources.list.d/pve-no-subscription.list >/dev/null <<'EOF'
deb https://mirrors.ustc.edu.cn/proxmox/debian/pve bookworm pve-no-subscription
EOF

sudo apt update

如果你的系统使用 .sources

sudo tee /etc/apt/sources.list.d/pve-no-subscription.sources >/dev/null <<'EOF'
Types: deb
URIs: https://mirrors.ustc.edu.cn/proxmox/debian/pve
Suites: bookworm
Components: pve-no-subscription
Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg
EOF

sudo apt update

enterprise 源如果不用订阅,建议注释掉

sudo sed -i 's|^deb |# deb |g' /etc/apt/sources.list.d/pve-enterprise.list 2>/dev/null || true
sudo sed -i 's|^Types: deb|# Types: deb|g' /etc/apt/sources.list.d/pve-enterprise.sources 2>/dev/null || true

备注

PVE 版本不同,对应的 Debian 代号也可能不同。
示例里写的是 bookworm,你要按你当前系统实际版本调整。


4. Ceph

说明

Ceph 在 PVE 场景中很常见,尤其做集群或分布式存储时会用到。

Debian 示例(Reef)

echo "deb https://mirrors.ustc.edu.cn/ceph/debian-reef/ bookworm main" | \
  sudo tee /etc/apt/sources.list.d/ceph.list

sudo apt update

Ubuntu 示例(Reef)

echo "deb https://mirrors.ustc.edu.cn/ceph/ubuntu-reef/ noble main" | \
  sudo tee /etc/apt/sources.list.d/ceph.list

sudo apt update

备注

reef 只是示例。
如果你用的是其他 Ceph 大版本,比如 quincysquid,目录也要跟着改。


5. OpenWrt

说明

OpenWrt 换源最常见是改:

  • /etc/opkg/distfeeds.conf

但要注意,不同版本、不同构建方式,包管理方案可能不同。
本文先给最常见的 opkg 写法。

一键替换

sed -i 's_https\?://downloads.openwrt.org_https://mirrors.ustc.edu.cn/openwrt_g' /etc/opkg/distfeeds.conf
opkg update

手动查看

cat /etc/opkg/distfeeds.conf

备注

  • 有些镜像站只同步 release,不一定同步 snapshots
  • 如果你用 HTTPS 拉取失败,可能要先安装证书相关包

6. Alpine Linux

配置文件

/etc/apk/repositories

一键替换

sudo cp /etc/apk/repositories /etc/apk/repositories.bak

sudo sed -i 's#https\?://dl-cdn.alpinelinux.org/alpine#https://mirrors.ustc.edu.cn/alpine#g' /etc/apk/repositories

sudo apk update

恢复官方源

把域名改回:

https://dl-cdn.alpinelinux.org/alpine

7. CentOS Stream

说明

CentOS Stream 和老 CentOS 7/8 的 repo 结构不一样。
这里以 Stream 9 为例,直接写常用 repo 内容,最省事。

示例:/etc/yum.repos.d/centos.repo

sudo tee /etc/yum.repos.d/centos.repo >/dev/null <<'EOF'
[baseos]
name=CentOS Stream $releasever - BaseOS
baseurl=https://mirrors.ustc.edu.cn/centos-stream/$releasever-stream/BaseOS/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial

[appstream]
name=CentOS Stream $releasever - AppStream
baseurl=https://mirrors.ustc.edu.cn/centos-stream/$releasever-stream/AppStream/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial

[crb]
name=CentOS Stream $releasever - CRB
baseurl=https://mirrors.ustc.edu.cn/centos-stream/$releasever-stream/CRB/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
EOF

sudo dnf makecache

备注

如果你有 centos-addons.repo、SIG 仓库等需求,再按实际情况补。


8. Rocky Linux / AlmaLinux

说明

这两类系统的换源思路,通常都是:

  1. 注释掉 mirrorlist=metalink=
  2. 启用 baseurl=
  3. 把官方域名换成镜像站域名

Rocky Linux 常见做法

sudo cp -a /etc/yum.repos.d /etc/yum.repos.d.bak

sudo sed -i.bak \
  -e 's|^mirrorlist=|#mirrorlist=|g' \
  -e 's|^#baseurl=https://dl.rockylinux.org/\$contentdir|baseurl=https://mirrors.aliyun.com/rockylinux|g' \
  /etc/yum.repos.d/Rocky-*.repo

sudo dnf makecache

AlmaLinux 常见做法

sudo cp -a /etc/yum.repos.d /etc/yum.repos.d.bak

sudo sed -i.bak \
  -e 's|^mirrorlist=|#mirrorlist=|g' \
  -e 's|^# baseurl=https://repo.almalinux.org|baseurl=https://mirrors.aliyun.com/almalinux|g' \
  /etc/yum.repos.d/almalinux*.repo

sudo dnf makecache

备注

这两类系统各镜像站提供的 repo 文件有时会略有差异。
如果你想最稳,优先直接看镜像站当前给出的专用 repo 说明。


9. Fedora

说明

Fedora 默认走 metalink,很多时候也能正常用。
如果访问不理想,再手动切镜像。

常见做法

sudo cp -a /etc/yum.repos.d /etc/yum.repos.d.bak

sudo sed -i.bak \
  -e 's|^metalink=|#metalink=|g' \
  -e 's|^#baseurl=https://download.example/pub/fedora/linux|baseurl=https://mirrors.ustc.edu.cn/fedora|g' \
  /etc/yum.repos.d/fedora.repo \
  /etc/yum.repos.d/fedora-updates.repo

sudo dnf makecache

10. Arch Linux

配置文件

/etc/pacman.d/mirrorlist

常见做法

把想用的镜像站放到最上面:

sudo cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.bak

sudo sed -i '1i Server = https://mirrors.ustc.edu.cn/archlinux/$repo/os/$arch' /etc/pacman.d/mirrorlist

sudo pacman -Syyu

备注

pacman -Syyu 里的两个 y,就是强制重新同步数据库,换源后很常见。


11. OpenMediaVault(OMV)

说明

OMV 本质上是基于 Debian 的,但它自己有专门的环境变量和仓库配置方法。
不建议把它当成普通 Debian 直接乱改。

常见切换方法

sudo omv-env set OMV_APT_REPOSITORY_URL "https://mirrors.ustc.edu.cn/openmediavault/public"
sudo omv-env set OMV_APT_ALT_REPOSITORY_URL "https://mirrors.ustc.edu.cn/openmediavault/packages"

sudo omv-salt stage run all

备注

OMV 有自己的内核/回移植逻辑,不要随手给它加 Debian backports,不然容易冲突。


三、容器、虚拟化与镜像仓库


12. Docker CE 软件仓库

说明

这个是 Docker 软件包仓库,不是 Docker Hub 镜像加速。
别把这两个概念混了。

Debian / Ubuntu 常见写法

sudo install -m 0755 -d /etc/apt/keyrings

source /etc/os-release

curl -fsSL https://download.docker.com/linux/${ID}/gpg | \
  sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

sudo chmod a+r /etc/apt/keyrings/docker.gpg

sudo tee /etc/apt/sources.list.d/docker.sources >/dev/null <<EOF
Types: deb
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.gpg
URIs: https://mirrors.ustc.edu.cn/docker-ce/linux/${ID}
Suites: ${VERSION_CODENAME}
Components: stable
EOF

sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

备注

  • ${ID} 一般是 debianubuntu
  • ${VERSION_CODENAME} 比如 bookwormjammynoble

13. Docker Hub 镜像加速

说明

这个是平时最常说的“Docker 换源”。

配置文件

/etc/docker/daemon.json

示例

sudo mkdir -p /etc/docker

sudo tee /etc/docker/daemon.json >/dev/null <<'EOF'
{
  "registry-mirrors": [
    "https://your-docker-mirror.example.com"
  ]
}
EOF

sudo systemctl daemon-reload
sudo systemctl restart docker
docker info | grep -A3 "Registry Mirrors"

备注

  • 这里填的是 Docker Hub 镜像加速地址
  • 不是软件源
  • 也不是 GHCR 加速配置

14. GHCR(GitHub Container Registry)加速/代理

说明

GHCR 和 Docker Hub 不一样。
Docker 的 registry-mirrors 不会自动帮你代理 ghcr.io

如果你想加速 GHCR,比较常见的办法是:

  1. 自己搭一个 registry 代理
  2. 上游指向 https://ghcr.io
  3. 拉镜像时,显式从你自己的代理域名拉

示例:自建代理

version: "3.9"
services:
  ghcr-proxy:
    image: registry:3
    container_name: ghcr-proxy
    restart: always
    ports:
      - "5000:5000"
    environment:
      REGISTRY_PROXY_REMOTEURL: https://ghcr.io
      REGISTRY_STORAGE_DELETE_ENABLED: "true"
      OTEL_TRACES_EXPORTER: none
    volumes:
      - ./data:/var/lib/registry

拉取方式

例如原来是:

docker pull ghcr.io/open-webui/open-webui:main

改成类似:

docker pull ghcr.yourdomain.com/open-webui/open-webui:main

备注

这一类方式本质上是 显式走你的代理域名,不是 Docker 自动识别 ghcr.io 并替换。


15. LXC / Incus 镜像

说明

这个点很容易混淆。

  • PVE 里的 LXC 模板下载
  • LXD / Incus 的 public image server
  • linuxcontainers 镜像站

这几件事不完全是一回事。

如果你用的是 Incus

可以这样加公共镜像源:

incus remote add mirror-images https://mirrors.ustc.edu.cn/lxc-images/ --protocol=simplestreams --public
incus image list mirror-images:

备注

如果你说的是 PVE 的 LXC 模板,那更常见的是走 PVE 自己模板机制,而不是直接用这个命令。


四、开发环境与包管理器


16. Python pip / PyPI

临时使用

pip install -i https://pypi.tuna.tsinghua.edu.cn/web/simple package-name

全局设置

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/web/simple

备注

  • 这里的路径里 simple 很关键
  • 改完后可以用 pip config list 看结果

17. Node.js / npm

npm 换源

npm config set registry https://registry.npmmirror.com
npm config get registry

恢复官方源

npm config set registry https://registry.npmjs.org

18. pnpm

换源

pnpm config set registry https://registry.npmmirror.com
pnpm config get registry

恢复官方

pnpm config set registry https://registry.npmjs.org

19. yarn

Yarn Classic / 通用写法

yarn config set registry https://registry.npmmirror.com
yarn config get registry

Yarn Berry / 较新写法

yarn config set npmRegistryServer https://registry.npmmirror.com

恢复官方

yarn config set registry https://registry.yarnpkg.com

20. Maven

配置文件

~/.m2/settings.xml

常见配置

<settings>
  <mirrors>
    <mirror>
      <id>aliyunmaven</id>
      <mirrorOf>*</mirrorOf>
      <name>aliyun maven</name>
      <url>https://maven.aliyun.com/repository/public</url>
    </mirror>
  </mirrors>
</settings>

备注

Maven 的换源本质上就是在 settings.xml 里配置 mirror


21. Gradle

说明

Gradle 常见有两个层面:

  1. 项目依赖仓库
  2. Gradle Wrapper 分发地址

项目依赖仓库示例

build.gradle

repositories {
    mavenLocal()
    maven { url 'https://maven.aliyun.com/repository/public' }
    mavenCentral()
}

build.gradle.kts

repositories {
    mavenLocal()
    maven("https://maven.aliyun.com/repository/public")
    mavenCentral()
}

备注

如果你想所有项目统一生效,也可以考虑写到 init.gradle 里。


22. Go Modules

说明

Go 最常见是配 GOPROXY

设置

go env -w GOPROXY=https://goproxy.cn,direct
go env GOPROXY

恢复官方默认思路

go env -w GOPROXY=https://proxy.golang.org,direct

23. Rustup / Cargo

Rustup

echo 'export RUSTUP_DIST_SERVER=https://mirrors.ustc.edu.cn/rustup' >> ~/.bashrc
echo 'export RUSTUP_UPDATE_ROOT=https://mirrors.ustc.edu.cn/rustup/rustup' >> ~/.bashrc
source ~/.bashrc

Cargo(crates.io 索引)

mkdir -p ~/.cargo

cat > ~/.cargo/config.toml <<'EOF'
[source.crates-io]
replace-with = "tuna"

[source.tuna]
registry = "sparse+https://mirrors.ustc.edu.cn/crates.io-index/"

[registries.tuna]
index = "sparse+https://mirrors.ustc.edu.cn/crates.io-index/"
EOF

备注

sparse+.../ 末尾这个 / 不要漏。


24. Homebrew

说明

Homebrew 近几个大版本后,换源思路跟以前略有区别。
现在很多时候,重点不只是 brew.githomebrew-core.git,还包括 API 和 bottles。

常见环境变量方式

echo 'export HOMEBREW_API_DOMAIN="https://mirrors.ustc.edu.cn/homebrew-bottles/api"' >> ~/.zprofile
echo 'export HOMEBREW_BOTTLE_DOMAIN="https://mirrors.ustc.edu.cn/homebrew-bottles"' >> ~/.zprofile
echo 'export HOMEBREW_BREW_GIT_REMOTE="https://mirrors.ustc.edu.cn/git/homebrew/brew.git"' >> ~/.zprofile
echo 'export HOMEBREW_CORE_GIT_REMOTE="https://mirrors.ustc.edu.cn/git/homebrew/homebrew-core.git"' >> ~/.zprofile

source ~/.zprofile
brew update

恢复官方

unset HOMEBREW_API_DOMAIN
unset HOMEBREW_BOTTLE_DOMAIN
unset HOMEBREW_BREW_GIT_REMOTE
unset HOMEBREW_CORE_GIT_REMOTE

git -C "$(brew --repo)" remote set-url origin https://github.com/Homebrew/brew
git -C "$(brew --repo homebrew/core)" remote set-url origin https://github.com/Homebrew/homebrew-core

brew update

25. MySQL

说明

MySQL 官方源通常不是系统默认自带,很多时候需要额外添加仓库。

Debian / Ubuntu 示例

先准备 key(示例):

sudo install -m 0755 -d /usr/share/keyrings

curl -fsSL https://repo.mysql.com/RPM-GPG-KEY-mysql-2023 | \
  sudo gpg --dearmor -o /usr/share/keyrings/mysql.gpg

Ubuntu 示例(noble,8.4):

echo "deb [signed-by=/usr/share/keyrings/mysql.gpg] https://mirrors.ustc.edu.cn/mysql/apt/ubuntu/ noble mysql-8.4 mysql-tools" | \
  sudo tee /etc/apt/sources.list.d/mysql-community.list

sudo apt update

Debian 示例(bookworm,8.4):

echo "deb [signed-by=/usr/share/keyrings/mysql.gpg] https://mirrors.ustc.edu.cn/mysql/apt/debian/ bookworm mysql-8.4 mysql-tools" | \
  sudo tee /etc/apt/sources.list.d/mysql-community.list

sudo apt update

RHEL / Rocky / Alma 常见思路

通常是把 repo 文件里的官方 baseurl 换成镜像站的 MySQL YUM 地址。


26. MongoDB

Ubuntu / Debian 示例

以 MongoDB 8.0 为例:

curl -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc | \
  sudo gpg --dearmor -o /usr/share/keyrings/mongodb-server-8.0.gpg

echo "deb [signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg] https://mirrors.ustc.edu.cn/mongodb/apt/ubuntu noble/mongodb-org/8.0 multiverse" | \
  sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.list

sudo apt update
sudo apt install -y mongodb-org

备注

如果你是 Debian,把 ubuntu 和发行版代号改成对应值即可。


五、GitHub 下载加速


27. GitHub Release / Raw 下载加速

说明

这一类不属于“标准包管理器换源”,而是 下载层面的加速

常见场景:

  • GitHub Release 下载二进制文件慢
  • raw.githubusercontent.com 拉配置、脚本、规则文件慢

Release

有些镜像站会同步部分热门 GitHub Release。
但要注意:

  • 不是所有项目都有
  • 不是所有 tag 都会同步
  • 路径也可能不是统一固定格式

所以 GitHub Release 加速更适合:

  • 临时下载
  • 某些固定项目长期使用
  • 自己做下载脚本时按项目单独适配

Raw

raw.githubusercontent.com 更偏向“原始文件访问”。
很多工具支持你把 raw 地址改成代理地址或镜像地址,但具体能不能用,取决于你用的那套服务。

我的建议

这类不要写死成“万能方法”,而是分成三种思路:

  1. 有镜像站就用镜像站
  2. 没有镜像站就用代理服务
  3. 长期稳定需求,自己做中转或缓存

六、一些容易混淆的点

1. Docker CE 源 ≠ Docker Hub 镜像加速

  • Docker CE 源:安装 docker-ce 软件包
  • Docker Hub 镜像加速:加速 docker pull

2. GHCR 不能直接靠 registry-mirrors 自动替代

Docker 的镜像加速机制主要针对 Docker Hub。
GHCR 更常见是自建代理,然后显式从代理域名拉取。

3. PVE 换源不只是改 PVE 仓库

Debian 基础源、PVE 源、Ceph 源,往往要分开看。

4. OMV 不建议粗暴按 Debian 回源玩法瞎改

尤其别乱加 backports。

5. OpenWrt 不同版本/构建,换源文件可能不完全一样

别上来就无脑执行脚本,先 cat 一眼实际配置。


七、恢复官方源的一般思路

如果改乱了,大多数场景都可以按这个逻辑恢复:

  1. 找回备份文件
  2. 或者把镜像域名改回官方域名
  3. 删除自建的第三方 repo 文件
  4. 重新刷新缓存

常见命令:

APT

sudo apt clean
sudo apt update

DNF / YUM

sudo dnf clean all
sudo dnf makecache

Pacman

sudo pacman -Syy

APK

sudo apk update

八、我自己的使用建议

如果只是为了“够用、稳定、少折腾”,我一般建议:

系统类

  • Debian / Ubuntu / PVE / OpenWrt:优先清华或中科大
  • Fedora / Arch:优先选同步快的国内镜像
  • Rocky / Alma:优先看镜像站现成说明,不要手搓过头

开发类

  • Python:PyPI 镜像
  • Node:npmmirror
  • Go:goproxy.cn
  • Maven / Gradle:阿里云公共仓库
  • Rust:TUNA

容器类

  • Docker CE:软件源单独配
  • Docker Hub:单独配 registry-mirrors
  • GHCR:单独做代理,不要和 Docker Hub 混为一谈

九、最后

这篇更像是我的个人备忘录。

后续如果我再遇到新的常用源,比如:

  • Kubernetes / Helm
  • PostgreSQL / MariaDB
  • Flutter / Dart / CocoaPods
  • 其他 NAS / 虚拟化相关仓库

再继续往这篇里补就行。

如果你也经常装系统、装容器、拉依赖,那这类“换源清单”真的很适合长期留一篇放博客里,后面直接复制就能用。