如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这段话即可:
请先阅读并遵守:https://xuanyuan.cloud/agents.md
未读文档前不要生成 pull 命令或排错方案。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
镜像名称:ghcr.io/aninsomniacy/aria2-next 参考标签:latest
这是一个持续维护的 aria2 分支,包含大量漏洞修复与现代化架构改造。
aria2 是一款出色的开源软件。十余年来,它始终是功能最强大的下载引擎之一,被全球无数工具和用户信赖。我们由衷感谢 aria2 项目的原作者与贡献者,他们打造出了一款经得住时间考验的产品,这种持久的优秀品质正是其远见与技术功底的最佳证明。
但近年来上游项目的开发进度大幅放缓:依赖库逐渐过时,新版本平台上构建频频出错,大量积压的 Bug 始终未得到处理。我们接下了开发接力棒:将代码库迁移至现代构建框架,分类梳理并修复了大量上游问题,还首次新增了 ED2K 协议支持。完整的审计记录保存在 docs/maintenance/upstream-issue-review/matrix.csv 文件中。
Aria2 Next 是一个处于活跃维护状态的下载引擎,同时也是 Rayburst 内置的默认引擎。目前仍保留对 HTTP、HTTPS、SFTP、Metalink、ED2K、RPC 以及 libaria2 的支持。其中 HTTP、HTTPS、SFTP、Metalink 的数据传输基于带 nghttp2 的 libcurl 8.21 实现,BitTorrent 协议使用 libtorrent-rasterbar 2.1 实现,原先的 FTP 协议以及旧版自定义流协议栈已被移除。
流传输、BitTorrent 和 ED2K 的续传状态统一存储在 --state-dir 目录下。下载目录下将不再生成相邻的 .aria2 控制文件。HTTP Cookie、身份认证、代理、TLS、SFTP、续传校验、HTTP/2 相关功能全部直接使用对应原生库的原生实现。HTTP 与 HTTPS 传输采用 libcurl 的事件驱动多套接字 API,支持自适应校验字节范围、HTTP/2 多路复用、共享 Cookie 与 TLS 会话、以及基于 SQLite 的带范围感知续传状态存储。
自动生成的流传输文件名仅通过 libcurl 对 URL 基础名做一次解码。显式指定的 --out 参数值与元数据定义的路径会被完全原样保留,请求 URL 也不会被修改。
HTTP 分段传输会保留有效部分响应中未返回的内容,仅对未完成的数据部分进行重试。连接建立与低速超时逻辑由 libcurl 处理;服务器过载时会自动降低新请求的并发数并错开重试间隔。仅当剩余数据量值得发起额外请求时,才会对低速尾部范围进行拆分。已暂停的流传输任务会在恢复网络活动前,先还原已保存的进度。HTTP 403 状态码不会下调并发配额。HTTP 429/503 状态码每生成一次请求仅下调一次并发配额,后续数据传输取得进展时无需等待整个分段完成即可自动恢复并发数。
校验通过的重定向目标地址会被后续的分段传输复用。过期的目标地址会通过源路由路径发送一次请求进行刷新,无需让所有分段都重新经过签名入口点。凭证信息会保留其原始源边界,Cookie 则始终由 libcurl 统一管理。
无限制并行 HTTP 下载会在可用地址族范围内使用一组有界的工作线程池。工作线程在从同一队列取分段任务时会保留自身的传输选择,处理速度更快的线程可以完成更多工作,不会干扰其他正在进行的传输路径。重定向目标地址归属于其对应的源路由。已接收的字节始终提交给同一个分段规划器,空闲的工作线程可以协助处理未完成的分段。DNS、连接建立、TLS 与连接池管理全部沿用 libcurl 的原生实现,同时完全支持用户显式指定的 IPv4、网络接口、代理与限速配置。
磁力链下载从元数据发现阶段开始,经过文件选择、数据传输到做种的整个流程都使用同一个 GID。当设置 pause-metadata=true 时,该 GID 会保持暂停状态,同时保存完整的文件列表,且 bittorrent.fileSelectionState=awaiting,直到用户提交合法的 select-file 指令。随后 Aria2 Next 会将仅含元数据的原生句柄替换为已完成校验、包含最终文件优先级的 libtorrent 句柄,避免过期的部分文件进入下载会话。
BitTorrent 会话会持久化原生 IPv4 与 IPv6 DHT 路由状态,恢复暂停的种子时不会直接激活网络传输,运行过程中会定期对快速续传数据做检查点,保留可表征的跟踪服务器层级,仅对优先级最低的多余层级做压缩,同时将私有种子与全局跟踪服务器注入机制隔离。暂停的任务在进程重启后仍会保留已校验的任务与文件进度。永久删除任务时会以原生操作一并移除快速续传数据与部分文件状态。TCP、uTP、PEX、本地节点发现、UPnP/NAT-PMP、传输加密、v1/v2 种子、稀疏文件/预分配存储、顺序下载模式、HTTP/SOCKS 代理功能全部通过 libtorrent 的原生能力实现。
其高级原生控制能力覆盖请求与磁盘队列、磁盘 I/O 策略、节点轮换、TCP/uTP 平衡、上传调度、文件优先级、Web 种子、手动指定节点以及续传检查点。运行时诊断信息会通过 JSON-RPC 输出节点发现、跟踪服务器、DHT、传输层、磁盘队列、协议开销以及聚合性能警告状态。
HLS(.m3u8)和 MPEG-DASH(.mpd)下载在引擎内部直接使用原生 GPAC、libcurl 和 FFmpeg 库实现。媒体下载任务支持码率选择、直播录制、暂停恢复,以及无需转码的 MP4/Matroska 格式输出。媒体下载进度基于演示时长统计,而非人为估算的输出文件大小。相关 CLI 与 RPC 接口约定和功能范围请参考媒体下载说明文档。
Aria2 Next 内置原生 ED2K/eMule 支持,网络行为对齐 aMule 的实现逻辑。ED2K 功能完全兼容常规 aria2 的 CLI、会话与 JSON-RPC 工作流,支持服务器与 Kad 节点发现、节点间传输、搜索、共享、上传队列、协议混淆、持久化运行身份以及重启后溯源种子。相关维护架构与校验范围已记录在 docs/maintenance/ed2k-runtime.md 文件中。
| 层面 | 当前约定 |
|---|---|
| 可执行文件 | aria2-next |
| CLI | 维护 aria2-next 专属选项,已弃用旧版 aria2 的输入规范化逻辑 |
| 配置 | 使用 aria2 键值格式,已弃用旧版输入规范化逻辑 |
| 会话 | 使用标准 aria2-next 任务文件与原生引擎续传数据 |
| RPC | 维护原有 aria2 JSON-RPC 方法,已弃用旧版选项规范化逻辑,新增原生扩展 |
| 库 | 使用公开 libaria2 头文件,已弃用旧版选项规范化逻辑 |
Rayburst 内置了该引擎,同时发布的构建产物为独立可执行二进制文件。
Linux 版本的发布二进制文件要求系统安装 glibc 2.35 或更高版本,以及兼容的系统 C++ 运行时,与 Ubuntu 22.04 构建环境及容器基线保持一致。旧版 aria2 已标记弃用的选项如果存在当前等效实现,会被自动映射;如果对应的功能已由原生引擎接管或已移除,则会跳过该选项并仅输出一次警告。无法识别的选项名仍会直接报错。旧版任务状态与相邻的 .aria2 控制文件不会被导入。
.aria2 的 always-resume 已作为弃用的布尔选项被接受,包括 *** 传入的 --always-resume=false 参数。该选项会被跳过并输出一条警告;下载行为将由原生恢复所有权、有界的完整响应重传机制以及显式覆盖设置共同决定。
下载单个文件:
aria2-next https://example.com/file.iso
下载 ED2K 文件链接:
aria2-next ' '
运行 JSON-RPC 服务器:
aria2-next --enable-rpc --rpc-listen-all=false --rpc-listen-port=6800
以守护进程模式运行 JSON-RPC 服务器:
aria2-next --daemon=true --enable-rpc=true --rpc-listen-all=false --rpc-listen-port=6800
查看已启用的功能与构建详情:
aria2-next --version
aria2-next --help=#ed2k
| 区域 | 状态 | 说明 |
|---|---|---|
| 多协议 aria2-next 二进制文件 | - | 核心交付产物 |
| 主要消费方 | Rayburst sidecar 引擎 | 内置适配的核心场景 |
| 外部消费方 | 现有 aria2 脚本、前端、RPC 客户端及自动化流程 | 完全兼容原有 aria2 生态 |
| 构建系统 | CMake 3.25+ 搭配 Ninja 预设 | 提供标准化构建流程 |
| 发布支持平台 | macOS、Windows、Linux、Android | 覆盖所有主流维护状态的 CPU 架构 |
| 维护状态 | 由 AnInsomniacy 自 2026 年起持续维护 | 长期支持 |
| 维护记录 | 保留完整上游问题评审矩阵 | 可追溯所有历史 issue 处理记录 |
cmake --preset default
cmake --build --preset default
ctest --preset default
build/default/aria2-next --version
贡献指南可查看 docs/CONTRIBUTING.md。
也支持直接使用 Plain Ninja 构建:
cmake -S . -B build/default -G Ninja -DCMAKE_BUILD_TYPE=RelWithDebInfo
cmake --build build/default
ctest --test-dir build/default --output-on-failure
常用构建选项包括:ARIA2_ENABLE_BITTORRENT、ARIA2_ENABLE_METALINK、ARIA2_ENABLE_WEBSOCKET、ARIA2_ENABLE_LIBARIA2、ARIA2_RELEASE_SIZE_OPTIMIZED 以及 ARIA2_RELEASE_LTO。
默认的超级构建流程会从 third_party 目录编译所有依赖库,仅需 CMake、Ninja、POSIX shell、Make、Perl 以及符合 C11/C++17 标准的平台工具链即可完成构建。在 Windows 平台上,MSYS2 会提供所需的 shell、Make 和 Perl,编译过程使用原生目标工具链。
预构建产物已发布至 GitHub Releases 页面。
| 平台 | 架构 | 产物文件名 |
|---|---|---|
| Linux | x86_64 | aria2-next-<版本号>-linux-x86_64 |
| Linux | ARM64 | aria2-next-<版本号>-linux-aarch64 |
| macOS | Apple Silicon | aria2-next-<版本号>-macos-arm64 |
| macOS | Intel | aria2-next-<版本号>-macos-x86_64 |
| Windows | x86_64 | aria2-next-<版本号>-windows-x86_64.exe |
| Windows | ARM64 | aria2-next-<版本号>-windows-arm64.exe |
| Android | ARM64 | aria2-next-<版本号>-android-arm64 |
| 全平台 | 所有发布资产 | aria2-next-<版本号>-checksums.sha256 |
Linux、macOS 和 Android 平台的下载产物均为可执行文件。如果浏览器意外清除了可执行权限,运行 chmod +x ./aria2-next-<版本号>-<平台架构> 即可恢复。
容器镜像已发布至 GitHub Container Registry,提供 Linux x86_64 和 Linux ARM64 多架构支持。
运行最新版本容器:
docker run --rm \
-e PUID="$(id -u)" \
-e PGID="$(id -g)" \
ghcr.io/aninsomniacy/aria2-next:latest --version
以 JSON-RPC 服务模式运行容器:
docker run -d --name aria2-next \
-p 6800:6800 \
-e PUID="$(id -u)" \
-e PGID="$(id -g)" \
-v "$PWD/downloads:/downloads" \
-v "$PWD/config:/config" \
-v "$PWD/state:/var/lib/aria2-next" \
--memory=512m --cpus=2 --pids-limit=256 \
ghcr.io/aninsomniacy/aria2-next:latest
使用当前主机账号 ID 运行已维护的 Compose 定义:
PUID="$(id -u)" PGID="$(id -g)" \
docker compose -f packaging/docker/compose.yml up -d
[!IMPORTANT] 该容器要求必须传入
PUID和PGID环境变量。入口点会将所有可写挂载点的所有权分配给这两个 ID,并在配置文件和会话文件不存在时自动创建。官方建议使用非 root ID 运行,针对需要高权限访问的特殊环境,支持将 UID 或 GID 设置为 0,此时容器会在启动时输出一条警告。默认配置下容器内部已启用 JSON-RPC,下载文件默认存放在/downloads目录,会话状态保存在/var/lib/aria2-next路径下。如果需要在可信局域网之外暴露 RPC 服务,必须额外添加--rpc-secret=<密钥>参数。
官方发布的二进制版本默认通过 libcurl 验证 HTTPS 证书:Windows 平台使用 Schannel 和系统原生证书存储,无法访问的吊销服务会被视为软失败,但明确标记为已吊销的证书仍会被拒绝;macOS 平台使用 Apple SecTrust 框架;Linux 和 Android 平台使用 OpenSSL 默认信任路径,同时会遵循 SSL_CERT_FILE 和 SSL_CERT_DIR 环境变量的配置。你也可以通过 --ca-certificate 参数显式指定自定义 CA 证书文件。
完整的持久化审计制品均存放在 docs/maintenance/ 目录下。已保存的矩阵记录了 137 条经过评审的上游 bug issue,其中 43 条的最终状态标记为 fixed-verified(已修复且验证通过)。
审计记录将所有 issue 明确划分为以下类别:确认修复的问题、已在上游版本中修复的报告、预期的文档化行为、环境相关问题、平台专属问题、站点专属问题、无法复现的报告,以及需要架构级调整的大范围限制项。
CMakeLists.txt 是本项目的版本信息唯一可信源,发布标签采用 v{PROJECT_VERSION} 格式。
发布工作流会在匹配的 GitHub Release 发布时自动触发,流程会首先校验标签是否与 CMakeLists.txt 中定义的版本一致,之后编译所有维护状态平台的二进制文件、生成 SHA-256 校验和、上传发布可执行文件,最后调度 Docker 镜像发布流程,生成对应发布标签的容器镜像。源代码由 GitHub Release 自动生成的源码归档包提供。
仅推送标签不会触发发布构建流程,你可以通过 workflow_dispatch 手动触发当前工作流提交的发布路径校验,最终生成的二进制文件和校验和文件会被归档为名为 aria2-next-<版本号>-release-assets 的工作流运行产物。正式发布的 GitHub Release 必须使用与 CMakeLists.txt 中版本完全匹配的 v{PROJECT_VERSION} 格式标签。
官方容器镜像会在发布资产上传成功后自动发布。Docker 发布工作流支持手动触发独立重建,如果未指定标签则默认使用最新的 GitHub Release 版本。该流程会基于已发布的二进制文件组装 Linux 多架构镜像,最终发布 ghcr.io/aninsomniacy/aria2-next:latest 标签以及与之对应的 v{PROJECT_VERSION} 版本标签。
所有发布版本的依赖版本信息均记录在 packaging/dependencies.env 文件中,对应的依赖源码统一放在 third_party/ 目录下,因此构建依赖库的过程完全不需要联网访问外部资源。
| 路径 | 用途 |
|---|---|
CMakeLists.txt | 项目声明与模块入口点 |
CMakePresets.json | 标准配置、构建与测试预设 |
cmake/ | CMake 模块、源文件清单与生成配置模板 |
src/ | Aria2 Next 命令行客户端及核心实现,详见归属映射文档 |
src/includes/aria2/ | libaria2 公共头文件 |
tests/ | 通过 CTest 注册的 doctest 单元测试套件 |
docs/ | 手册源码、补全工具与维护记录 |
packaging/ | 发布依赖、交叉构建脚本与软件包资源 |
third_party/ | 附带明确归属规则的 vendored 源代码 |
tools/ | 本地开发者辅助工具 |
与 aria2 保持一致:采用 GPLv2 许可。OpenSSL 链接例外文本已保留在 docs/licenses/OPENSSL.md 中。
本项目是持续维护的 aria2 分支,包含大量 bug 修复与现代化架构改造。
aria2 是一款优秀的开源软件。十余年来,它始终是能力最突出的下载引擎之一,获得全球无数工具与用户的信赖。我们对 https://github.com/aria2/aria2 的作者与所有贡献者深表感谢:他们打造出了经得住时间考验的产品,这份持久的可用性正是其远见与技术水准的最佳证明。
但近年上游开发进度大幅放缓:依赖库版本陈旧,在现代平台上构建频繁失败,大量积压 bug 无人处理。我们接过了维护的接力棒:将代码库迁移至现代化构建框架,梳理并修复了大量上游遗留问题,还首次新增了 ED2K 协议支持。完整的审核追踪记录保存在 docs/maintenance/upstream-issue-review/matrix.csv 中。
Aria2 Next 是一个持续活跃维护的下载引擎,同时也是 https://github.com/AnInsomniacy/rayburst 所使用的内置引擎。当前仍支持 HTTP、HTTPS、SFTP、Metalink、ED2K、RPC 协议与 libaria2 接口:
流、BitTorrent 与 ED2K 的断点续传状态统一存储在 --state-dir 目录下,负载文件目录下不再生成相邻的 .aria2 控制文件。HTTP Cookie、身份认证、代理、TLS、SFTP、续传校验与 HTTP/2 功能均直接使用对应原生库的实现。HTTP 与 HTTPS 传输采用 libcurl 的事件驱动多套接字 API、自适应校验字节范围、HTTP/2 多路复用、共享 Cookie 与 TLS 会话机制,以及感知范围的 SQLite 断点续传状态存储。
自动生成的流文件名仅通过 libcurl 解码一次 URL basename,显式指定的 --out 值与元数据定义的路径将保持原样,请求 URL 不会被修改。
HTTP 范围传输会保留有效部分响应中未返回的片段,仅重试未完成的数据段。连接建立与低速超时逻辑由 libcurl 处理;服务器过载场景下会自动降低新请求并发度,并错开重试时间点。仅当剩余数据量值得发起新请求时,才会对末尾的低速范围进行分片拆分。暂停的流任务在恢复网络活动前,会先还原已保存的进度。HTTP 403 状态码不会触发并发配额下调;HTTP 429/503 状态码仅会对每一批次请求下调一次并发度,后续负载进度完成后即可恢复并发额度,无需等待整个分片全部传输完毕。
校验通过的重定向目标地址会被后续分片请求复用。过期的目标地址仅会通过每个源路由发起一次请求进行刷新,不会让所有分片请求都重新经过签名入口点。凭据会保留其原始源边界,Cookie 全程由 libcurl 管理。
无限制并行 HTTP 下载会在可用地址族范围内使用一组有界工作协程池。工作协程在处理同一队列分片时会保留已选定的传输方式,性能更高的协程可以处理更多任务,不会干扰其他活跃传输的路径选择。重定向目标地址归属于其源路由。已接收的字节始终归属同一个分片规划器,空闲工作协程可以协助处理未完成的分片任务。DNS 解析、连接建立、TLS 握手与连接池管理全部沿用 libcurl 的原生实现,同时完全尊重用户显式设置的 IPv4、网卡、代理与限速参数。
磁力链接下载从元数据获取、文件选择、负载传输到做种全程使用同一个 GID。当设置 pause-metadata=true 时,该 GID 会保持暂停状态,同时返回完整文件列表与 bittorrent.fileSelectionState=awaiting 状态,直到用户提交合法的 select-file 指令。随后 Aria2 Next 会将仅保存元数据的原生句柄替换为已设置最终文件优先级的校验通过 libtorrent 句柄,避免无效的临时 part 文件进入下载会话。
BitTorrent 会话会持久化原生 IPv4 与 IPv6 DHT 路由状态:将暂停的种子恢复至 libtorrent 时不会自动激活网络传输,运行期间会自动快照快速恢复数据,保留可表示的 tracker 层级,仅对优先级最低的冗余层级执行压缩,并将私有种子与全局 tracker 注入机制完全隔离。暂停的任务在进程重启后仍能保留已校验的任务与文件进度。永久删除任务会作为原子原生操作,同步清理快速恢复数据与 part 文件状态。TCP、uTP、PEX、本地节点发现、UPnP/NAT-PMP、传输加密、v1/v2 版本种子、稀疏/预分配存储、顺序模式、HTTP/SOCKS 代理等功能全部基于 libtorrent 原生能力实现。
高级原生控制项覆盖请求与磁盘队列、磁盘 I/O 策略、节点轮换、TCP/uTP 负载均衡、上传调度、文件优先级、Web 种子、手动添加节点、续传快照等场景。运行时诊断信息可通过 JSON-RPC 上报节点发现、Tracker、DHT、传输层、磁盘队列、协议开销与聚合性能警告状态。
HLS(.m3u8)与 MPEG-DASH(.mpd)协议在同一引擎内部原生集成 GPAC、libcurl 与 FFmpeg 库支持。媒体下载任务支持多码率选择、实时录制、暂停重启,以及无需转码的 MP4/Matroska 容器输出。媒体下载进度基于演示时长计算,而非人为估算的输出文件大小。关于 CLI/RPC 接口约定与功能范围,详见媒体下载文档。
Aria2 Next 提供与 aMule 网络行为对齐的原生 ED2K/eMule 支持。ED2K 协议完全兼容原有 aria2 的命令行、会话与 JSON-RPC 工作流,覆盖服务器与 Kad 节点发现、节点间传输、搜索、共享、上传队列、协议混淆、持久化运行时身份、重启后源节点自动恢复等功能。其维护架构与验证范围详见文档 docs/maintenance/ed2k-runtime.md。
| 接口领域 | 当前约定说明 |
|---|---|
| 可执行文件 | aria2-next |
| 命令行 | 保留原有 aria2-next 全部选项,移除旧版 aria2 的输入规范化逻辑 |
| 配置 | 沿用 aria2 键值格式,移除旧版输入规范化逻辑 |
| 任务会话 | 使用 aria2-next 标准任务文件与原生引擎断点续传数据 |
| RPC | 兼容原有 aria2 JSON-RPC 方法,移除选项规范化逻辑,新增原生扩展能力 |
| 库 | 对外暴露 libaria2 公共头文件,移除选项规范化逻辑 |
Rayburst 已内置该引擎,所有发布产物均为独立可执行二进制文件。
Linux 平台发布的二进制文件要求系统已安装 glibc 2.35 或更高版本,且配备兼容的系统 C++ 运行时,编译基准为 Ubuntu 22.04 对应系统环境。
对于可识别的已废弃 aria2 选项,若存在等效的新版选项则自动映射转换;若该行为已由原生引擎接管或移除,则直接跳过该选项并输出一条警告。
无法识别的选项名称仍会抛出错误。旧版任务状态与配套的 .aria2 控制文件不会被导入。
always-resume 作为已废弃的布尔选项仍可被识别,包括 *** 传入的 --always-resume=false 参数也会被正常接收。该选项会被跳过并输出警告,实际下载行为由原生接管的恢复逻辑、有界全响应断点重传机制与显式覆盖配置共同决定。
下载单个文件:
aria2-next https://example.com/file.iso
下载 ED2K 链接指向的文件:
aria2-next ' '
启动 JSON-RPC 服务:
aria2-next --enable-rpc --rpc-listen-all=false --rpc-listen-port=6800
以后台守护进程模式运行 JSON-RPC 服务:
aria2-next --daemon=true --enable-rpc=true --rpc-listen-all=false --rpc-listen-port=6800
查看已启用的功能特性与构建详情:
aria2-next --version
aria2-next --help=#ed2k
| 模块 | 状态说明 |
|---|---|
| 核心引擎 | 支持多协议的 aria2-next 二进制程序 |
| 主要集成方 | Rayburst 边车引擎 |
| 外部适用场景 | 现有 aria2 脚本、前端界面、RPC 客户端与自动化工作流 |
| 构建系统 | CMake 3.25+ 版本,配套 Ninja 预设构建配置 |
| 发布目标平台 | 主流 CPU 架构下的 macOS、Windows、Linux 与 Android |
| 维护状态 | 自 2026 年起由 AnInsomniacy 持续维护 |
| 维护记录 | 完整保留上游 issue 评审矩阵 |
cmake --preset default
cmake --build --preset default
ctest --preset default
build/default/aria2-next --version
可在 docs/CONTRIBUTING.md 中查阅贡献指南。
项目也支持原生 Ninja 直接构建:
cmake -S . -B build/default -G Ninja -DCMAKE_BUILD_TYPE=RelWithDebInfo
cmake --build build/default
ctest --test-dir build/default --output-on-failure
常用编译选项包括 ARIA2_ENABLE_BITTORRENT、ARIA2_ENABLE_METALINK、ARIA2_ENABLE_WEBSOCKET、ARIA2_ENABLE_LIBARIA2、ARIA2_RELEASE_SIZE_OPTIMIZED 和 ARIA2_RELEASE_LTO。
默认的超级构建流程会从 third_party 目录编译所有依赖库,仅需预先安装 CMake、Ninja、POSIX shell、Make、Perl 以及符合 C11/C++17 标准的平台工具链。在 Windows 环境下,可通过 MSYS2 提供 shell、Make 和 Perl 组件,编译过程使用原生目标平台工具链。
预构建产物已发布至 https://github.com/AnInsomniacy/aria2-next/releases 页面。
| 平台 | 架构 | 产物名称 |
|---|---|---|
| Linux | x86_64 | aria2-next- -linux-x86_64 |
| Linux | ARM64 | aria2-next- -linux-aarch64 |
| macOS | Apple Silicon | aria2-next- -macos-arm64 |
| macOS | Intel | aria2-next- -macos-x86_64 |
| Windows | x86_64 | aria2-next- -windows-x86_64.exe |
| Windows | ARM64 | aria2-next- -windows-arm64.exe |
| Android | ARM64 | aria2-next- -android-arm64 |
| 校验文件 | 所有发布资产 | aria2-next- -checksums.sha256 |
Linux、macOS 与 Android 平台的下载产物为可执行文件。如果浏览器下载后清除了可执行权限位,可运行 chmod +x ./aria2-next- - 恢复执行权限。
面向 Linux x86_64 和 Linux ARM64 架构的容器镜像已发布至 GitHub Container Registry。
运行最新版本容器:
docker run --rm \
-e PUID="$(id -u)" \
-e PGID="$(id -g)" \
ghcr.io/aninsomniacy/aria2-next:latest --version
以 JSON-RPC 服务模式运行容器:
docker run -d --name aria2-next \
-p 6800:6800 \
-e PUID="$(id -u)" \
-e PGID="$(id -g)" \
-v "$PWD/downloads:/downloads" \
-v "$PWD/config:/config" \
-v "$PWD/state:/var/lib/aria2-next" \
--memory=512m --cpus=2 --pids-limit=256 \
ghcr.io/aninsomniacy/aria2-next:latest
使用当前主机账号 ID 运行官方维护的 Compose 配置:
PUID="$(id -u)" PGID="$(id -g)" \
docker compose -f packaging/docker/compose.yml up -d
容器运行必须配置 PUID 和 PGID 环境变量。入口点会将所有可写入挂载点的权限分配给指定 UID/GID,并在配置与会话文件不存在时自动生成。推荐使用非 root 身份运行,需要高权限访问的环境也支持使用 UID 或 GID 设为 0 的 root 身份启动,此时容器会输出一条启动警告。默认配置下容器已启用 JSON-RPC,下载文件默认存储在 /downloads 目录,会话状态默认保存在 /var/lib/aria2-next 路径。如果需要将 RPC 服务暴露到可信本地网络之外,请务必添加 --rpc-secret= 参数配置访问密钥。
发布版本的二进制文件默认通过 libcurl 校验 HTTPS 证书:Windows 平台使用 Schannel 与系统原生证书存储,无法连接的证书吊销服务将被视为软错误,但明确标记为已吊销的证书仍会被直接拒绝;macOS 平台使用 Apple SecTrust 框架;Linux 与 Android 平台使用 OpenSSL 默认可信根路径,自动识别环境变量 SSL_CERT_FILE 与 SSL_CERT_DIR 的配置。用户仍可通过 --ca-certificate 参数指定自定义 CA 证书文件。
用于长期留存的审计文件全部存放于 docs/maintenance/ 目录下,已归档的评审矩阵共包含 137 个经人工审核的上游缺陷 issue,其中 43 条记录的最终状态为 fixed-verified(已修复并验证)。
审计记录会明确区分已确认修复、已自行修复、属于文档约定行为、环境相关问题、平台适配问题、特定站点问题、无法复现问题以及重大架构层面限制等不同类型的条目。
CMakeLists.txt 是本项目版本号的唯一可信来源,发布标签采用 v{PROJECT_VERSION} 格式。
当匹配规则的 GitHub Release 被发布时,发布工作流会自动触发:先校验发布标签与 CMakeLists.txt 中的版本号是否一致,随后编译所有支持平台的二进制文件、生成 SHA-256 校验和、上传发布产物,最后自动触发同版本号的 Docker 镜像发布流程。项目源码由 GitHub 发布标签对应的源码归档包提供。
仅推送标签不会触发发布构建流程。你也可以通过 workflow_dispatch 手动触发指定工作流提交的发布路径校验,最终生成的所有二进制文件与校验和归档会作为工作流运行产物,命名为 aria2-next- -release-assets。正式发布的 GitHub Release 必须使用与 CMakeLists.txt 完全匹配的 v{PROJECT_VERSION} 格式标签。
官方容器镜像会在发布资产上传成功后自动发布。Docker Publish 工作流仍支持手动触发以进行独立重建,且在未提供标签时会自动使用最新的 GitHub Release。该工作流会基于发布二进制文件组装 Linux 多架构镜像,并同时发布 ghcr.io/aninsomniacy/aria2-next:latest 与对应 v{PROJECT_VERSION} 标签。
发布版本的依赖项版本在 packaging/dependencies.env 中跟踪记录。
对应的源码存放在 third_party/ 目录下,因此编译库文件时无需访问网络。
| 路径 | 用途说明 |
|---|---|
CMakeLists.txt | 项目声明与模块入口 |
CMakePresets.json | 标准化配置、构建与测试预设 |
cmake/ | CMake 模块、源码清单与生成的配置模板 |
src/ | Aria2 Next 命令行客户端及核心实现,详见权责映射文档 |
src/includes/aria2/ | libaria2 公共头文件 |
tests/ | 通过 CTest 注册的 doctest 单元测试套件 |
docs/ | 手册源码、补全工具与维护记录 |
packaging/ | 发布依赖、跨平台构建脚本与包资源 |
third_party/ | 已纳入版本控制的第三方源码,附带明确的权责规则 |
tools/ | 本地开发者辅助工具 |
与 https://github.com/aria2/aria2 采用相同的 GPLv2 许可证。OpenSSL 链接例外条款的文本保留在 docs/licenses/OPENSSL.md 中。
来自真实用户的反馈,见证轩辕镜像的优质服务