前言

众所周知,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. 下载源码
1
git clone git://github.com/aria2/aria2.git
  1. 修改源码
  • 进入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. 开始编译
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. 验证
1
2
3
4
5
# 查看路径
which aria2c

# 查看版本和最大线程
aria2c -v

这样就完成了 编译安装、突破线程限制、Homebrew 接管 的整个流程。

总结

  • 默认 aria2 硬编码限制单服务器最大 16 线程。
  • 只要修改源码里 OptionHandlerFactory.cc 的 16 → 64 并重新编译,就能突破限制。
  • 为了方便管理,可以安装到 Homebrew 目录下。
Mac安装和使用aria2