packman安装加速
参考资料
packman安装加速
pacman 安装加速:从镜像源到并行下载的完整实践
在 Arch Linux 及其衍生发行版(如 Manjaro、EndeavourOS)上,`pacman` 是核心的包管理器。默认配置下,下载速度往往受限于官方镜像的地理位置与单线程传输,导致 `pacman -Syu` 或安装大批软件包时进度缓慢。本文从根源出发,给出一套可落地的加速方案,覆盖镜像源选择、并行下载、多线程工具与缓存优化。
一、先定位瓶颈
速度慢通常来自三个环节:
| 环节 | 表现 | 优化方向 |
|---|---|---|
| 镜像源距离远/被限速 | 单个包下载速度低且不稳定 | 更换就近、高带宽镜像 |
| pacman 单连接下载 | 多包依次下载,总时长长 | 开启并行下载 |
| 单线程传输 | 单个大包速度上不去 | 用 aria2 多连接 |
先确认带宽本身正常,再逐项优化。可用 `pacman -Sy` 配合 `time` 粗略观察,或直接在浏览器里测同一镜像的下载速度做对照。
二、配置国内镜像源
`/etc/pacman.d/mirrorlist` 决定包的下载来源。文件顶部的 Server 优先级最高,pacman 会自上而下尝试。
编辑前先备份: bash sudo cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.bak 常见的高校与企业镜像(以清华 TUNA、中科大 USTC、阿里云为例),你可以把就近的几个放到文件顶部: text Server = https://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$arch Server = https://mirrors.ustc.edu.cn/archlinux/$repo/os/$arch Server = https://mirrors.aliyun.com/archlinux/$repo/os/$arch 其中 `$repo` 与 `$arch` 由 pacman 自动替换,不要手动改写。修改后刷新数据库: bash sudo pacman -Syy 注意 `-yy` 会强制刷新全部索引,仅在切换镜像后使用一次即可,日常用 `-Sy` 或直接 `-Syu`。
三、用 reflector 自动挑选最快镜像
手动排序依赖经验,`reflector` 可按实测速度自动生成镜像列表。安装: bash sudo pacman -S reflector 生成速度最快的 10 个 HTTPS 且近期同步过的镜像: bash sudo reflector --country China --age 12 --protocol https --sort rate --latest 10 --save /etc/pacman.d/mirrorlist 参数含义:
- `--country China`:限定中国境内镜像
- `--age 12`:只保留最近 12 小时内同步过的
- `--protocol https`:使用 HTTPS
- `--sort rate`:按下载速率排序
- `--latest 10`:保留前 10 个
可以把这条命令做成 systemd timer 定期更新,但要注意不要过于频繁,否则每次刷新索引本身也会消耗时间。建议每周一次或手动执行。
四、开启并行下载
新版本 pacman 支持并行下载,这是最直接、零额外依赖的提速手段。编辑 `/etc/pacman.conf`: ini [options] ParallelDownloads = 5 `5` 是较稳妥的默认值,带宽充裕可调到 `10`。数值过高反而可能因连接竞争导致整体变慢,建议从 5 开始测试。同时确认没有被注释掉,改完无需重启,下次 `pacman` 调用即生效。
如果同时希望看到下载进度条,可保留: ini Color ILoveCandy `ILoveCandy` 只是把进度条变成吃豆人动画,纯趣味,不影响速度。
五、用 aria2 实现多线程加速(可选)
pacman 本身是单连接下载,单个大包速度有限。借助 `aria2` 可以给每个包开启多连接。常见做法是安装 `aria2` 后用脚本接管下载: bash sudo pacman -S aria2 在 `/etc/pacman.conf` 的 `[options]` 段中指定自定义下载器(示例写法): ini XferCommand = /usr/bin/aria2c --allow-overwrite=true --continue=true --file-allocation=none --max-tries=5 --max-connection-per-server=8 --split=8 --min-split-size=1M --dir=/var/cache/pacman/pkg --out=%o %u 关键参数说明:
| 参数 | 作用 |
|---|---|
| `--max-connection-per-server=8` | 每个服务器最多 8 连接 |
| `--split=8` | 单文件切分为 8 段下载 |
| `--min-split-size=1M` | 小于 1M 的文件不切分 |
| `--continue=true` | 断点续传 |
需要提醒的是:使用 `XferCommand` 会接管下载流程,与 `ParallelDownloads` 的机制可能互相影响,实际使用时建议二选一,或根据实测决定。此外部分镜像对单 IP 并发连接有限制,连接数不宜盲目调高。
六、缓存与本地优化
- 保留包缓存:`/var/cache/pacman/pkg/` 保存已下载的包,重装或回滚时可直接复用,避免重复下载。默认会保留,除非手动执行 `pacman -Sc`。
- 清理策略:`pacman -Sc` 清理未安装版本,`pacman -Scc` 清空全部。频繁 `-Scc` 会导致每次都要重下,反而不利于提速。
- 升级习惯:用 `pacman -Syu` 一次性更新,避免反复 `-Sy` 造成部分升级(partial upgrade)问题。
- AUR 场景:AUR 助手(如 `yay`、`paru`)可配置 `--bottomup` 或并行构建选项加速编译,与 pacman 镜像配置共用同一 `mirrorlist`。
七、效果验证与常见问题
调整后重启终端,执行一次升级观察: bash sudo pacman -Syu 若速度仍不理想,按以下顺序排查:
- 镜像是否真的快:单独 `curl -O` 拉一个大包测速,确认不是网络本身问题。
- DNS 解析慢:更换为本机运营商或公共 DNS,减少解析耗时。
- 代理干扰:企业网络下的 HTTP 代理可能拖慢 HTTPS 连接,确认 `no_proxy` 未误伤镜像域名。
- 并行下载未生效:检查 `ParallelDownloads` 是否写在 `[options]` 段、是否被其他配置覆盖。
- **
时间:2026-10-07
来源:https://mirror.ciilii.com/
