因为受不了 Windows 系统,所以最近决定换掉 Windows 系统。之前一直在用 Debian 系统的发行版,服务器也是用的 Debian,所以打算换换口味尝试一下 CachyOS。
然而,Arch 系统的美学决定了系统安装完毕仅仅是万里长征的第一步。在国内复杂的使用环境情况下,要调成自己用得顺手的系统不会一帆风顺。
本文总结自我自己刷机安装 CachyOS 系统中遇到的网络与包管理问题。作为系列上篇,重点解决“下载慢、连不上、沙盒隔离”这几块硬骨头。
1. pacman 与 CachyOS 专属架构源
CachyOS 与原生 Arch 最大的区别在于其为现代 CPU(支持 AVX2 的 x86-64-v3 及支持 AVX-512 的 x86-64-v4)提供了针对性编译的优化仓库。合理的国内镜像配置不仅能让下载速度跑满千兆带宽,更能确保依赖解析的绝对稳定。
在 /etc/pacman.conf 中,仓库优先顺序至关重要(CachyOS 优化仓库应排在官方 Arch 仓库之前):
[cachyos-v3]
Include = /etc/pacman.d/cachyos-v3-mirrorlist
[cachyos-core-v3]
Include = /etc/pacman.d/cachyos-v3-mirrorlist
[cachyos]
Include = /etc/pacman.d/cachyos-mirrorlist
[core]
Include = /etc/pacman.d/mirrorlist
[extra]
Include = /etc/pacman.d/mirrorlist
[multilib]
Include = /etc/pacman.d/mirrorlist
[cachyos-extra-v3]
Include = /etc/pacman.d/cachyos-v3-mirrorlist
[archlinuxcn]
Server = https://mirrors.ustc.edu.cn/archlinuxcn/$arch修改前务必备份对应文件:
sudo cp /etc/pacman.conf /etc/pacman.conf.bak
sudo cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.bak
sudo cp /etc/pacman.d/cachyos-mirrorlist /etc/pacman.d/cachyos-mirrorlist.bak
sudo cp /etc/pacman.d/cachyos-v3-mirrorlist /etc/pacman.d/cachyos-v3-mirrorlist.bak针对国内高校镜像源,各 mirrorlist 的优质直连节点推荐如下:
- Arch 官方基础源 (
/etc/pacman.d/mirrorlist):iniServer = https://mirrors.ustc.edu.cn/archlinux/$repo/os/$arch Server = https://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$arch Server = https://mirrors.nju.edu.cn/archlinux/$repo/os/$arch Server = https://mirrors.sjtug.sjtu.edu.cn/archlinux/$repo/os/$arch Server = https://mirrors.aliyun.com/archlinux/$repo/os/$arch - CachyOS 基础源 (
/etc/pacman.d/cachyos-mirrorlist):iniServer = https://mirrors.ustc.edu.cn/cachyos/repo/$arch/$repo Server = https://mirror.nju.edu.cn/cachyos/repo/$arch/$repo - CachyOS v3 优化源 (
/etc/pacman.d/cachyos-v3-mirrorlist):iniServer = https://mirrors.ustc.edu.cn/cachyos/repo/$arch_v3/$repo Server = https://mirror.nju.edu.cn/cachyos/repo/$arch_v3/$repo
修改完成后,刷新本地数据库并安装 archlinuxcn-keyring:
sudo pacman -Syyu
sudo pacman -S archlinuxcn-keyring2. 辨析 AUR 与 yay:请停止寻找“AUR 国内源”
一般来说装完系统第一件事就是换源,上面我们已经把包管理器成功换成了国内源,但是,针对 yay 命令已经无法使用国内的大镜像源了。
为什么不要换 AUR 镜像?
- 本质差异:
pacman仓库下载的是打包好的二进制文件(.pkg.tar.zst),可以通过镜像站做全量文件镜像;而AUR本质是一个 Git 代码仓库与 RPC 查询服务,开发者通过它拉取的是编译脚本(PKGBUILD)。 - 镜像站已全面关停:TUNA 等高校镜像站早在 2022 年就已发布公告(见 TUNA 关于移除 AUR 镜像的通知),明确指出 AUR 无法通过常规方式镜像,目前中科大、清华、上交、浙大等站点的
aur接口全部返回 404。 - 分流逻辑:
yay在安装仓库包时会自动调用底层pacman,因此仓库二进制包天然享受上面配置的国内镜像满速下载;只有在拉取 AUR 脚本与 GitHub 源码时才会发起海外请求。
外部真实确认现状:
| 来源 / 站点 | 真实情况与结论 |
|---|---|
| TUNA 官方公告 (2022-02-05) | 清华曾是国内唯一提供过 AUR 服务的站点,但其本质是反向代理(域名为 aur.tuna.tsinghua.edu.cn 而非路径),由于无法代理上游源码且存在安全混淆,已于 2022 年 3 月彻底下线。 |
| 中科大、上交、南大等各大镜像站 | 官方服务列表中从未提供过所谓的 AUR 镜像。网络流传的把镜像站域名后拼 /aur 纯属误传,本身就不存在该目录。 |
常见混淆:archlinuxcn ≠ AUR | 很多新手将国内各大镜像站收录的 archlinuxcn 误称为“AUR 镜像”。archlinuxcn 是预编译的第三方二进制仓库,可以通过国内源加速;而真正的 AUR 只有官方唯一一家。 |
正确做法:保持官方 RPC,慢则走代理
检查并保持 yay 的官方地址:
yay -P -g | grep -E 'aururl|aurrpcurl'
# 恢复官方 AUR 配置:
yay --save --aururl https://aur.archlinux.org --aurrpcurl 'https://aur.archlinux.org/rpc?'遇到需要从 GitHub 编译构建的 AUR 包,直接在命令前挂载代理环境变量,或者为 Git 单独配置分流:
# 单次命令走本地代理
http_proxy=http://127.0.0.1:10808 https_proxy=http://127.0.0.1:10808 yay -S <package_name>
# 为 Git 全局配置代理(适合经常拉取 GitHub 源码的情况)
git config --global http.proxy http://127.0.0.1:10808
git config --global https.proxy http://127.0.0.1:10808
# 取消 Git 代理
git config --global --unset http.proxy
git config --global --unset https.proxy3. Flatpak 沙盒与 OSTree 镜像分流实测
Flatpak 能够为系统提供强隔离的运行时环境,是 Steam、Discord、QQ、微信等闭源或易脏系统依赖应用的最佳归宿。但 Flatpak 在国内的下载体验往往令人头痛。
3.1 深入 OSTree:Flathub 国内镜像真实现状
Flatpak 底层依赖 OSTree(被誉为“操作系统的 Git”)。在 OSTree 的 remote 结构中,有两个独立的 URL 属性:
url:用于获取 Metadata 索引(如summary.idx、AppStream 等);contenturl:用于拉取真正的大体积二进制内容(objects/、delta 补丁包)。
目前国内高校镜像站中,官方明确收录并维护 Flathub 缓存/镜像服务的仅有少数站点(以 USTC 和 SJTUG 为主)。它们的底层机制实测对比如下:
| 镜像站点 / 入口 | 官方支持情况与测试现象 | 适用场景与建议 |
|---|---|---|
| USTC (中科大) | 官方提供 Flathub 缓存(见帮助文档)。config、summary.idx 索引每小时完整同步且 200 直出;大文件动态缓存。 | 无代理直连首选。索引阶段不依赖官方。 |
| SJTUG (上海交大) | 官方提供 Flathub 镜像(见帮助文档)。元数据索引 302 跳官方;大文件按智能缓存命中返回。 | 适合日常常驻分流代理的环境。 |
| CERNET / MirrorZ | 智能调度入口,实质 302 重定向至中科大 USTC 缓存。 | 可用,但不如直写 USTC 简洁。 |
| TUNA、NJU 等其他大站 | 官方仓库列表从未收录 Flathub。网传的“把域名拼上 /flathub”纯属盲目套用其他 Linux 源公式臆造的假地址,均无法使用。 | 切勿照抄网上的拼接假源。 |
3.2 两种环境下的最佳配置方案
方案 A:无代理直连优先(推荐全量指向中科大)
不单独设置 contenturl,元数据与对象均从 USTC 尝试拉取:
sudo flatpak remote-modify flathub --url=https://mirrors.ustc.edu.cn/flathub
sudo ostree --repo=/var/lib/flatpak/repo config unset 'remote "flathub".contenturl'方案 B:有代理环境(官方索引 + 镜像大包)
让元数据精确走官方保证绝对最新,大体积静态对象通过上海交大缓存加速:
sudo flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
sudo ostree --repo=/var/lib/flatpak/repo config set 'remote "flathub".url' 'https://dl.flathub.org/repo/'
sudo ostree --repo=/var/lib/flatpak/repo config set 'remote "flathub".contenturl' 'https://mirror.sjtu.edu.cn/flathub'(如果使用 --user 级 Flatpak,只需将 repo 路径替换为 ~/.local/share/flatpak/repo 且无需 sudo。)
3.3 排查与验证
查看底层配置:
ostree --repo=/var/lib/flatpak/repo config get 'remote "flathub".url'
ostree --repo=/var/lib/flatpak/repo config get 'remote "flathub".contenturl'如果遇到更新缓慢或失败,利用 OSTREE_DEBUG_HTTP=1 可以看清每一个请求到底打向了哪台服务器:
OSTREE_DEBUG_HTTP=1 flatpak update恢复官方 Flathub 远端:
sudo flatpak remote-modify flathub --url=https://dl.flathub.org/repo/
sudo ostree --repo=/var/lib/flatpak/repo config unset 'remote "flathub".contenturl'
flatpak update --appstream4. Steam Flatpak:沙盒网络代理与外置库穿透
Steam 沙盒版本运行稳定且不污染系统 32 位库,但沙盒默认隔绝外部环境变量,导致商店和创意工坊频繁出现连接错误;此外外置硬盘的游戏库默认也无法读取。
不要直接修改全局 override,而是使用 Flatpak 用户级 Override 进行优雅接管:
# 1. 允许 Steam 访问挂载的移动硬盘/次级游戏盘
flatpak override --user com.valvesoftware.Steam --filesystem=/run/media/$USER/steam
# 2. 为 Steam 注入本地网络代理(解决商店与社区连接错误)
flatpak override --user com.valvesoftware.Steam --env=http_proxy=http://127.0.0.1:10808
flatpak override --user com.valvesoftware.Steam --env=https_proxy=http://127.0.0.1:10808
# 3. 规范 Proton 兼容层数据路径
flatpak override --user com.valvesoftware.Steam --env=STEAM_COMPAT_DATA_PATH=$HOME/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/compatdata查看已应用的配置:
flatpak override --user --show com.valvesoftware.Steam进入沙盒验证环境变量生效情况:
flatpak run --command=sh com.valvesoftware.Steam -lc 'env | grep -i proxy'5. Linux 微信手机备份迁移与 UFW 端口放行
在 Linux 微信(如 AUR 版 wechat-universal-bwrap 4.1+ 版本)中,手机向电脑备份迁移聊天记录常常卡在“正在查找局域网电脑”或连接失败。
问题排查与端口抓取
排查日志可以发现,微信在点击“迁移与备份”时会在后台动态拉起一个 TCP 监听服务(常见为 8015/tcp):
sudo ss -H -tulpn | grep -i wechat
# 典型输出:tcp LISTEN 0 8 0.0.0.0:8015 0.0.0.0:* users:(("wechat",pid=180671,fd=174))手机连入时发起的连接形如:
192.168.21.134:8015 <- 192.168.21.180:48480如果系统开启了 UFW 防火墙且默认拦截入站请求,该端口会被静默 drop。
安全放行规则
正确的安全做法是仅向局域网所在网段开放该端口,不要向公网暴露:
# 假设局域网网段为 192.168.21.0/24,网络接口为 wlan0
sudo ufw allow in on wlan0 from 192.168.21.0/24 to any port 8015 proto tcp
sudo ufw status numbered生效规则类似:
8015/tcp on wlan0 ALLOW IN 192.168.21.0/24重新进入微信的聊天记录备份页面,手机端即可秒连电脑,顺畅完成 GB 级聊天记录的局域网导出备份。
6. 本篇小结
搞定系统的网络与包管理是打好 Linux 生产力地基的第一步:
- 源的选择:认清二进制仓库与 Git 代码仓的本质,不要在早已废弃的镜像路径上浪费时间;
- 沙盒分流:合理利用 OSTree 的分流特性与 Flatpak 的 user override,既能拥有沙盒的安全,又能享受满速下载与代理便利;
- 局域网通信:遇到手机与电脑协同失败,先查防火墙监听与入站策略。
网络打通之后,在下一篇中,我们将深入桌面的日常体验,解决 CJK 字体日韩字形偏差、Chrome 沙盒字体发窄、Fcitx 5 游戏防冲突,以及利用内核 binfmt_misc 配合 Proton 10 完美接管 Windows EXE 双击的终极架构!