参考资料

  1. raven安装加速
  2. ubuntu-releases安装加速
  3. pciids安装加速
  4. OpenSSH安装加速
  5. scoop-nerd-fonts.git安装加速
  6. monitoring-plugins安装加速
  7. raspberry-pi-os-images安装加速
  8. revyos安装加速

nix4loong安装加速

nix4loong 安装加速

nix4loong 是把 Nix 包管理器带到 LoongArch(龙芯)平台的移植工作。相比主流 x86_64/aarch64,LoongArch 的预编译二进制缓存相对稀少,很多包需要本地构建,因此首次安装和后续拉取依赖往往明显偏慢。本文梳理安装阶段的常见瓶颈,并给出可操作的加速思路。

> 说明:以下涉及镜像地址、缓存地址的配置,请以对应镜像站与 nix4loong 项目的最新文档为准,不同版本字段名可能略有差异。

一、先定位慢在哪里

加速之前先分清瓶颈,避免盲目优化:

阶段典型现象可能原因
下载 Nix 本体/发行脚本卡在下载安装脚本直连源站,跨国链路慢
拉取 nixpkgschannels 更新慢或超时未使用镜像
下载二进制包大量 `downloading` 或反复 `building`缺 LoongArch 缓存,只能源码构建
本地构建CPU 长时间跑满、内存压力大缓存缺失 + 并发/内存配置不当

用 `nix-store --query`、`nix path-info`、以及构建日志大致判断是“下载慢”还是“构建多”。

二、替换二进制缓存(substituters)

Nix 的核心加速手段是二进制缓存:能下载现成产物,就不本地编译。在 LoongArch 上尤其要优先配置可用的 LoongArch 缓存。

在 `nix.conf`(通常在 `/etc/nix/nix.conf`,或用户级 `~/.config/nix/nix.conf`)中配置: text substituters = <官方或社区缓存> <国内镜像缓存> trusted-public-keys = <对应签名公钥> 要点:

  • 多个 substituters 用空格分隔,Nix 会依次尝试。
  • 必须同时配置对应的 `trusted-public-keys`,否则缓存内容会被拒绝。
  • `trusted-substituters` 仅对受信任用户生效,多用户安装时注意区分。

如果目标缓存在 LoongArch 上并不完整,仍要保留源码构建能力,不能只依赖缓存。

三、镜像 nixpkgs 与 channels

拉取 nixpkgs 时,把默认源换成国内镜像可显著提速。常见做法包括:

  • 使用镜像站提供的 nix-channels 地址,替换 `NIX_PATH` 中的 channel 拉取地址。
  • 在 `nix.conf` 中配置 `flake-registry` 或相关 registry 镜像(若使用 flakes)。
  • 用 `nix-channel --add <镜像地址>` 后执行 `nix-channel --update`。

更换后建议先 `nix-channel --list` 确认地址正确,再更新。

四、调整 nix.conf 的并发与超时

构建阶段的吞吐往往受并发和超时参数影响,可按机器规格调整: text max-jobs = auto # 本地并行构建任务数 cores = 0 # 每个任务使用的核心数(0 表示全部) connect-timeout = 5 # 下载连接超时 fallback = true # 缓存下载失败时回退本地构建 keep-going = true # 遇错继续,避免一个失败中断全部

  • LoongArch 机器核心数有限时,`max-jobs` 不宜过大,否则内存吃紧反而更慢。
  • 内存较小时把 `cores` 设小,或降低 `max-jobs`,优先保证不触发 OOM。
  • `fallback = true` 能避免缓存某个包缺失就整个任务失败。

五、网络与代理

如果链路本身受限,可考虑:

  • 为 Nix daemon 单独配置代理。systemd 环境下用 `systemctl edit nix-daemon` 注入 `HTTP_PROXY`/`HTTPS_PROXY`/`NO_PROXY`,再 `daemon-reload` 并重启。
  • 在 `nix.conf` 中使用 `http-connections`(或等价参数)控制并发连接数,配合镜像使用。
  • 局域网内自建缓存(如 `nix-serve` 或缓存代理),多台机器共享产物,收益通常最明显。

注意:代理与镜像不要重复叠加导致回环,`no_proxy` 要包含本地缓存地址。

六、预热与分阶段安装

  • 预取:对确定要用的闭包先 `nix-store --realise` 或使用 `nix copy`,把构建与下载错峰。
  • 分层:先装基础开发工具链,确认可用的 LoongArch 缓存范围,再逐步加包,避免一次性触发大规模构建。
  • 复用:把 GC root 固定住(`nix-build --add-root` 或 profile 安装),减少被回收后重复构建。

七、验证与排查

bash nix --version nix show-config | grep -E 'substituters|max-jobs|cores' nix-store --verify --check-contents

  • 若仍频繁本地构建,检查 substituters 是否命中、公钥是否匹配。
  • 若下载报错,用 `curl -I` 测试缓存地址连通性与 TLS 是否正常。
  • 观察 `journalctl -u nix-daemon` 判断是 daemon 级问题还是
作者:王壹杰
时间:2026-10-07
来源:https://mirror.ciilii.com/