文章摘要
加载中...|
此内容根据文章生成,并经过人工审核,仅用于文章内容的解释与总结

因为受不了 Windows 系统,所以最近决定换掉 Windows 系统。之前一直在用 Debian 系统的发行版,服务器也是用的 Debian,所以打算换换口味尝试一下 CachyOS。

然而,Arch 系统的美学决定了系统安装完毕仅仅是万里长征的第一步。在国内复杂的使用环境情况下,要调成自己用得顺手的系统不会一帆风顺。

本文总结自我自己刷机安装 CachyOS 系统中遇到的网络与包管理问题。作为系列上篇,重点解决“下载慢、连不上、沙盒隔离”这几块硬骨头。

💡 系列下篇:CachyOS 深度调优实录(应用与桌面篇):字体渲染、外设音效与 Proton 10 全局接管


1. pacman 与 CachyOS 专属架构源 ​

CachyOS 与原生 Arch 最大的区别在于其为现代 CPU(支持 AVX2 的 x86-64-v3 及支持 AVX-512 的 x86-64-v4)提供了针对性编译的优化仓库。合理的国内镜像配置不仅能让下载速度跑满千兆带宽,更能确保依赖解析的绝对稳定。

在 /etc/pacman.conf 中,仓库优先顺序至关重要(CachyOS 优化仓库应排在官方 Arch 仓库之前):

ini
[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

修改前务必备份对应文件:

bash
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):
    ini
    Server = 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):
    ini
    Server = 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):
    ini
    Server = https://mirrors.ustc.edu.cn/cachyos/repo/$arch_v3/$repo
    Server = https://mirror.nju.edu.cn/cachyos/repo/$arch_v3/$repo

修改完成后,刷新本地数据库并安装 archlinuxcn-keyring:

bash
sudo pacman -Syyu
sudo pacman -S archlinuxcn-keyring

2. 辨析 AUR 与 yay:请停止寻找“AUR 国内源” ​

一般来说装完系统第一件事就是换源,上面我们已经把包管理器成功换成了国内源,但是,针对 yay 命令已经无法使用国内的大镜像源了。

为什么不要换 AUR 镜像? ​

  1. 本质差异:pacman 仓库下载的是打包好的二进制文件(.pkg.tar.zst),可以通过镜像站做全量文件镜像;而 AUR 本质是一个 Git 代码仓库与 RPC 查询服务,开发者通过它拉取的是编译脚本(PKGBUILD)。
  2. 镜像站已全面关停:TUNA 等高校镜像站早在 2022 年就已发布公告(见 TUNA 关于移除 AUR 镜像的通知),明确指出 AUR 无法通过常规方式镜像,目前中科大、清华、上交、浙大等站点的 aur 接口全部返回 404。
  3. 分流逻辑: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 的官方地址:

bash
yay -P -g | grep -E 'aururl|aurrpcurl'
# 恢复官方 AUR 配置:
yay --save --aururl https://aur.archlinux.org --aurrpcurl 'https://aur.archlinux.org/rpc?'

遇到需要从 GitHub 编译构建的 AUR 包,直接在命令前挂载代理环境变量,或者为 Git 单独配置分流:

bash
# 单次命令走本地代理
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.proxy

3. 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 尝试拉取:

bash
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:有代理环境(官方索引 + 镜像大包) ​

让元数据精确走官方保证绝对最新,大体积静态对象通过上海交大缓存加速:

bash
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 排查与验证 ​

查看底层配置:

bash
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 可以看清每一个请求到底打向了哪台服务器:

bash
OSTREE_DEBUG_HTTP=1 flatpak update

恢复官方 Flathub 远端:

bash
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 --appstream

4. Steam Flatpak:沙盒网络代理与外置库穿透 ​

Steam 沙盒版本运行稳定且不污染系统 32 位库,但沙盒默认隔绝外部环境变量,导致商店和创意工坊频繁出现连接错误;此外外置硬盘的游戏库默认也无法读取。

不要直接修改全局 override,而是使用 Flatpak 用户级 Override 进行优雅接管:

bash
# 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

查看已应用的配置:

bash
flatpak override --user --show com.valvesoftware.Steam

进入沙盒验证环境变量生效情况:

bash
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):

bash
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))

手机连入时发起的连接形如:

text
192.168.21.134:8015  <-  192.168.21.180:48480

如果系统开启了 UFW 防火墙且默认拦截入站请求,该端口会被静默 drop。

安全放行规则 ​

正确的安全做法是仅向局域网所在网段开放该端口,不要向公网暴露:

bash
# 假设局域网网段为 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

生效规则类似:

text
8015/tcp on wlan0  ALLOW IN  192.168.21.0/24

重新进入微信的聊天记录备份页面,手机端即可秒连电脑,顺畅完成 GB 级聊天记录的局域网导出备份。


6. 本篇小结 ​

搞定系统的网络与包管理是打好 Linux 生产力地基的第一步:

  1. 源的选择:认清二进制仓库与 Git 代码仓的本质,不要在早已废弃的镜像路径上浪费时间;
  2. 沙盒分流:合理利用 OSTree 的分流特性与 Flatpak 的 user override,既能拥有沙盒的安全,又能享受满速下载与代理便利;
  3. 局域网通信:遇到手机与电脑协同失败,先查防火墙监听与入站策略。

网络打通之后,在下一篇中,我们将深入桌面的日常体验,解决 CJK 字体日韩字形偏差、Chrome 沙盒字体发窄、Fcitx 5 游戏防冲突,以及利用内核 binfmt_misc 配合 Proton 10 完美接管 Windows EXE 双击的终极架构!

👉 下一篇:CachyOS 深度调优实录(应用与桌面篇):字体渲染、外设音效与 Proton 10 全局接管

评论 隐私政策