说实话,刚开始在Linux里折腾Fedora的时候,我也吃过不少苦头。最让人头疼的莫过于打开终端,满怀信心地输入 sudo dnf install,结果看到那一行行红色的 Failure downloading metadata 或者 Timeout exceeded,心里瞬间就凉了半截。这根本不是你的锅,纯粹是因为Fedora默认的镜像服务器大多在欧美,信号绕过大洋彼岸,丢包率高得让人想摔键盘。
咱们今天就把这事儿彻底解决掉,给系统换上阿里或者清华的源。这两个是国内公认最稳、最快的“高速公路”,换上之后,下载速度直接从几KB/s飙到几MB/s,那种丝滑感,谁用谁知道。
第一步:先看看现在的“路况”
在动手改配置之前,咱们得先了解一下现状。 Fedora的源配置信息主要存放在 /etc/yum.repos.d/ 目录下,其中 fedora.repo 和 fedora-updates.repo 是最核心的两个文件。
你可以用 cat 命令快速扫一眼当前的配置:
cat /etc/yum.repos.d/fedora.repo
你会看到类似这样的内容:
[fedora]
name=Fedora $releasever - $basearch
#baseurl=https://download.fedoraproject.org/pub/fedora/linux/releases/$releasever/Workstation/$basearch/os/
metalink=https://mirrors.fedoraproject.org/metalink?repo=rawhide-$releasever&arch=$basearch
enabled=1
countme=1
metadata_expire=7d
repo_gpgcheck=0
type=rpm
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch
skip_if_unavailable=True
注意到那个 metalink 了吗?这就是默认的“抽签”机制,系统会随机分配一个离你“最近”的服务器。但在国内,这个“最近”往往还是在国外,或者是个访问极慢的镜像。所以,咱们的目标就是把这段配置替换成直连国内大厂的地址。
第二步:命令行方式——极客的最爱(推荐)
命令行虽然看起来冷冰冰,但它是最稳定、最透明、也最容易批量操作的方式。特别是当你通过SSH远程连接服务器,或者在纯文本模式下操作时,这是唯一的选择。
这里我教你一个“无损替换”的技巧,也就是把旧文件备份好,然后写入新配置。这样做的好处是,万一以后想回滚,随时都能恢复。
1. 备份原配置
打开终端,执行以下命令备份现有的仓库文件。这一步千万别省,它是你的后悔药:
sudo cp /etc/yum.repos.d/fedora.repo /etc/yum.repos.d/fedora.repo.bak
sudo cp /etc/yum.repos.d/fedora-updates.repo /etc/yum.repos.d/fedora-updates.repo.bak
2. 替换为阿里云源
阿里云的源维护得相当不错,响应速度快,且对Fedora支持良好。我们直接用 tee 命令配合重定向来写入新配置,这样既保留了 sudo 的权限,又方便后续阅读内容。
先处理主仓库 fedora.repo:
sudo tee /etc/yum.repos.d/fedora.repo <<EOF
[fedora]
name=Fedora \$releasever - \$basearch - AI
#baseurl=https://mirrors.aliyun.com/fedora/releases/\$releasever/Workstation/\$basearch/os/
metalink=https://mirrors.aliyun.com/fedora/copr/metalink/?repo=rawhide-\$releasever&arch=\$basearch
enabled=1
countme=1
metadata_expire=7d
repo_gpgcheck=0
type=rpm
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-\$releasever-\$basearch
skip_if_unavailable=True
EOF
接着处理更新仓库 fedora-updates.repo:
sudo tee /etc/yum.repos.d/fedora-updates.repo <<EOF
[fedora-updates]
name=Fedora \$releasever - \$basearch - Updates
#baseurl=https://mirrors.aliyun.com/fedora/updates/\$releasever/Workstation/\$basearch/\$basearch/
metalink=https://mirrors.aliyun.com/fedora/copr/metalink/?repo=updates-released-f29-\$releasever&arch=\$basearch
enabled=1
countme=1
metadata_expire=6h
repo_gpgcheck=0
type=rpm
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-\$releasever-\$basearch
skip_if_unavailable=True
EOF
(注:上面的代码中,金属链接 metalink 部分我特意做了一些调整,因为Fedora不同版本的基础URL结构略有差异,但使用阿里云的 copr 金属链接或者直连 baseurl 通常都能通。为了保险起见,如果上面的 metalink 报错,我们可以直接用 baseurl 替换,如下所示的更通用模板:)
更通用的阿里云配置模板(如果上面的报错,请用这个):
对于大多数较新的Fedora版本,直接修改 baseurl 是最稳妥的:
sudo sed -i 's|https://download.fedoraproject.org/pub/fedora/linux|https://mirrors.aliyun.com/fedora|g' /etc/yum.repos.d/fedora.repo
sudo sed -i 's|https://download.fedoraproject.org/pub/fedora/linux/updates|https://mirrors.aliyun.com/fedora/updates|g' /etc/yum.repos.d/fedora-updates.repo
这一套 sed 命令非常巧妙,它自动把原始的 download.fedoraproject.org 域名替换成了 mirrors.aliyun.com,而保留了后面的路径结构。这样就不需要手动去猜具体的版本号路径了,通用性极强。
3. 刷新缓存并测试
改完配置后,一定要让系统重新下载一遍软件包列表,不然它还在记忆旧服务器:
sudo dnf clean all
sudo dnf makecache
看到 Metadata Cache Created 这样的提示,就说明源已经生效了。这时候你再试着装个软件,比如 helloworld 或者随便一个常用工具,看看速度是不是起飞了。
第三步:图形界面方式——温和派的福音
如果你是个“视控”党,看见黑底白字的终端就头疼,那Fedora自带的“软件”管理器其实也能帮上忙,或者我们可以通过修改配置文件的同时,利用GUI工具来管理。不过,严格来说,DConf Editor或者直接在文件管理器里编辑repo文件会更直接。
让我带你走一条更“正统”的图形化路径:使用 GNOME Software Center 配合后台的源管理,或者更简单地,直接用 文本编辑器 打开配置文件。虽然还是改文件,但过程是可视化的。
1. 打开文本编辑器
在桌面右上角的活动概览里搜索 Text Editor 或者 gedit,打开它。或者右键桌面,选择“打开终端”,然后输入 sudo gedit 来启动有管理员权限的编辑器。
2. 定位配置文件
在编辑器中,按 Ctrl+L 调出“跳转到行”或直接输入路径:
/etc/yum.repos.d/fedora.repo
3. 修改内容
找到 [fedora] 段落下的 metalink 或 baseurl 行。
如果是 metalink 开头,把它注释掉(前面加 #),然后新建一行写 baseurl:
[fedora]
name=Fedora $releasever - $basearch
#metalink=https://mirrors.fedoraproject.org/metalink?repo=rawhide-$releasever&arch=$basearch
baseurl=https://mirrors.aliyun.com/fedora/releases/$releasever/Workstation/$basearch/os/
enabled=1
...
对 fedora-updates.repo 做同样的操作,把路径里的 updates/$releasever 对应好。
4. 保存并刷新
保存文件,然后打开“软件”应用。它通常会自动检测配置变更。如果没有,可以在终端里手动运行一下 sudo dnf makecache(哪怕你不喜欢终端,这一步图形界面没法完全替代,但只需几秒钟)。
第四步:清华源备选方案
有时候阿里云可能会因为高峰期拥堵,或者你的特定网络环境(比如某些校园网)对清华源更友好。那时候,你就需要切换源了。
清华源(TUNA)的配置逻辑和阿里一样,只是域名不同。
命令行快速切换清华源:
sudo sed -i 's|mirrors.aliyun.com|mirrors.tuna.tsinghua.edu.cn|g' /etc/yum.repos.d/fedora.repo
sudo sed -i 's|mirrors.aliyun.com|mirrors.tuna.tsinghua.edu.cn|g' /etc/yum.repos.d/fedora-updates.repo
一行命令,原地换血。改完记得再 sudo dnf clean all && sudo dnf makecache 一下。
避坑指南:常见问题排查
改了源之后,有时候还是会遇到问题。别急,咱们一个个排查。
问题1:GPG Key 错误
报错信息里出现 Public key for xxx.rpm is not installed。
这通常是因为你从第三方源或者手动下载了RPM包,但没导入签名密钥。
解决: 安装对应的gpg key,或者在repo文件的 [fedora] 段落下加上 gpgcheck=0(不推荐长期使用,仅用于测试)。
问题2:Still waiting for lock
提示 Another app is currently holding the dnf lock。
解决: 这说明你系统里可能同时开着“软件”管理器,或者后台有个自动更新在跑。关掉那个图形界面软件,或者在终端执行:
sudo rm /var/lib/rpm/.rpm.lock
sudo rm /var/lib/dnf/*.lock
然后重试。
问题3:404 Not Found
换了源后发现某个包找不到。
解决: 这多半是版本号对不上。比如你用的是Fedora 39,但源配置里写成了 38。确保你的 fedora.repo 里的 $releasever 变量被正确解析。你可以用 dnf --releasever=39 install xxx 来强制指定版本测试。
给小朋友的一个小比喻
如果把Fedora系统比作一个大图书馆,默认的软件源就像是国外的分馆。你要找一本书(软件),管理员得打电话去国外借,还要等快递空运,肯定慢。
现在,我们把地址换成了阿里或者清华,这就像是图书馆在家门口开了个新分馆。书都在架上,伸手就能拿到,不仅快,而且书还全。
配置的过程,就是你在图书馆的登记本上,把“国外分馆”的地址划掉,写上“家门口分馆”的新地址。只要地址写得对,以后找书(安装软件)就方便多啦!
总结
配置软件源是Linux入门的第一道坎,跨过去,你就发现了新大陆。无论是选择阿里云的稳定,还是清华大学的极客风,核心逻辑都是一样的:备份、修改、缓存、测试。
别怕改配置,只要掌握了 sed 替换和 dnf clean/makecache 这套组合拳,你就有了任意切换国内镜像的能力。下次再遇到网速慢,你就知道,这不是网卡,是源没选对。
希望这篇指南能帮你把Fedora玩得更溜。如果还有哪里不清楚,随时回来翻翻,咱们在Linux的路上一起升级打怪!
