请教老司机哪里有最新版本适用于 openwrt 的 aria2 下载地址

2016-04-17 17:03:39 +08:00
 Stupitch

由于众所周知的原因, Aria2 在 openwrt 的官方源中不再支持 BT 模块,所以得自己编译。但是问题来了,我不会。。。

之前从恩山那里拿了一个包,但是用了几天后发现不好用,现在到处找包找不到,简直快要疯了。

本来发现有一个网站( http://files.lancethepants.com/Binaries/aria2/) 有 aria2 的最新版,但是下载下来发现文件名竟然没有后缀,都不知道怎么装。我现在就想求个 ipk 包,除了自己编译,真的没有别的办法了吗?

1590 次点击
所在节点    问与答
12 条回复
NemoAlex
2016-04-17 17:46:56 +08:00
Stupitch
2016-04-17 22:06:55 +08:00
@NemoAlex 卧槽,我刚才就一直在研究你给的这个页面,没想到竟然凑巧被本尊回复,真是感到荣幸啊。

不过,问题来了,我按照步骤走最后 make menuconfig 的时候是没有出现 aria2 的,按照我个人的理解,要么 git clone 是没有把代码搞到 /package/aria2 下面去的(其实我不懂 git 命令怎么运作的,我只知道我 CD 不了这个路径),要么就是 aria2 的源代码的 makefile 出了问题,因为我大概看了下,这个 github 页面的举例的项目都是包含现成的 makefile 的,但是 aria2 是没有的。看了 aria2 的官方编译指南,发现好像意思是需要用 autoreconf -i 这个命令生成标准 makefile (好吧,其实我完全不懂)。

另外,看 aria2 官方的描述,要安装对应的库才能编译对应的模块,所以我又不知道该如何去装了。

本来我想大家用的都是标准的编译方法,用这种办法的应该不多吧,所以我就不知道上哪问去了,没想到作者竟然就出现了,而且还实践编译过 aria2 ,真是救命稻草啊。所以,能否以该教程为蓝本,说一说编译 aria2 的关键细节吗?
fcicq
2016-04-17 22:42:29 +08:00
这个是官方编译版本默认关闭 BT 支持的 commit.
https://github.com/openwrt/packages/commit/2b8aeb50029bb3a46517bd0508b05925bd793f0c

Config.in 可知需要打开 ARIA2_METALINK 和 ARIA2_BITTORRENT, 后者依赖 ARIA2_OPENSSL, 打开才会出现.

openwrt 的 packages 和主源码分开有日子了, 用 script/feeds update -a; script/feeds install -a 更新激活.
Stupitch
2016-04-17 22:54:15 +08:00
@fcicq 没太懂你的意思, aria2 本身的机制是配置文件开启模块,但是前提是你得有模块,否则配置文件开启相关功能会有一堆 unknown option 。

libgnutls-dev (Required for HTTPS, BitTorrent, Checksum support)
nettle-dev (Required for BitTorrent, Checksum support)
libgmp-dev (Required for BitTorrent)
libssh2-1-dev (Required for SFTP support)
libc-ares-dev (Required for async DNS support)
libxml2-dev (Required for Metalink support)
zlib1g-dev (Required for gzip, deflate decoding support in HTTP)
libsqlite3-dev (Required for Firefox3/Chromium cookie support)
pkg-config (Required to detect installed libraries)

官方版本在编译时就没有把 BT 相关的模块给编译进去,所以只能进行普通的 url 下载。
NemoAlex
2016-04-17 23:27:04 +08:00
没错,想编译官方提供的 package 的话,
script/feeds update
script/feeds install -a
之后就可以在 make menuconfig 里找到 aria2 了
fcicq
2016-04-17 23:28:04 +08:00
@Stupitch hmm, 如果 BT 支持确实依赖那么多包的话情况确实是不妙了.
那应当替换掉 aria2 的 Config.in 和 Makefile, 从目前的 Makefile 所见, --without-libnettle --without-libgmp 都已经写死了. Config.in 里的问题是 ARIA2_GNUTLS 并不能激活 ARIA2_BITTORRENT.

但是如果以前官方版本不需要做补丁也能下载 BT 的话说明依赖并非是你展示的这样, 缺少 libnettle 和 libgmp 也能用.
NemoAlex
2016-04-17 23:36:20 +08:00
@fcicq 不用的,在 menuconfig 里, aria2 一项下面有支持 BT 和 metalink 的选项。
选中以后会自动处理依赖。
需要注意的是编译环境的依赖可能会增加一些软件,编译过程中遇到错误的话,可以尝试安装相应的软件来解决。
fcicq
2016-04-17 23:40:56 +08:00
@NemoAlex 个人不需要 openwrt 版本的 aria2. 但是手里常备 openwrt trunk 的代码所以随时可以检查. 换 musl libc 之后做不出 4M 以内的固件了轻度不爽, 但摆脱 uclibc 总体应该利大于弊.
Stupitch
2016-04-18 08:25:45 +08:00
@NemoAlex 这是什么意思呢?是从 openwrt 官方下载 aria2 源码再执行该命令还是说从 aria2 的官方下载源码执行该命令?我看有教程是直接从 aria2 官方源码编译的,又该怎么做?
Stupitch
2016-04-18 09:45:01 +08:00
@NemoAlex 又学习了一些教程,发现应该是这样的:把代码 git 到 /package/aria2 下后,应该进入到 /package/aria2 ,然后执行 autoreconf -i (当然前提是所有的环境包都安装好了,否则无法 autoconf 生成相关配置文件)。然后,现在的问题就是,我不会进入到 /package/aria2 这个目录。抱歉,没用过容器,所以不知道如何进入到具体的路径下,求指教。
NemoAlex
2016-04-18 09:46:52 +08:00
@Stupitch 是的, feeds 就是源码的仓库。一般来说可以用 openwrt 的源码来编译软件,也可以用 SDK 来编译。针对特定版本,例如 15.05.1 的话,最好用 SDK 来编译。
NemoAlex
2016-04-18 09:56:01 +08:00
Email 联络吧 zhhjchina@gmail.com

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/271773

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX