Ubuntu 16.04 编译aria2-release-1.35.0

前言:

最近没事干,研究了下P2P下载。就瞎折腾的想着自己编译下aria2

开始!


环境相关:

我从官网github ,下载的release-1.35版本。

本人虚拟机以前安装了个16.04版本的,索性就用这个了

安装编译环境:

 

  1.  
  2. sudo apt update
  3. sudo apt dist-upgrade
  4. sudo apt-get install build-essential mingw-w64-x86-64-dev make binutils autoconf automake autotools-dev libtool pkg-config curl dpkg-dev autopoint libcppunit-dev libxml2-dev libgcrypt11-dev lzip libgnutls28-dev nettle-dev libgmp-dev libssh2-1-dev libc-ares-dev zlib1g-dev libsqlite3-dev git gcc g++ quilt gcc-mingw-w64-x86-64 wget g++-mingw-w64-x86-64 binutils-mingw-w64-x86-64
  5.  
  6. #这几个包,虽然不大,如果用上梯子,下载速度稍微快点。
  7. wget -c --no-check-certificate https://gmplib.org/download/gmp/gmp-6.1.2.tar.lz
  8. wget -c --no-check-certificate https://github.com/libexpat/libexpat/releases/download/R_2_2_5/expat-2.2.5.tar.bz2
  9. wget -c --no-check-certificate https://www.sqlite.org/2018/sqlite-autoconf-3230100.tar.gz
  10. wget -c --no-check-certificate http://zlib.net/zlib-1.2.11.tar.gz
  11. wget -c --no-check-certificate https://c-ares.haxx.se/download/c-ares-1.13.0.tar.gz
  12. wget -c --no-check-certificate https://www.libssh2.org/download/libssh2-1.8.0.tar.gz
  13.  
  14.  
  15.  
  16. 定义变量
  17. #编译位32位
  18. #export HOST=i686-w64-mingw32
  19. #编译位64位
  20. export HOST=x86_64-w64-mingw32
  21.  
  22.  
  23.  
  24. 编译这儿,我参照的文章里面,本来make是一个脚本。后来发现我以前安装的一些库,与现在的有冲突。
  25. 就索性拆分执行了。如果报错,也方便查找原因。
  26.  
  27. GMP安装
  28. tar xf gmp-6.1.2.tar.lz &&\
  29. cd gmp-6.1.2 && \
  30. ./configure \
  31. --disable-shared \
  32. --enable-static \
  33. --prefix=/usr/$HOST \
  34. --host=$HOST \
  35. --disable-cxx \
  36. --enable-fat \
  37. CFLAGS="-mtune=generic -O2 -g0"
  38.  
  39. sudo make -j$(nproc)
  40. sudo make install
  41.  
  42.  
  43. expat安装
  44. tar xf expat-2.2.5.tar.bz2 && \
  45. cd expat-2.2.5 && \
  46. ./configure \
  47. --disable-shared \
  48. --enable-static \
  49. --prefix=/usr/$HOST \
  50. --host=$HOST \
  51. --build=`dpkg-architecture -qDEB_BUILD_GNU_TYPE`
  52.  
  53. sudo make -j$(nproc)
  54. sudo make install
  55.  
  56.  
  57. sqlite安装
  58. tar xf sqlite-autoconf-3230100.tar.gz && \
  59. cd sqlite-autoconf-3230100 && \
  60. ./configure \
  61. --disable-shared \
  62. --enable-static \
  63. --prefix=/usr/$HOST \
  64. --host=$HOST \
  65. --build=`dpkg-architecture -qDEB_BUILD_GNU_TYPE`
  66.  
  67. sudo make -j$(nproc)
  68. sudo make install
  69.  
  70.  
  71. zlib安装
  72. tar xf zlib-1.2.11.tar.gz && \
  73. cd zlib-1.2.11 && \
  74. CC=$HOST-gcc \
  75. AR=$HOST-ar \
  76. LD=$HOST-ld \
  77. RANLIB=$HOST-ranlib \
  78. STRIP=$HOST-strip \
  79. ./configure \
  80. --prefix=/usr/$HOST \
  81. --libdir=/usr/$HOST/lib \
  82. --includedir=/usr/$HOST/include \
  83. --static
  84.  
  85. sudo make -j$(nproc)
  86. sudo make install
  87.  
  88.  
  89.  
  90.  
  91. c-ares安装
  92. tar xf c-ares-1.13.0.tar.gz && \
  93. cd c-ares-1.13.0 && \
  94. ./configure \
  95. --disable-shared \
  96. --enable-static \
  97. --without-random \
  98. --prefix=/usr/$HOST \
  99. --host=$HOST \
  100. --build=`dpkg-architecture -qDEB_BUILD_GNU_TYPE` \
  101. LIBS="-lws2_32"
  102.  
  103. sudo make -j$(nproc)
  104. sudo make install
  105.  
  106.  
  107.  
  108. libssh2安装
  109. tar xf libssh2-1.8.0.tar.gz && \
  110. cd libssh2-1.8.0 && \
  111. ./configure \
  112. --disable-shared \
  113. --enable-static \
  114. --prefix=/usr/$HOST \
  115. --host=$HOST \
  116. --build=`dpkg-architecture -qDEB_BUILD_GNU_TYPE` \
  117. --without-openssl \
  118. --with-wincng \
  119. LIBS="-lws2_32"
  120.  
  121. sudo make -j$(nproc)
  122. sudo make install
  123.  
  124.  
  125. ---------------------------------------
  126. 编译aria2c
  127. #定义变量
  128. export PREFIX=/usr/$HOST
  129.  
  130. 下载过程省略.因为提前下载下来研究了一番
  131.  
  132. tar xf aria2-release-1.35.0.tar && \
  133. cd aria2-release-1.35.0 && \
  134. autoreconf -fiv && \
  135. ./configure \
  136. --host=$HOST \
  137. --prefix=$PREFIX \
  138. --without-included-gettext \
  139. --disable-nls \
  140. --with-libcares \
  141. --without-gnutls \
  142. --without-openssl \
  143. --with-sqlite3 \
  144. --without-libxml2 \
  145. --with-libexpat \
  146. --with-libz \
  147. --with-libgmp \
  148. --with-libssh2 \
  149. --without-libgcrypt \
  150. --without-libnettle \
  151. --with-cppunit-prefix=$PREFIX \
  152. ARIA2_STATIC=yes \
  153. CPPFLAGS="-I$PREFIX/include" \
  154. LDFLAGS="-L$PREFIX/lib" \
  155. PKG_CONFIG_PATH="$PREFIX/lib/pkgconfig"
  156.  
  157.  
  158. make -j$(nproc)
  159. $HOST-strip src/aria2c.exe
  160. #此时,src文件夹下已生成aria2c.exe文件4.6M
  161.  
  162. 将exe 传回我win10 64 物理机,下一步测试
  163. 编译到此结束。
  164.  

 


测试:

先从其他地方找了一个配置文件config.conf 内容为

  1. ## '#'开头为注释内容, 选项都有相应的注释说明, 根据需要修改 ##
  2. ## 被注释的选项填写的是默认值, 建议在需要修改时再取消注释 ##
  3.  
  4. ## 文件保存相关 ##
  5.  
  6. # 文件的保存路径(可使用绝对路径或相对路径), 默认: 当前启动位置
  7. dir=./downloads
  8. # 启用磁盘缓存, 0为禁用缓存, 需1.16以上版本, 默认:16M
  9. #disk-cache=32M
  10. # 文件预分配方式, 能有效降低磁盘碎片, 默认:prealloc
  11. # 预分配所需时间: none < falloc ? trunc < prealloc
  12. # falloc和trunc则需要文件系统和内核支持
  13. # NTFS建议使用falloc, EXT3/4建议trunc, MAC 下需要注释此项
  14. #file-allocation=none
  15. # 断点续传
  16. continue=true
  17.  
  18. ## 下载连接相关 ##
  19. #添加tracker 让BT跑起来,这里只是象征性的添加2个。自行添加
  20. #bt-tracker=udp://tracker.opentrackr.org:1337/announce,udp://9.rarbg.to:2710/announce
  21. # 最大同时下载任务数, 运行时可修改, 默认:5
  22. #max-concurrent-downloads=5
  23. # 同一服务器连接数, 添加时可指定, 默认:1
  24. max-connection-per-server=5
  25. # 最小文件分片大小, 添加时可指定, 取值范围1M -1024M, 默认:20M
  26. # 假定size=10M, 文件为20MiB 则使用两个来源下载; 文件为15MiB 则使用一个来源下载
  27. min-split-size=10M
  28. # 单个任务最大线程数, 添加时可指定, 默认:5
  29. #split=5
  30. # 整体下载速度限制, 运行时可修改, 默认:0
  31. #max-overall-download-limit=0
  32. # 单个任务下载速度限制, 默认:0
  33. #max-download-limit=0
  34. # 整体上传速度限制, 运行时可修改, 默认:0
  35. #max-overall-upload-limit=0
  36. # 单个任务上传速度限制, 默认:0
  37. #max-upload-limit=0
  38. # 禁用IPv6, 默认:false
  39. #disable-ipv6=true
  40. # 连接超时时间, 默认:60
  41. #timeout=60
  42. # 最大重试次数, 设置为0表示不限制重试次数, 默认:5
  43. #max-tries=5
  44. # 设置重试等待的秒数, 默认:0
  45. #retry-wait=0
  46.  
  47. ## 进度保存相关 ##
  48.  
  49. # 从会话文件中读取下载任务
  50. input-file=./aria2.session
  51. # 在Aria2退出时保存`错误/未完成`的下载任务到会话文件
  52. save-session=./aria2.session
  53. # 定时保存会话, 0为退出时才保存, 需1.16.1以上版本, 默认:0
  54. #save-session-interval=60
  55.  
  56. ## RPC相关设置 ##
  57.  
  58. # 启用RPC, 默认:false
  59. enable-rpc=true
  60. # 允许所有来源, 默认:false
  61. rpc-allow-origin-all=true
  62. # 允许非外部访问, 默认:false
  63. rpc-listen-all=true
  64. # 事件轮询方式, 取值:[epoll, kqueue, port, poll, select], 不同系统默认值不同
  65. event-poll=select
  66. # RPC监听端口, 端口被占用时可以修改, 默认:6800
  67. #rpc-listen-port=6881
  68. # 设置的RPC授权令牌, v1.18.4新增功能, 取代 --rpc-user 和 --rpc-passwd 选项
  69. #rpc-secret=appinn
  70. # 设置的RPC访问用户名, 此选项新版已废弃, 建议改用 --rpc-secret 选项
  71. #rpc-user=<USER>
  72. # 设置的RPC访问密码, 此选项新版已废弃, 建议改用 --rpc-secret 选项
  73. #rpc-passwd=<PASSWD>
  74. # 是否启用 RPC 服务的 SSL/TLS 加密,
  75. # 启用加密后 RPC 服务需要使用 https 或者 wss 协议连接
  76. #rpc-secure=true
  77. # 在 RPC 服务中启用 SSL/TLS 加密时的证书文件,
  78. # 使用 PEM 格式时,您必须通过 --rpc-private-key 指定私钥
  79. #rpc-certificate=/path/to/certificate.pem
  80. # 在 RPC 服务中启用 SSL/TLS 加密时的私钥文件
  81. #rpc-private-key=/path/to/certificate.key
  82.  
  83. ## BT/PT下载相关 ##
  84.  
  85. # 当下载的是一个种子(以.torrent结尾)时, 自动开始BT任务, 默认:true
  86. #follow-torrent=true
  87. # BT监听端口, 当端口被屏蔽时使用, 默认:6881-6999
  88. listen-port=6889
  89. # 单个种子最大连接数, 默认:55
  90. #bt-max-peers=55
  91. # 打开DHT功能, PT需要禁用, 默认:true
  92. enable-dht=true
  93. # 打开IPv6 DHT功能, PT需要禁用
  94. #enable-dht6=false
  95. # DHT网络监听端口, 默认:6881-6999
  96. #dht-listen-port=6882-6999
  97. # 本地节点查找, PT需要禁用, 默认:false
  98. #bt-enable-lpd=false
  99. # 种子交换, PT需要禁用, 默认:true
  100. enable-peer-exchange=false
  101. # 每个种子限速, 对少种的PT很有用, 默认:50K
  102. #bt-request-peer-speed-limit=50K
  103. # 客户端伪装, PT需要
  104. peer-id-prefix=-TR2770-
  105. user-agent=Transmission/2.77
  106. # 当种子的分享率达到这个数时, 自动停止做种, 0为一直做种, 默认:1.0
  107. seed-ratio=0
  108. # 强制保存会话, 即使任务已经完成, 默认:false
  109. # 较新的版本开启后会在任务完成后依然保留.aria2文件
  110. #force-save=false
  111. # BT校验相关, 默认:true
  112. #bt-hash-check-seed=true
  113. # 继续之前的BT任务时, 无需再次校验, 默认:false
  114. bt-seed-unverified=true
  115. # 保存磁力链接元数据为种子文件(.torrent文件), 默认:false
  116. bt-save-metadata=true
  117.  
  118. daemon=true

放入本机的aria2文件夹下,

可以生成一个批处理内容位:aria2c.exe --conf-path=config.conf

双击执行。OK

再找了个web管理页面,web通过prc连接aria2 添加了个磁力链接。

通过添加的一堆bt-tracker 服务器,磁力瞬间获取到了种子文件,并开始下载。

跑起来的速度还行,下一步就根据自己需要。稍稍说下修改了。

文档中所用到的资源及源码,我也打包了。可以从这儿下载

 

此文章作为记录,免得以后忘了。

Ubuntu 16.04 编译aria2-release-1.35.0_xysds的博客-CSDN博客

 

OLTP和OLAP的区别

 

 

定义

OLTP(on-line transaction processing)为联机事务处理。

OLAP(On-Line Analytical Processing)为联机分析处理。

两者简单的区别为OLTP是做事务处理,OLAP是做分析处理。

站在数据库的操作层面来看,OLTP主要是对数据的增删改,侧重实时性,OLAP是对数据的查询,侧重大数据量查询。

场景和应用的区别

OLTP主要用来记录具体某类业务事件的发生,如交易行为,当行为产生后,数据库会记录这个事件是谁在什么时候什么地方做了什么事,这样的一行(或多行)数据会以(增删改)的方式在数据库中进行数据的更新处理操作,要求实时性高、稳定性强、确保数据及时更新成功,常见的业务系统如商场系统,ERP,客服系统,OA等系统都是基于OLTP开发的系统。

当业务发展到一定程度,积累了一些数据的时候,对过去发生的事情做一个总结分析的需求就会产生,这类需求往往需要把过去一段时间内产生的数据拿出来进行统计分析,从中获取我们想要的信息,为公司做决策提供支持,我们管这类场景就叫做OLAP。

集中度不同

OLTP数据往往是一个业务系统一个数据库,因此会分散在不同的业务系统中。

OLAP数据仓库往往是夸多业务的,因此需要将不同的业务数据集中到一起进行统一综合的分析,这时候就需要根据业务分析需求做对应的数据清洗后存储在数据仓库中,然后由数据仓库来统一提供OLAP分析。所以我们常说OLTP是数据库的应用,OLAP是数据仓库的应用,两者主要的区别如下图。

 

总的来说,可以认为OLAP的产生是因为一些特性OLTP无法满足,所以一些OLTP异变了一些特性,变成了OLAP,OLAP可以看做是OLTP的一种延展,一个让OLTP产生的数据发现价值的过程。

posted @ 2022-07-15 19:16  CharyGao  阅读(196)  评论(0编辑  收藏  举报