前言
众所周知,aria2 的 http下载线程最高被限制在16,我们可以手动修改源码重新编译来突破线程限制,这里简单介绍一下在Mac自行编译的步骤。
环境准备
1 2 3 4 5 6 7 8 9
| # 安装 Xcode 命令行工具 xcode-select --install
# 安装 Homebrew(如果还没装) /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# 安装依赖 brew install autoconf automake libtool pkg-config gettext brew install c-ares libssh2 sqlite3 openssl@3
|
如果之前安装过 aria2,建议先卸载防止冲突
编译步骤
- 下载源码
1
| git clone git://github.com/aria2/aria2.git
|
- 修改源码
- 进入aria2/src目录,修改OptionHandlerFactory.cc文件
1 2
| cd aria2/src vim OptionHandlerFactory.cc
|
- 搜索
MAX_CONNECTION_PER_SERVER
将下面的 16 改为 64
1 2 3
| OptionHandler* op(new NumberOptionHandler(PREF_MAX_CONNECTION_PER_SERVER, TEXT_MAX_CONNECTION_PER_SERVER, "1", 1, 16, 'x'));
|
这里稍微介绍一下这几个参数的含义:
- “1” → 默认值(字符串形式,代表默认最大连接数 1)
- 1 → 最小值
- 16 → 最大值(这个就是限制 max-connection-per-server 的地方,-1表示无限制)
- ‘x’ → 命令行短选项 -x
1 2 3
| OptionHandler* op(new NumberOptionHandler(PREF_MAX_CONNECTION_PER_SERVER, TEXT_MAX_CONNECTION_PER_SERVER, "64", 1, -1, 'x'));
|
- 实际使用不建议使用太高线程可能导致内存/CPU 占用飙升,32或者64已经足够,如果源码不设上限可以在 aria2.conf 配置文件中进行限制,这种方式更自由
1 2
| split=64 max-connection-per-server=64
|
- 开始编译
1 2 3 4 5 6 7 8 9 10 11
| # 生成 configure 脚本 autoreconf -i
# 配置安装到 Homebrew 目录 ./configure --prefix=$(brew --prefix) --with-openssl
# 编译,使用所有 CPU 核心 make -j$(sysctl -n hw.ncpu)
# 安装 make install
|
这样会把 aria2c 安装到 Homebrew 的 bin 目录:
- Apple Silicon: /opt/homebrew/bin/aria2c
- Intel: /usr/local/bin/aria2c
- 验证
1 2 3 4 5
| # 查看路径 which aria2c
# 查看版本和最大线程 aria2c -v
|
这样就完成了 编译安装、突破线程限制、Homebrew 接管 的整个流程。
总结
- 默认 aria2 硬编码限制单服务器最大 16 线程。
- 只要修改源码里 OptionHandlerFactory.cc 的 16 → 64 并重新编译,就能突破限制。
- 为了方便管理,可以安装到 Homebrew 目录下。
Mac安装和使用aria2