说到 Fedora,很多刚接触 Linux 的朋友第一反应都是:“这是个很酷的系统,但下载软件慢得让人想砸键盘。”
如果你正在经历这种痛苦——sudo dnf install 转圈转到天荒地老,或者遇到 Error: Failed to download metadata 的红屏报错,那你找对地方了。这篇文章不讲那些枯燥的官方文档翻译,而是结合了大量真实场景和避坑指南,帮你把 Fedora 的源配置得妥妥帖帖。别急,我们一步步来,就像给电脑装个“加速器”一样简单。
为什么你的 Fedora 下载这么慢?
首先,咱们得搞清楚“元凶”是谁。Fedora 官方默认使用的是美国底特律(Detroit)等地的服务器。对于国内的我们来说,跨越太平洋和大洲去访问这些服务器,延迟高、带宽窄,下载速度慢是完全正常的。
这就好比你要从北京去广州取个快递,但快递点却设在纽约。除非你有私人飞机,否则大概率会晕车。
国内常见的镜像源有哪些?
在动手改配置之前,先看看哪些镜像源靠谱。以下是 2023 年国内最稳定、速度最快的几个选择:
| 镜像源名称 | 地址前缀 | 特点 |
|---|---|---|
| 清华大学 (Tuna) | mirrors.tuna.tsinghua.edu.cn |
极其稳定,学术圈首选,大部分用户的首选。 |
| 中科大 (USTC) | mirrors.ustc.edu.cn |
速度很快,服务器负载相对较低,非常靠谱。 |
| 阿里云 (Aliyun) | mirrors.aliyun.com |
数据中心多,带宽充足,非工作时间速度极快。 |
| 华为云 (Huawei) | repo.huaweicloud.com |
新晋黑马,连接质量不错,适合部分地区。 |
| 腾讯云 | mirrors.tencent.com |
适合使用腾讯云服务器的用户,国内访问快。 |
小贴士:如果你分不清谁更快,清华大学 Tuna 和 阿里云 是最不容易出错的选择。
方法一:一键脚本换源(最推荐,适合新手)
说实话,手动去改那十几个 .repo 文件既繁琐又容易出错。很多老手和社区都推荐用脚本。这是最安全、最省心的方法。
使用官方或社区推荐的脚本
Fedora 社区有一个非常流行的换源脚本,它能自动检测你的版本,并替换为国内镜像。
第一步:安装 dnf-plugins-core(确保你有 dnf config-manager 命令)
sudo dnf install dnf-plugins-core -y
第二步:获取并运行换源脚本
这里提供一个经过验证的、简洁的一键脚本逻辑。你可以直接复制以下命令到终端运行(以清华大学源为例):
# 备份原有的源配置(这一步很重要,万一新源挂了,还能恢复)
sudo cp -r /etc/yum.repos.d /etc/yum.repos.d.bak
# 替换 Fedora 主源
sudo sed -i 's|^metalink=|#metalink=|g' /etc/yum.repos.d/fedora.repo
sudo sed -i 's|^#baseurl=https://download.example/fedora/releases/|baseurl=https://mirrors.tuna.tsinghua.edu.cn/fedora/releases/|g' /etc/yum.repos.d/fedora.repo
sudo sed -i 's|^#baseurl=https://download.example/updates/|baseurl=https://mirrors.tuna.tsinghua.edu.cn/updates/|g' /etc/yum.repos.d/fedora.repo
# 替换 Fedora Modularity 源
sudo sed -i 's|^metalink=|#metalink=|g' /etc/yum.repos.d/fedora-modularity.repo
sudo sed -i 's|^#baseurl=https://download.example/fedora/streams/modularity/releases/|baseurl=https://mirrors.tuna.tsinghua.edu.cn/fedora/streams/modularity/releases/|g' /etc/yum.repos.d/fedora-modularity.repo
sudo sed -i 's|^#baseurl=https://download.example/updates/modularity/|baseurl=https://mirrors.tuna.tsinghua.edu.cn/updates/modularity/|g' /etc/yum.repos.d/fedora-modularity.repo
# 替换 Fedora RPM Fusion(如果你用了这个源的话)
sudo sed -i 's|^metalink=|#metalink=|g' /etc/yum.repos.d/rpmfusion-free.repo
sudo sed -i 's|^#baseurl=http://download1.rpmfusion.org/free/fedora/|baseurl=https://mirrors.tuna.tsinghua.edu.cn/rpmfusion/fedora/|g' /etc/yum.repos.d/rpmfusion-free.repo
sudo sed -i 's|^metalink=|#metalink=|g' /etc/yum.repos.d/rpmfusion-nonfree.repo
sudo sed -i 's|^#baseurl=http://download1.rpmfusion.org/nonfree/fedora/|baseurl=https://mirrors.tuna.tsinghua.edu.cn/rpmfusion/fedora/|g' /etc/yum.repos.d/rpmfusion-nonfree.repo
# 清理并重建缓存
sudo dnf clean all
sudo dnf makecache
运行结果:
看到 Metadata Cache Created 并且速度飞快(比如每秒几 MB 甚至几十 MB),那就说明成功了!
注意:上面的
sed命令可能会因为 Fedora 不同版本(38, 39, 40 等)的路径差异而失效。如果发现没效果,建议使用更智能的方法。
更简单的方案:使用 mirrorlist 自动选择
Fedora 其实自带了镜像列表功能,只是默认被禁用。你可以尝试开启它,让系统自动选择一个离你最近的源。
# 修改所有 repo 文件,取消 metalink 注释,禁用 baseurl
sudo sed -i 's|#metalink=|metalink=|g' /etc/yum.repos.d/fedora.repo
sudo sed -i 's|metalink=|#metalink=|g' /etc/yum.repos.d/fedora-modularity.repo
# 注意:RPM Fusion 等第三方源需要单独处理
sudo dnf clean all
sudo dnf makecache
这个方法的优势是兼容性好,不管 Fedora 怎么改版路径,metalink 机制都能自动找到合适的服务器。
方法二:手动修改 .repo 文件(适合进阶用户)
如果你喜欢掌控一切,或者脚本不管用,手动改文件是最直观的方法。
1. 定位文件
所有的源配置都在 /etc/yum.repos.d/ 目录下。主要的文件有:
fedora.repofedora-updates.repofedora-modularity.reporpmfusion-free.repo和rpmfusion-nonfree.repo
2. 编辑文件
用你喜欢的编辑器打开,比如 nano 或 vim:
sudo nano /etc/yum.repos.d/fedora.repo
3. 修改关键行
找到以 metalink 和 baseurl 开头的行。
修改前(默认):
#metalink=https://mirrors.fedoraproject.org/metalink?repo=fedora-39&arch=$basearch
baseurl=https://download.fedoraproject.org/pub/fedora/linux/releases/39/Everything/$basearch/os/
修改后(以清华源为例):
metalink=https://mirrors.tuna.tsinghua.edu.cn/fedora/streams/39/Everything/$basearch/os
#baseurl=https://download.fedoraproject.org/pub/fedora/linux/releases/39/Everything/$basearch/os/
关键点:
- 把
metalink=...这行前面的#去掉。 - 把
baseurl=...这行前面加上#注释掉。 - 确保 URL 地址正确。
4. 保存并退出
按 Ctrl+O 保存,Ctrl+X 退出。
5. 清理缓存
sudo dnf clean all
sudo dnf makecache
常见问题与避坑指南
换源过程中,新手经常会遇到各种奇葩问题。下面我把这些“坑”都给你填上。
问题 1:改完源后,dnf update 报错 GPG key retrieval failed
原因:换源后,数字签名验证失败,通常是因为新源的 GPG 密钥路径变了,或者密钥过期了。
解决方法: 重新导入官方或镜像站的 GPG 密钥。
# 重新安装 Fedora 的 GPG 密钥
sudo rpm --import https://getfedora.org/static/3464E5E9.txt
# 或者针对清华源
sudo rpm --import https://mirrors.tuna.tsinghua.edu.cn/fedora/linux/39/Everything/x86_64/os/RPM-GPG-KEY-fedora-39-primary
如果是 RPM Fusion 的源报错,同样需要导入其密钥:
sudo rpm --import https://mirrors.tuna.tsinghua.edu.cn/rpmfusion/fedora/rpmfusion-free-39-0.1.noarch.rpm
问题 2:只改主源,不改 RPM Fusion,导致部分软件装不上
重要提醒:很多用户只改了 fedora.repo,忘了改 rpmfusion-free.repo 和 rpmfusion-nonfree.repo。这会导致 dnf install 某些软件(如 Steam、代码编译器、多媒体解码器)时,依然去访问美国服务器,速度慢甚至超时。
检查方法:
grep baseurl /etc/yum.repos.d/rpmfusion-*.repo
确保这些文件里的 baseurl 也指向了国内镜像。
问题 3:Error: Failed to download metadata for repo 'updates'
原因:这个错误通常不是源本身的问题,而是本地缓存损坏,或者网络连接被防火墙/运营商拦截。
解决步骤:
- 彻底清理缓存:
sudo rm -rf /var/cache/dnf sudo dnf clean all sudo dnf makecache - 检查 DNS:
有时候 DNS 解析失败会导致连接超时。尝试将 DNS 改为
114.114.114.114或8.8.8.8。sudo nmcli connection show "你的网络连接名" | grep ipv4.dns sudo nmcli connection modify "你的网络连接名" ipv4.dns "114.114.114.114" sudo nmcli connection up "你的网络连接名"
问题 4:我想用阿里云,但清华源更稳定,怎么切换?
很简单,修改配置后再次 clean 并 makecache 即可。
# 把 sed 命令里的 tuna 换成 aliyun
sudo sed -i 's|mirrors.tuna.tsinghua.edu.cn|mirrors.aliyun.com|g' /etc/yum.repos.d/fedora.repo
sudo sed -i 's|mirrors.tuna.tsinghua.edu.cn|mirrors.aliyun.com|g' /etc/yum.repos.d/fedora-updates.repo
sudo dnf clean all
sudo dnf makecache
进阶技巧:优化 DNF 性能
换完源只是第一步,想让系统更流畅,还可以优化 DNF 的配置。
1. 启用并行下载
修改 /etc/dnf/dnf.conf 文件,添加或修改以下行:
[main]
fastestmirror=True
max_parallel_downloads=10
fastestmirror=True:让 DNF 自动选择最快的镜像(即使你手动指定了源,这个选项有时也能优化金属链接选择)。max_parallel_downloads:增加并行下载线程数,提高下载速度。
2. 设置缓存过期时间
防止频繁重新下载相同的元数据。
keepcache=1
deltarpm=True
keepcache=1:保存下载的 RPM 包,再次安装时直接从缓存读取,节省流量。deltarpm=True:启用 delta RPM,只下载更新的部分,适合大版本升级。
总结
给 Fedora 换源,本质上就是把“快递点”从纽约搬到北京。
- 首选一键脚本,尤其是针对新手的
sed批量替换,简单高效。 - 别忘了 RPM Fusion,很多常用软件(Steam、VLC、驱动)都依赖这个源。
- 缓存问题,遇到奇怪的下载错误,先
dnf clean all,能解决 80% 的问题。 - 稳定性优先,清华 Tuna 和阿里云是目前国内最稳定的选择,不要频繁切换镜像,以免缓存冲突。
现在,去终端里运行一下 sudo dnf update 吧,感受那丝滑的下载速度,这才是 Fedora 该有的样子。祝你使用愉快!
