Fedora 国内加速源:dnf、pip、npm、Maven、Cargo、容器与 Flatpak
国内用 Fedora,第一件事是把源换掉。但 F45 有个变化让老教程全部失效:仓库配置文件搬家了。先讲这个,再给可照抄的配置。
仓库文件现在在哪
Section titled “仓库文件现在在哪”ls /usr/share/dnf5/repos.d/fedora.repo fedora-cisco-openh264.repo fedora-updates.repo ...F44 及以前在 /etc/yum.repos.d/,F45 移到了 /usr/share/dnf5/repos.d/(详见仓库配置迁到 /usr)。
所以:
| 你想做的事 | 该动哪里 |
|---|---|
| 改官方源地址 | 直接改 /usr/share/dnf5/repos.d/*.repo(升级会被覆盖) |
| 加自己的源 | 写 /etc/yum.repos.d/*.repo(优先级更高,不会被覆盖) |
推荐后者:在 /etc/yum.repos.d/ 新建文件,用 enabled=0 停掉原来的。
官方源:先看有没有 f45
Section titled “官方源:先看有没有 f45”Fedora 45 尚未正式发布,各镜像站状态不一致,实测(2026-10-28):
| 站点 | releases/45/ | releases/test/45_Beta/ |
|---|---|---|
| 阿里云 | 404 | 200 |
| 清华 TUNA | 404 | 404 |
| 中科大 USTC | 404 | 404 |
目前只有阿里云同步了 F45 Beta 仓库。 等 GA 之后 releases/45/ 才会在各站出现,那时换成正式路径即可。
配置写法:
sudo tee /etc/yum.repos.d/99-lab-cn.repo >/dev/null <<'EOF'[lab-cn-base]name=Aliyun Fedora 45 Beta (base)baseurl=https://mirrors.aliyun.com/fedora/releases/test/45_Beta/Everything/x86_64/os/enabled=1gpgcheck=0skip_if_unavailable=TrueEOF关掉原来的 metalink 源(它们会因为找不到 fedora-45 而报错):
sudo dnf config-manager setopt fedora.enabled=0 updates.enabled=0sudo dnf makecache验证:
dnf list --available nodejs | tail -2nodejs.x86_64 1:22.23.1-4.fc45 lab-cn-base
第三方源:谁支持了 f45
Section titled “第三方源:谁支持了 f45”| 源 | f45 状态 | 说明 |
|---|---|---|
| Remi | 已支持(仅基础仓库) | https://mirrors.aliyun.com/remi/fedora/45/remi/x86_64/ 可用;但 f45 下没有 remi-php83/84 这类版本化仓库,只提供扩展与更新 |
| RPM Fusion | 尚无 | releases/45/ 返回 404,44 可用。装 NVIDIA 驱动、多媒体解码要等 |
Remi 配置:
sudo tee /etc/yum.repos.d/remi-cn.repo >/dev/null <<'EOF'[remi-cn]name=Remi's RPM repository (Aliyun)baseurl=https://mirrors.aliyun.com/remi/fedora/45/remi/x86_64/enabled=0gpgcheck=0EOFsudo dnf --enablerepo=remi-cn makecacheenabled=0 是刻意的:Remi 会替换大量系统包,只在需要时用 --enablerepo=remi-cn 打开。
mkdir -p ~/.config/pipcat > ~/.config/pip/pip.conf <<'EOF'[global]index-url = https://pypi.tuna.tsinghua.edu.cn/simpletrusted-host = pypi.tuna.tsinghua.edu.cnEOF注意这条不总是更快,实测数据见下节。
npm config set registry https://registry.npmmirror.comnpm config get registryhttps://registry.npmmirror.com改回官方:npm config set registry https://registry.npmjs.org。
mkdir -p ~/.m2cat > ~/.m2/settings.xml <<'EOF'<settings> <mirrors> <mirror> <id>aliyun</id> <name>Aliyun Maven</name> <url>https://maven.aliyun.com/repository/public</url> <mirrorOf>central</mirrorOf> </mirror> </mirrors></settings>Gradle 用一个 init 脚本全局生效:
mkdir -p ~/.gradlecat > ~/.gradle/init.gradle <<'EOF'allprojects { repositories { maven { url 'https://maven.aliyun.com/repository/public' } }}EOFCargo / rustup
Section titled “Cargo / rustup”cat > ~/.cargo/config.toml <<'EOF'[source.crates-io]replace-with = 'tuna'
[source.tuna]registry = "sparse+https://mirrors.tuna.tsinghua.edu.cn/crates.io-index/"EOFrustup 本身也能换源:
export RUSTUP_DIST_SERVER=https://mirrors.tuna.tsinghua.edu.cn/rustupexport RUSTUP_UPDATE_ROOT=https://mirrors.tuna.tsinghua.edu.cn/rustup/rustupPodman 默认从 Docker Hub 拉取,国内经常超时。改 /etc/containers/registries.conf.d/:
sudo tee /etc/containers/registries.conf.d/99-cn.conf >/dev/null <<'EOF'unqualified-search-registries = ["docker.io"]
[[registry]]prefix = "docker.io"location = "docker.m.daocloud.io"EOF之后 podman pull nginx 会自动走镜像站。
Go 模块代理
Section titled “Go 模块代理”go env -w GOPROXY=https://goproxy.cn,directgo env GOPROXYFlatpak
Section titled “Flatpak”flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepoflatpak remote-ls --app flathub | head -5Flatpak 的国内镜像在部分高校站有同步(USTC、SJTU 均有 /flathub 目录),但路径结构与官方不同,换源前先用 flatpak remote-ls 验证能列包,免得换完装不上。
实测:换源到底快多少
Section titled “实测:换源到底快多少”同一台机器(F45,千兆内网),2026-10-28 实测:
| 操作 | 官方源 | 国内源 | 结果 |
|---|---|---|---|
dnf install firewalld(11 个包) | 因 DNS/metalink 失败无法完成 | 阿里云 4.0 MiB/s 成功 | 国内源解决的是可用性 |
npm view express version | 1817 ms | npmmirror 439 ms | 快 4 倍 |
pip download numpy(16 MB) | PyPI 2300 ms | 清华 3652 ms | 官方更快 |
#!/bin/bash# Fedora 国内加速(按需注释掉不需要的行)set -e
# 1) dnf:官方源换阿里(GA 后把 45_Beta 换成 45)sudo tee /etc/yum.repos.d/99-cn.repo >/dev/null <<'EOF'[cn-base]name=Aliyun Fedorabaseurl=https://mirrors.aliyun.com/fedora/releases/test/45_Beta/Everything/x86_64/os/enabled=1gpgcheck=0skip_if_unavailable=TrueEOFsudo dnf config-manager setopt fedora.enabled=0 updates.enabled=0
# 2) npmnpm config set registry https://registry.npmmirror.com
# 3) pipmkdir -p ~/.config/pipprintf '[global]\nindex-url = https://pypi.tuna.tsinghua.edu.cn/simple\n' > ~/.config/pip/pip.conf
# 4) gocommand -v go >/dev/null && go env -w GOPROXY=https://goproxy.cn,direct
# 5) 容器sudo mkdir -p /etc/containers/registries.conf.dprintf 'unqualified-search-registries = ["docker.io"]\n\n[[registry]]\nprefix = "docker.io"\nlocation = "docker.m.daocloud.io"\n' \ | sudo tee /etc/containers/registries.conf.d/99-cn.conf >/dev/null
echo "done"| 现象 | 原因 |
|---|---|
改了 /etc/yum.repos.d/ 却不生效 | F45 官方源在 /usr/share/dnf5/repos.d/,两处同名 repo id 时 /etc 优先,但只改 /usr 那份会被升级覆盖 |
Failed to download metadata for repo 'updates' | metalink 找不到 fedora-45,需先关掉原源 |
| 装完包签名告警 | gpgcheck=0 的代价,GA 后必须改回 |
| pip 换源后更慢 | 线路本身好,镜像多一跳;用上面的 curl 先测 |
podman pull 仍然超时 | 只配了 unqualified-search-registries 没配 [[registry]] 重写,或需要 podman system reset 后重试 |
- 仓库配置迁到 /usr — F45 的路径变化
- Fedora 仓库与 dnf5 — 仓库与包管理基础
- 强制签名校验 — 为什么不建议长期
gpgcheck=0 - COPR 第三方仓库 — 社区源