惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

量子位
Stack Overflow Blog
Stack Overflow Blog
人人都是产品经理
人人都是产品经理
The GitHub Blog
The GitHub Blog
Engineering at Meta
Engineering at Meta
Vercel News
Vercel News
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Y
Y Combinator Blog
The Cloudflare Blog
Last Week in AI
Last Week in AI
B
Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
Tailwind CSS Blog
V
Visual Studio Blog
博客园 - 三生石上(FineUI控件)
小众软件
小众软件
Google DeepMind News
Google DeepMind News
D
DataBreaches.Net
博客园 - 司徒正美
B
Blog RSS Feed
Microsoft Azure Blog
Microsoft Azure Blog
罗磊的独立博客
Hugging Face - Blog
Hugging Face - Blog
L
LangChain Blog

竹林里有冰的博客

Nuxt SSG 博客的尾斜杠到底怎么加? | 竹林里有冰的博客 小米 Xiaomi Book Pro 14 (Ultra X7) Linux 兼容性实测 | 竹林里有冰的博客 国内(大陆)版小米 FCM 熄屏断连:Rootless 环境下的尝试与可能的解决方案 | 竹林里有冰的博客 我没法访问 dl.google.com —— 记一次 TUN 下的网络 debug | 竹林里有冰的博客 Vercel 的缓存控制,你注意过吗? | 竹林里有冰的博客 小记 —— Caddy 在 Layer 4 上的流量代理实践 | 竹林里有冰的博客 你的域名后缀拖慢你的网站速度了嘛?——再谈 DNS 冷启动 | 竹林里有冰的博客 DNS 冷启动:小型站点的“西西弗斯之石” | 竹林里有冰的博客 HTTP/2 Server Push 已事实性“死亡”,我很怀念它 | 竹林里有冰的博客 Nuxt Content v3 中数组字段的筛选困境与性能优化 | 竹林里有冰的博客 后 OCSP 时代,浏览器如何应对证书吊销新挑战 | 竹林里有冰的博客 初试 Github Action Self-hosted Runner,想说爱你不容易 | 竹林里有冰的博客 DNS 解析延迟毁了我的图床优化 | 竹林里有冰的博客 Vue Markdown 渲染优化实战(下):告别 DOM 操作,拥抱 AST 与函数式渲染 | 竹林里有冰的博客 Vue Markdown 渲染优化实战(上):从暴力刷新、分块更新到 Morphdom 的华丽变身 | 竹林里有冰的博客 node-sass 迁移至 dart-sass 踩坑实录 | 竹林里有冰的博客 前端中的量子力学——一打开 F12 就消失的 Bug | 竹林里有冰的博客 2025 年,如何为 web 页面上展示的视频选择合适的压缩算法? | 竹林里有冰的博客 el-image 和 el-table 怎么就打架了?Stacking Context 是什么? | 竹林里有冰的博客 2025年,前端如何使用 JS 将文本复制到剪切板? | 竹林里有冰的博客 ssh 拯救世界——通过 ssh 隧道在内网服务器执行 APT 更新 | 竹林里有冰的博客 Cudy TR3000 吃鹅(daed)记 | 竹林里有冰的博客 使用 Cloudflare Workers 监控 Fedora Copr 构建状态 | 竹林里有冰的博客 基于 Cloudflare Workers 实现的在线服务状态检测告警系统 | 竹林里有冰的博客 构建部署在 Cloudflare Workers 上的 TG Bot | 竹林里有冰的博客 2024年,Firefox 是唯一还在坚持执行在线的 SSL 证书吊销状态检查的主流浏览器 | 竹林里有冰的博客 小爱课程表适配不完全指北——以 ZJUT 本科正方教务系统为例 | 竹林里有冰的博客 将博客从 waline v2 更新到 waline v3 | 竹林里有冰的博客 给家里云装上 Fedora 41 KDE 后,我是如何配置的 | 竹林里有冰的博客 为 Hexo 添加 follow 认证 | 竹林里有冰的博客
创建一个本地的 Fedora 镜像源 | 竹林里有冰的博客
竹林里有冰 · 2022-05-11 · via 竹林里有冰的博客

Fedora 36 在多次跳票后,总算是在 5月10日正式发布了。截止北京时间 5月11日凌晨两点,上海交通大学开源镜像站的上游 rsync://download-ib01.fedoraproject.org/ 仍然没有同步 Fedora 36 的 Release 源。鉴于 Release 自 freeze 以后基本是不会有什么大变动的,也不需要及时同步更新,干脆就直接建立一个本地的镜像源。

准备#

  1. 一块足够大的硬盘
    根据我个人实测,单 Fedora 36 的 x86_64 架构 的 Release 源中的 binary rpm 就占用了 89.6 GB,具体准备多的的硬盘空间还得看你具体需要同步些什么。
  2. 符合要求的上游
    这里所说的符合要求一共是两个方面,一是允许 rsync 同步,二是有你想要的文件。我通过 getfedora.org 的下载按钮的转发目标得知 mirror.karneval.cz 已经完成了 Fedora 36 Release 源的同步。
  3. 良好的网络条件

这里说的良好的网络条件,并不一定是说需要访问境外站点的能力,而是你和你的上游之间的网络访问畅通,不要动不动就i断开连接那种。如果你选择的是国内镜像站作为你的上游,那一般不会有什么问题。

开始同步#

现在的主流方案一般都是选择 rsync 直接开整。

试探环节#

很多镜像站的 rsync 文件路径和 http 文件路径路径是不同的。

比如说,我这里用的 mirror.karneval.cz 的 http 页面显示的 fedora 仓库路径在 /pub/fedora,但 rsync 同步时需要使用 /fedora 路径。

为了确定这一点,我们可以先通过 rsync rsync://example.com 进行预览

rsync rsync://mirror.karneval.cz

image-20220511103736493image-20220511103736493

通过一层一层预览目录的方式,找到需要同步的路径是 /fedora/linux/releases/36/Everything/x86_64/os/

同步环节#

通过 mkdircd 创建并进入我们准备用于同步源码的文件夹,然后开始执行同步命令。

rsync -avP rsync://mirror.karneval.cz/fedora/linux/releases/36/Everything/x86_64/os/ .

Ps: 中途如果由于各种原因而中断了同步过程,可以再次使用上述命令继续同步,rsync 会保证文件完整性。

耗费两个半小时,同步成功耗费两个半小时,同步成功

安装、配置并启用 static server (可选)#

如果只需要本机使用,那么直接跳过这一步即可;如果需要给局域网内的其他机器提供镜像源,那么需要启用 static server。

我这里选择的是 caddy,性能虽然比 nginx 略逊一筹,但胜在配置简单。

caddy 的安装可以直接参考官方文档,这里不再赘述。

配置也不过那么几行的事情,我给个 example。端口号只要和别的程序没有冲突,就可以随意指定。443 端口需要 ssl 证书比较麻烦,局域网内直接用非标准端口即可。

:14567 {
        root * /the/directory/you/use

        file_server {
                browse
        }
}

配置完后直接以普通用户的权限启用即可,使用 systemd 启用需要解决 caddy 用户对目标无权限的问题。

caddy run --config /etc/caddy/Caddyfile

浏览器输入对应的 ip 和端口,应该就可以访问了。

image-20220511113417004image-20220511113417004

修改源配置文件#

由于我们仅同步了 Release 源,就只需要修改 /etc/yum.repo.d/fedora.repo 即可。

如果镜像源在本机上,可以直接使用 file:// 协议头:

[fedora]
name=Fedora $releasever - $basearch
+ baseurl=file:///the/directory/you/use
- metalink=https://mirrors.fedoraproject.org/metalink?repo=fedora-$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=False

如果镜像源在同局域网设备上,通过 http:// 协议也能达到相同的效果:

[fedora]
name=Fedora $releasever - $basearch
+ baseurl=http://192.168.1.233:14567
- metalink=https://mirrors.fedoraproject.org/metalink?repo=fedora-$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=False

Ps: 提供镜像源的机子的局域网 ip 可以通过 ip -br a 命令获取