一.引
Centos6是我最常用的系统,稳定而且上手之后棒棒的,然而有个问题一直比较尴尬,就是很多软件在Centos6的源里版本落后太多,甚至已经不更新了,这真的尴尬啊,aria2就是这样……作为一款在Rpmforge(Repoforge)源中已经停更的软件(Rpmforge本身都已经放弃维护了),它的版本永远停留在了1.16.4,然而截止目前来说,aria2最新版本已经到了1.27.1,最蛋疼的是这玩意的1.18版本是个坎,很多的配置项都要求在1.18版本以上,特别是rpc-secret这个安全性更新,所以,没办法了,只能上编译大法了。
二.续
PS.最近发现确实是不少人来看这篇文章,我觉得有必要先说明一点,这个是我当初没找到有人发布静态编译的时候手动编译的过程,说实在话比较烦人,如果有想上手即用的建议参考我这篇文章中的静态编译版本,只需要解压然后加个可执行权限就能用——>传送门
首先是一堆依赖包,是的……作为一个强迫症我努力把依赖尽可能满足,所以多了一大堆包_(:з」∠)_,你们可以随意哟
yum install bison libssh2-devel expat-devel gmp-devel nettle-devel libuv-devel libssh2-devel zlib-devel c-ares-devel cppunit-devel gnutls-devel libgcrypt-devel libxml2-devel sqlite-devel gettext lzma-devel xz-devel gperftools gperftools-devel gperftools-libs jemalloc-devel
其中最后的gperftools和jemalloc二选一,第一个是TCMalloc要求,第二个是JEMalloc要求,其中libuv-devel、cppunit-devel都是可选的,要不要随意~\(≧▽≦)/~啦啦啦
然后就是编译啦,最新版本目前是1.27.1,还真是快呢,前两个星期我编译的时候还是1.26.1
cd /opt wget https://github.com/aria2/aria2/releases/download/release-1.27.1/aria2-1.27.1.tar.gz tar xzf aria2-1.27.1.tar.gz cd aria2-1.27.1 ./configure --enable-static=yes --enable-shared=no --with-libuv --with-jemalloc --with-ca-bundle='/etc/pki/tls/certs/ca-bundle.crt' ARIA2_STATIC=yes make&&make install
这个是半静态编译(其实想完全静态编译的,可惜那堆依赖纯静态的太难找了,只能凑合了),不需要的可以去掉--enable-static=yes --enable-shared=no以及最后的 ARIA2_STATIC=yes,当然如果你的系统ca-bundle不知道在哪也可以去掉那个选项,至于jemalloc的话可以换成tcmalloc,看你自己的喜好了,libuv也可以去掉哟,所以其实啥参数都可以不带呢_(:з」∠)_
PS.编译Aria2需要gcc >= 4.8.3 或者 clang >= 3.4,gcc在centos6中版本默认只有4.4,如需安装高版本得用其它方法,详情请参见我接下来的文章
另外还可能出现一个报错如下
请运行如下命令
ln -s /usr/lib64/libtasn1.so.3.1.6 /usr/lib64/libtasn1.so
然后应该就能正常编译了
然后就一切OK了,静态编译的话成品会在src/aria2c中,可以拷贝到其它地方使用呢,当然也得安装下依赖(没完全静态编译的问题啦,走一遍那个yum就行)
这就是最后的成品了,使用方法可以参考我博客的其它两篇文章哟,点下面标签或者搜索下就能看到了呢。
文章评论
请问运行完
“make&&make install” 报错,该如何处理呢
make: *** No targets specified and no makefile found. Stop
@forrestliu 请问是在哪步报错的?
@Senra …………
上面 checking 都是 “yes”
…………
checking for libuv... "no"
configure: error: in `/root/aria2-1.27.1':
configure: error: libuv is requested but not found in the system.
See `config.log' for more details
[root@centos-512mb-sfo1-01 aria2-1.27.1]# make&&make install
make: *** No targets specified and no makefile found. Stop.
@forrestliu
yum install libuv libuv-devel
然后重新configure一下
@Senra 您好,我的问题与上一位相同。make: *** No targets specified and no makefile found. Stop 即使yum install libuv libuv-devel
然后重新configure一下也无效
@神乐 这种错误是没有成功生成MAKEFILE,一般就是在configure部分出问题了,得需要你看缺了啥,然后缺啥补啥
@forrestliu 上官网下载和编译一份吧: https://github.com/libuv/libuv
/usr/bin/ld: cannot find -ltspi
collect2: error: ld returned 1 exit status
make[3]: *** [aria2c] Error 1
make[3]: Leaving directory `/root/aria2-1.34.0/src'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/root/aria2-1.34.0/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/root/aria2-1.34.0'
make: *** [all] Error 2
求助
@待续 目前不建议自己编译,你搜索aria2,有一篇合集里面有编译好的,拖下来解压就行。另外你这个明显是缺了东西
大佬,请问我gcc已经升级到9.3.0了,怎么编译aria2还是提示以下错误:
checking whether g++ supports C++11 features by default... no
checking whether g++ supports C++11 features with -std=c++11 ... no
checking whether g++ supports C++11 features with -std=c++11 -stdlib=libc++... no
checking whether g++ supports C++11 features with -std=c++0x ... no
checking whether g++ supports C++11 features with -std=c++0x -stdlib=libc++... no
configure: error: *** A compiler with support for C++11 language features is required.
这是我现在的gcc版本:
gcc (GCC) 9.3.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
麻烦大佬帮忙看下我还有哪里设置没弄好