mirror of
https://github.com/hydralauncher/hydra.git
synced 2025-02-03 08:43:48 +03:00
905 lines
37 KiB
HTML
905 lines
37 KiB
HTML
<?xml version="1.0" encoding="utf-8" ?>
|
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
<meta name="generator" content="Docutils 0.19: https://docutils.sourceforge.io/" />
|
|
<title>aria2 - The ultra fast download utility</title>
|
|
<style type="text/css">
|
|
|
|
/*
|
|
:Author: David Goodger (goodger@python.org)
|
|
:Id: $Id: html4css1.css 8954 2022-01-20 10:10:25Z milde $
|
|
:Copyright: This stylesheet has been placed in the public domain.
|
|
|
|
Default cascading style sheet for the HTML output of Docutils.
|
|
|
|
See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to
|
|
customize this style sheet.
|
|
*/
|
|
|
|
/* used to remove borders from tables and images */
|
|
.borderless, table.borderless td, table.borderless th {
|
|
border: 0 }
|
|
|
|
table.borderless td, table.borderless th {
|
|
/* Override padding for "table.docutils td" with "! important".
|
|
The right padding separates the table cells. */
|
|
padding: 0 0.5em 0 0 ! important }
|
|
|
|
.first {
|
|
/* Override more specific margin styles with "! important". */
|
|
margin-top: 0 ! important }
|
|
|
|
.last, .with-subtitle {
|
|
margin-bottom: 0 ! important }
|
|
|
|
.hidden {
|
|
display: none }
|
|
|
|
.subscript {
|
|
vertical-align: sub;
|
|
font-size: smaller }
|
|
|
|
.superscript {
|
|
vertical-align: super;
|
|
font-size: smaller }
|
|
|
|
a.toc-backref {
|
|
text-decoration: none ;
|
|
color: black }
|
|
|
|
blockquote.epigraph {
|
|
margin: 2em 5em ; }
|
|
|
|
dl.docutils dd {
|
|
margin-bottom: 0.5em }
|
|
|
|
object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
|
|
overflow: hidden;
|
|
}
|
|
|
|
/* Uncomment (and remove this text!) to get bold-faced definition list terms
|
|
dl.docutils dt {
|
|
font-weight: bold }
|
|
*/
|
|
|
|
div.abstract {
|
|
margin: 2em 5em }
|
|
|
|
div.abstract p.topic-title {
|
|
font-weight: bold ;
|
|
text-align: center }
|
|
|
|
div.admonition, div.attention, div.caution, div.danger, div.error,
|
|
div.hint, div.important, div.note, div.tip, div.warning {
|
|
margin: 2em ;
|
|
border: medium outset ;
|
|
padding: 1em }
|
|
|
|
div.admonition p.admonition-title, div.hint p.admonition-title,
|
|
div.important p.admonition-title, div.note p.admonition-title,
|
|
div.tip p.admonition-title {
|
|
font-weight: bold ;
|
|
font-family: sans-serif }
|
|
|
|
div.attention p.admonition-title, div.caution p.admonition-title,
|
|
div.danger p.admonition-title, div.error p.admonition-title,
|
|
div.warning p.admonition-title, .code .error {
|
|
color: red ;
|
|
font-weight: bold ;
|
|
font-family: sans-serif }
|
|
|
|
/* Uncomment (and remove this text!) to get reduced vertical space in
|
|
compound paragraphs.
|
|
div.compound .compound-first, div.compound .compound-middle {
|
|
margin-bottom: 0.5em }
|
|
|
|
div.compound .compound-last, div.compound .compound-middle {
|
|
margin-top: 0.5em }
|
|
*/
|
|
|
|
div.dedication {
|
|
margin: 2em 5em ;
|
|
text-align: center ;
|
|
font-style: italic }
|
|
|
|
div.dedication p.topic-title {
|
|
font-weight: bold ;
|
|
font-style: normal }
|
|
|
|
div.figure {
|
|
margin-left: 2em ;
|
|
margin-right: 2em }
|
|
|
|
div.footer, div.header {
|
|
clear: both;
|
|
font-size: smaller }
|
|
|
|
div.line-block {
|
|
display: block ;
|
|
margin-top: 1em ;
|
|
margin-bottom: 1em }
|
|
|
|
div.line-block div.line-block {
|
|
margin-top: 0 ;
|
|
margin-bottom: 0 ;
|
|
margin-left: 1.5em }
|
|
|
|
div.sidebar {
|
|
margin: 0 0 0.5em 1em ;
|
|
border: medium outset ;
|
|
padding: 1em ;
|
|
background-color: #ffffee ;
|
|
width: 40% ;
|
|
float: right ;
|
|
clear: right }
|
|
|
|
div.sidebar p.rubric {
|
|
font-family: sans-serif ;
|
|
font-size: medium }
|
|
|
|
div.system-messages {
|
|
margin: 5em }
|
|
|
|
div.system-messages h1 {
|
|
color: red }
|
|
|
|
div.system-message {
|
|
border: medium outset ;
|
|
padding: 1em }
|
|
|
|
div.system-message p.system-message-title {
|
|
color: red ;
|
|
font-weight: bold }
|
|
|
|
div.topic {
|
|
margin: 2em }
|
|
|
|
h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
|
|
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
|
|
margin-top: 0.4em }
|
|
|
|
h1.title {
|
|
text-align: center }
|
|
|
|
h2.subtitle {
|
|
text-align: center }
|
|
|
|
hr.docutils {
|
|
width: 75% }
|
|
|
|
img.align-left, .figure.align-left, object.align-left, table.align-left {
|
|
clear: left ;
|
|
float: left ;
|
|
margin-right: 1em }
|
|
|
|
img.align-right, .figure.align-right, object.align-right, table.align-right {
|
|
clear: right ;
|
|
float: right ;
|
|
margin-left: 1em }
|
|
|
|
img.align-center, .figure.align-center, object.align-center {
|
|
display: block;
|
|
margin-left: auto;
|
|
margin-right: auto;
|
|
}
|
|
|
|
table.align-center {
|
|
margin-left: auto;
|
|
margin-right: auto;
|
|
}
|
|
|
|
.align-left {
|
|
text-align: left }
|
|
|
|
.align-center {
|
|
clear: both ;
|
|
text-align: center }
|
|
|
|
.align-right {
|
|
text-align: right }
|
|
|
|
/* reset inner alignment in figures */
|
|
div.align-right {
|
|
text-align: inherit }
|
|
|
|
/* div.align-center * { */
|
|
/* text-align: left } */
|
|
|
|
.align-top {
|
|
vertical-align: top }
|
|
|
|
.align-middle {
|
|
vertical-align: middle }
|
|
|
|
.align-bottom {
|
|
vertical-align: bottom }
|
|
|
|
ol.simple, ul.simple {
|
|
margin-bottom: 1em }
|
|
|
|
ol.arabic {
|
|
list-style: decimal }
|
|
|
|
ol.loweralpha {
|
|
list-style: lower-alpha }
|
|
|
|
ol.upperalpha {
|
|
list-style: upper-alpha }
|
|
|
|
ol.lowerroman {
|
|
list-style: lower-roman }
|
|
|
|
ol.upperroman {
|
|
list-style: upper-roman }
|
|
|
|
p.attribution {
|
|
text-align: right ;
|
|
margin-left: 50% }
|
|
|
|
p.caption {
|
|
font-style: italic }
|
|
|
|
p.credits {
|
|
font-style: italic ;
|
|
font-size: smaller }
|
|
|
|
p.label {
|
|
white-space: nowrap }
|
|
|
|
p.rubric {
|
|
font-weight: bold ;
|
|
font-size: larger ;
|
|
color: maroon ;
|
|
text-align: center }
|
|
|
|
p.sidebar-title {
|
|
font-family: sans-serif ;
|
|
font-weight: bold ;
|
|
font-size: larger }
|
|
|
|
p.sidebar-subtitle {
|
|
font-family: sans-serif ;
|
|
font-weight: bold }
|
|
|
|
p.topic-title {
|
|
font-weight: bold }
|
|
|
|
pre.address {
|
|
margin-bottom: 0 ;
|
|
margin-top: 0 ;
|
|
font: inherit }
|
|
|
|
pre.literal-block, pre.doctest-block, pre.math, pre.code {
|
|
margin-left: 2em ;
|
|
margin-right: 2em }
|
|
|
|
pre.code .ln { color: grey; } /* line numbers */
|
|
pre.code, code { background-color: #eeeeee }
|
|
pre.code .comment, code .comment { color: #5C6576 }
|
|
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
|
|
pre.code .literal.string, code .literal.string { color: #0C5404 }
|
|
pre.code .name.builtin, code .name.builtin { color: #352B84 }
|
|
pre.code .deleted, code .deleted { background-color: #DEB0A1}
|
|
pre.code .inserted, code .inserted { background-color: #A3D289}
|
|
|
|
span.classifier {
|
|
font-family: sans-serif ;
|
|
font-style: oblique }
|
|
|
|
span.classifier-delimiter {
|
|
font-family: sans-serif ;
|
|
font-weight: bold }
|
|
|
|
span.interpreted {
|
|
font-family: sans-serif }
|
|
|
|
span.option {
|
|
white-space: nowrap }
|
|
|
|
span.pre {
|
|
white-space: pre }
|
|
|
|
span.problematic {
|
|
color: red }
|
|
|
|
span.section-subtitle {
|
|
/* font-size relative to parent (h1..h6 element) */
|
|
font-size: 80% }
|
|
|
|
table.citation {
|
|
border-left: solid 1px gray;
|
|
margin-left: 1px }
|
|
|
|
table.docinfo {
|
|
margin: 2em 4em }
|
|
|
|
table.docutils {
|
|
margin-top: 0.5em ;
|
|
margin-bottom: 0.5em }
|
|
|
|
table.footnote {
|
|
border-left: solid 1px black;
|
|
margin-left: 1px }
|
|
|
|
table.docutils td, table.docutils th,
|
|
table.docinfo td, table.docinfo th {
|
|
padding-left: 0.5em ;
|
|
padding-right: 0.5em ;
|
|
vertical-align: top }
|
|
|
|
table.docutils th.field-name, table.docinfo th.docinfo-name {
|
|
font-weight: bold ;
|
|
text-align: left ;
|
|
white-space: nowrap ;
|
|
padding-left: 0 }
|
|
|
|
/* "booktabs" style (no vertical lines) */
|
|
table.docutils.booktabs {
|
|
border: 0px;
|
|
border-top: 2px solid;
|
|
border-bottom: 2px solid;
|
|
border-collapse: collapse;
|
|
}
|
|
table.docutils.booktabs * {
|
|
border: 0px;
|
|
}
|
|
table.docutils.booktabs th {
|
|
border-bottom: thin solid;
|
|
text-align: left;
|
|
}
|
|
|
|
h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
|
|
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
|
|
font-size: 100% }
|
|
|
|
ul.auto-toc {
|
|
list-style-type: none }
|
|
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<div class="document" id="aria2-the-ultra-fast-download-utility">
|
|
<h1 class="title">aria2 - The ultra fast download utility</h1>
|
|
|
|
<div class="section" id="disclaimer">
|
|
<h1>Disclaimer</h1>
|
|
<p>This program comes with no warranty.
|
|
You must use this program at your own risk.</p>
|
|
</div>
|
|
<div class="section" id="introduction">
|
|
<h1>Introduction</h1>
|
|
<p>aria2 is a utility for downloading files. The supported protocols are
|
|
HTTP(S), FTP, SFTP, BitTorrent, and Metalink. aria2 can download a
|
|
file from multiple sources/protocols and tries to utilize your maximum
|
|
download bandwidth. It supports downloading a file from
|
|
HTTP(S)/FTP/SFTP and BitTorrent at the same time, while the data
|
|
downloaded from HTTP(S)/FTP/SFTP is uploaded to the BitTorrent
|
|
swarm. Using Metalink's chunk checksums, aria2 automatically validates
|
|
chunks of data while downloading a file like BitTorrent.</p>
|
|
<p>The project page is located at <a class="reference external" href="https://aria2.github.io/">https://aria2.github.io/</a>.</p>
|
|
<p>See the <a class="reference external" href="https://aria2.github.io/manual/en/html/">aria2 Online Manual</a> (<a class="reference external" href="https://aria2.github.io/manual/ru/html/">Russian translation</a>, <a class="reference external" href="https://aria2.github.io/manual/pt/html/">Portuguese
|
|
translation</a>) to learn
|
|
how to use aria2.</p>
|
|
</div>
|
|
<div class="section" id="features">
|
|
<h1>Features</h1>
|
|
<p>Here is a list of features:</p>
|
|
<ul class="simple">
|
|
<li>Command-line interface</li>
|
|
<li>Download files through HTTP(S)/FTP/SFTP/BitTorrent</li>
|
|
<li>Segmented downloading</li>
|
|
<li>Metalink version 4 (RFC 5854) support(HTTP/FTP/SFTP/BitTorrent)</li>
|
|
<li>Metalink version 3.0 support(HTTP/FTP/SFTP/BitTorrent)</li>
|
|
<li>Metalink/HTTP (RFC 6249) support</li>
|
|
<li>HTTP/1.1 implementation</li>
|
|
<li>HTTP Proxy support</li>
|
|
<li>HTTP BASIC authentication support</li>
|
|
<li>HTTP Proxy authentication support</li>
|
|
<li>Well-known environment variables for proxy: <tt class="docutils literal">http_proxy</tt>,
|
|
<tt class="docutils literal">https_proxy</tt>, <tt class="docutils literal">ftp_proxy</tt>, <tt class="docutils literal">all_proxy</tt> and <tt class="docutils literal">no_proxy</tt></li>
|
|
<li>HTTP gzip, deflate content encoding support</li>
|
|
<li>Verify peer using given trusted CA certificate in HTTPS</li>
|
|
<li>Client certificate authentication in HTTPS</li>
|
|
<li>Chunked transfer encoding support</li>
|
|
<li>Load Cookies from the file using the Firefox3 format, Chromium/Google Chrome
|
|
and the Mozilla/Firefox
|
|
(1.x/2.x)/Netscape format.</li>
|
|
<li>Save Cookies in the Mozilla/Firefox (1.x/2.x)/Netscape format.</li>
|
|
<li>Custom HTTP Header support</li>
|
|
<li>Persistent Connections support</li>
|
|
<li>FTP/SFTP through HTTP Proxy</li>
|
|
<li>Download/Upload speed throttling</li>
|
|
<li>BitTorrent extensions: Fast extension, DHT, PEX, MSE/PSE,
|
|
Multi-Tracker, UDP tracker</li>
|
|
<li>BitTorrent <a class="reference external" href="http://getright.com/seedtorrent.html">WEB-Seeding</a>.
|
|
aria2 requests chunk more than piece size to reduce the request
|
|
overhead. It also supports pipelined requests with piece size.</li>
|
|
<li>BitTorrent Local Peer Discovery</li>
|
|
<li>Rename/change the directory structure of BitTorrent downloads
|
|
completely</li>
|
|
<li>JSON-RPC (over HTTP and WebSocket)/XML-RPC interface</li>
|
|
<li>Run as a daemon process</li>
|
|
<li>Selective download in multi-file torrent/Metalink</li>
|
|
<li>Chunk checksum validation in Metalink</li>
|
|
<li>Can disable segmented downloading in Metalink</li>
|
|
<li>Netrc support</li>
|
|
<li>Configuration file support</li>
|
|
<li>Download URIs found in a text file or stdin and the destination
|
|
directory and output file name can be specified optionally</li>
|
|
<li>Parameterized URI support</li>
|
|
<li>IPv6 support with Happy Eyeballs</li>
|
|
<li>Disk cache to reduce disk activity</li>
|
|
</ul>
|
|
</div>
|
|
<div class="section" id="versioning-and-release-schedule">
|
|
<h1>Versioning and release schedule</h1>
|
|
<p>We use 3 numbers for the aria2 version: MAJOR.MINOR.PATCH. We will ship
|
|
MINOR updates on the 15th of every month. We may skip a release if we have
|
|
had no changes since the last release. The feature and documentation
|
|
freeze happens 10 days before the release day (the 5th day of the month)
|
|
for translation teams. We will raise an issue about the upcoming
|
|
release around that day.</p>
|
|
<p>We may release PATCH releases between regular releases if we have
|
|
security issues.</p>
|
|
<p>The MAJOR version will stay at 1 for the time being.</p>
|
|
</div>
|
|
<div class="section" id="how-to-get-source-code">
|
|
<h1>How to get source code</h1>
|
|
<p>We maintain the source code at Github:
|
|
<a class="reference external" href="https://github.com/aria2/aria2">https://github.com/aria2/aria2</a></p>
|
|
<p>To get the latest source code, run the following command:</p>
|
|
<pre class="literal-block">
|
|
$ git clone https://github.com/aria2/aria2.git
|
|
</pre>
|
|
<p>This will create an aria2 directory in your current directory and source
|
|
files are stored there.</p>
|
|
</div>
|
|
<div class="section" id="dependency">
|
|
<h1>Dependency</h1>
|
|
<table border="1" class="docutils">
|
|
<colgroup>
|
|
<col width="35%" />
|
|
<col width="65%" />
|
|
</colgroup>
|
|
<thead valign="bottom">
|
|
<tr><th class="head">features</th>
|
|
<th class="head">dependency</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody valign="top">
|
|
<tr><td>HTTPS</td>
|
|
<td>OSX or GnuTLS or OpenSSL or Windows</td>
|
|
</tr>
|
|
<tr><td>SFTP</td>
|
|
<td>libssh2</td>
|
|
</tr>
|
|
<tr><td>BitTorrent</td>
|
|
<td>None. Optional: libnettle+libgmp or libgcrypt
|
|
or OpenSSL (see note)</td>
|
|
</tr>
|
|
<tr><td>Metalink</td>
|
|
<td>libxml2 or Expat.</td>
|
|
</tr>
|
|
<tr><td>Checksum</td>
|
|
<td>None. Optional: OSX or libnettle or libgcrypt
|
|
or OpenSSL or Windows (see note)</td>
|
|
</tr>
|
|
<tr><td>gzip, deflate in HTTP</td>
|
|
<td>zlib</td>
|
|
</tr>
|
|
<tr><td>Async DNS</td>
|
|
<td>C-Ares</td>
|
|
</tr>
|
|
<tr><td>Firefox3/Chromium cookie</td>
|
|
<td>libsqlite3</td>
|
|
</tr>
|
|
<tr><td>XML-RPC</td>
|
|
<td>libxml2 or Expat.</td>
|
|
</tr>
|
|
<tr><td>JSON-RPC over WebSocket</td>
|
|
<td>libnettle or libgcrypt or OpenSSL</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<div class="admonition note">
|
|
<p class="first admonition-title">Note</p>
|
|
<p class="last">libxml2 has precedence over Expat if both libraries are installed.
|
|
If you prefer Expat, run configure with <tt class="docutils literal"><span class="pre">--without-libxml2</span></tt>.</p>
|
|
</div>
|
|
<div class="admonition note">
|
|
<p class="first admonition-title">Note</p>
|
|
<p>On Apple OSX, OS-level SSL/TLS support will be preferred. Hence
|
|
neither GnuTLS nor OpenSSL is required on that platform. If you'd
|
|
like to disable this behavior, run configure with
|
|
<tt class="docutils literal"><span class="pre">--without-appletls</span></tt>.</p>
|
|
<p>GnuTLS has precedence over OpenSSL if both libraries are installed.
|
|
If you prefer OpenSSL, run configure with <tt class="docutils literal"><span class="pre">--without-gnutls</span></tt>
|
|
<tt class="docutils literal"><span class="pre">--with-openssl</span></tt>.</p>
|
|
<p class="last">On Windows, there is SSL implementation available that is based on
|
|
the native Windows SSL capabilities (Schannel) and it will be
|
|
preferred. Hence neither GnuTLS nor OpenSSL is required on that
|
|
platform. If you'd like to disable this behavior, run configure
|
|
with <tt class="docutils literal"><span class="pre">--without-wintls</span></tt>.</p>
|
|
</div>
|
|
<div class="admonition note">
|
|
<p class="first admonition-title">Note</p>
|
|
<p>On Apple OSX, the OS-level checksum support will be preferred,
|
|
unless aria2 is configured with <tt class="docutils literal"><span class="pre">--without-appletls</span></tt>.</p>
|
|
<p>libnettle has precedence over libgcrypt if both libraries are
|
|
installed. If you prefer libgcrypt, run configure with
|
|
<tt class="docutils literal"><span class="pre">--without-libnettle</span> <span class="pre">--with-libgcrypt</span></tt>. If OpenSSL is selected over
|
|
GnuTLS, neither libnettle nor libgcrypt will be used.</p>
|
|
<p>If none of the optional dependencies are installed, an internal
|
|
implementation that only supports md5 and sha1 will be used.</p>
|
|
<p class="last">On Windows, there is SSL implementation available that is based on
|
|
the native Windows capabilities and it will be preferred, unless
|
|
aria2 is configured with <tt class="docutils literal"><span class="pre">--without-wintls</span></tt>.</p>
|
|
</div>
|
|
<p>A user can have one of the following configurations for SSL and crypto
|
|
libraries:</p>
|
|
<ul class="simple">
|
|
<li>OpenSSL</li>
|
|
<li>GnuTLS + libgcrypt</li>
|
|
<li>GnuTLS + libnettle</li>
|
|
<li>Apple TLS (OSX only)</li>
|
|
<li>Windows TLS (Windows only)</li>
|
|
</ul>
|
|
<p>You can disable BitTorrent and Metalink support by providing
|
|
<tt class="docutils literal"><span class="pre">--disable-bittorrent</span></tt> and <tt class="docutils literal"><span class="pre">--disable-metalink</span></tt> to the configure
|
|
script respectively.</p>
|
|
<p>To enable async DNS support, you need c-ares.</p>
|
|
<ul class="simple">
|
|
<li>c-ares: <a class="reference external" href="http://c-ares.haxx.se/">http://c-ares.haxx.se/</a></li>
|
|
</ul>
|
|
</div>
|
|
<div class="section" id="how-to-build">
|
|
<h1>How to build</h1>
|
|
<p>aria2 is primarily written in C++. Initially, it was written based on
|
|
C++98/C++03 standard features. We are now migrating aria2 to the C++11
|
|
standard. The current source code requires a C++11 aware compiler. For
|
|
well-known compilers, such as g++ and clang, the <tt class="docutils literal"><span class="pre">-std=c++11</span></tt> or
|
|
<tt class="docutils literal"><span class="pre">-std=c++0x</span></tt> flag must be supported.</p>
|
|
<p>To build aria2 from the source package, you need the following
|
|
development packages (package name may vary depending on the
|
|
distribution you use):</p>
|
|
<ul class="simple">
|
|
<li>libgnutls-dev (Required for HTTPS, BitTorrent, Checksum support)</li>
|
|
<li>nettle-dev (Required for BitTorrent, Checksum support)</li>
|
|
<li>libgmp-dev (Required for BitTorrent)</li>
|
|
<li>libssh2-1-dev (Required for SFTP support)</li>
|
|
<li>libc-ares-dev (Required for async DNS support)</li>
|
|
<li>libxml2-dev (Required for Metalink support)</li>
|
|
<li>zlib1g-dev (Required for gzip, deflate decoding support in HTTP)</li>
|
|
<li>libsqlite3-dev (Required for Firefox3/Chromium cookie support)</li>
|
|
<li>pkg-config (Required to detect installed libraries)</li>
|
|
</ul>
|
|
<p>You can use libgcrypt-dev instead of nettle-dev and libgmp-dev:</p>
|
|
<ul class="simple">
|
|
<li>libgpg-error-dev (Required for BitTorrent, Checksum support)</li>
|
|
<li>libgcrypt-dev (Required for BitTorrent, Checksum support)</li>
|
|
</ul>
|
|
<p>You can use libssl-dev instead of
|
|
libgnutls-dev, nettle-dev, libgmp-dev, libgpg-error-dev and libgcrypt-dev:</p>
|
|
<ul class="simple">
|
|
<li>libssl-dev (Required for HTTPS, BitTorrent, Checksum support)</li>
|
|
</ul>
|
|
<p>You can use libexpat1-dev instead of libxml2-dev:</p>
|
|
<ul class="simple">
|
|
<li>libexpat1-dev (Required for Metalink support)</li>
|
|
</ul>
|
|
<p>On Fedora you need the following packages: gcc, gcc-c++, kernel-devel,
|
|
libgcrypt-devel, libxml2-devel, openssl-devel, gettext-devel, cppunit</p>
|
|
<p>If you downloaded source code from a git repository, you have to install
|
|
the following packages to get autoconf macros:</p>
|
|
<ul class="simple">
|
|
<li>libxml2-dev</li>
|
|
<li>libcppunit-dev</li>
|
|
<li>autoconf</li>
|
|
<li>automake</li>
|
|
<li>autotools-dev</li>
|
|
<li>autopoint</li>
|
|
<li>libtool</li>
|
|
</ul>
|
|
<p>And run the following command to generate configure script and other files
|
|
necessary to build the program:</p>
|
|
<pre class="literal-block">
|
|
$ autoreconf -i
|
|
</pre>
|
|
<p>Also, you need <a class="reference external" href="http://sphinx-doc.org/">Sphinx</a> to build the man page.</p>
|
|
<p>If you are building aria2 for Mac OS X, take a look at
|
|
the makerelease-osx.mk GNU Make makefile.</p>
|
|
<p>The quickest way to build aria2 is first to run configure script:</p>
|
|
<pre class="literal-block">
|
|
$ ./configure
|
|
</pre>
|
|
<p>To build statically linked aria2, use <tt class="docutils literal">ARIA2_STATIC=yes</tt>
|
|
command-line option:</p>
|
|
<pre class="literal-block">
|
|
$ ./configure ARIA2_STATIC=yes
|
|
</pre>
|
|
<p>After configuration is done, run <tt class="docutils literal">make</tt> to compile the program:</p>
|
|
<pre class="literal-block">
|
|
$ make
|
|
</pre>
|
|
<p>See <a class="reference internal" href="#cross-compiling-windows-binary">Cross-compiling Windows binary</a> to create a Windows binary.
|
|
See <a class="reference internal" href="#cross-compiling-android-binary">Cross-compiling Android binary</a> to create an Android binary.</p>
|
|
<p>The configure script checks available libraries and enables as many
|
|
features as possible except for experimental features not enabled by
|
|
default.</p>
|
|
<p>Since 1.1.0, aria2 checks the certificate of HTTPS servers by default.
|
|
If you build with OpenSSL or the recent version of GnuTLS which has
|
|
<tt class="docutils literal">gnutls_certificate_set_x509_system_trust()</tt> function and the
|
|
library is properly configured to locate the system-wide CA
|
|
certificates store, aria2 will automatically load those certificates
|
|
at the startup. If it is not the case, I recommend supplying the path
|
|
to the CA bundle file. For example, in Debian the path to CA bundle
|
|
file is '/etc/ssl/certs/ca-certificates.crt' (in ca-certificates
|
|
package). This may vary depending on your distribution. You can give
|
|
it to configure script using <tt class="docutils literal"><span class="pre">--with-ca-bundle</span> option</tt>:</p>
|
|
<pre class="literal-block">
|
|
$ ./configure --with-ca-bundle='/etc/ssl/certs/ca-certificates.crt'
|
|
$ make
|
|
</pre>
|
|
<p>Without <tt class="docutils literal"><span class="pre">--with-ca-bundle</span></tt> option, you will encounter the error when
|
|
accessing HTTPS servers because the certificate cannot be verified
|
|
without the CA bundle. In such a case, you can specify the CA bundle file
|
|
using aria2's <tt class="docutils literal"><span class="pre">--ca-certificate</span></tt> option. If you don't have the CA bundle
|
|
file installed, then the last resort is to disable the certificate
|
|
validation using <tt class="docutils literal"><span class="pre">--check-certificate=false</span></tt>.</p>
|
|
<p>Using the native OSX (AppleTLS) and/or Windows (WinTLS) implementation
|
|
will automatically use the system certificate store, so
|
|
<tt class="docutils literal"><span class="pre">--with-ca-bundle</span></tt> is not necessary and will be ignored when using
|
|
these implementations.</p>
|
|
<p>By default, the bash_completion file named <tt class="docutils literal">aria2c</tt> is installed to
|
|
the directory <tt class="docutils literal">$prefix/share/doc/aria2/bash_completion</tt>. To change
|
|
the install directory of the file, use <tt class="docutils literal"><span class="pre">--with-bashcompletiondir</span></tt>
|
|
option.</p>
|
|
<p>After a <tt class="docutils literal">make</tt>, the executable is located at <tt class="docutils literal">src/aria2c</tt>.</p>
|
|
<p>aria2 uses CppUnit for automated unit testing. To run the unit test:</p>
|
|
<pre class="literal-block">
|
|
$ make check
|
|
</pre>
|
|
</div>
|
|
<div class="section" id="cross-compiling-windows-binary">
|
|
<h1>Cross-compiling Windows binary</h1>
|
|
<p>In this section, we describe how to build a Windows binary using a
|
|
mingw-w64 (<a class="reference external" href="http://mingw-w64.org/doku.php">http://mingw-w64.org/doku.php</a>) cross-compiler on Debian
|
|
Linux. The MinGW (<a class="reference external" href="http://www.mingw.org/">http://www.mingw.org/</a>) may not be able to build
|
|
aria2.</p>
|
|
<p>The easiest way to build Windows binary is using Dockerfile.mingw. See
|
|
Dockerfile.mingw how to build a binary. If you cannot use Dockerfile,
|
|
then continue to read the following paragraphs.</p>
|
|
<p>Basically, after compiling and installing depended libraries, you can
|
|
do cross-compile just passing appropriate <tt class="docutils literal"><span class="pre">--host</span></tt> option and
|
|
specifying <tt class="docutils literal">CPPFLAGS</tt>, <tt class="docutils literal">LDFLAGS</tt>, and <tt class="docutils literal">PKG_CONFIG_LIBDIR</tt>
|
|
variables to configure. For convenience and to lower our own
|
|
development cost, we provide an easier way to configure the build
|
|
settings.</p>
|
|
<p><tt class="docutils literal"><span class="pre">mingw-config</span></tt> script is a configure script wrapper for mingw-w64.
|
|
We use it to create official Windows build. This script assumes
|
|
the following libraries have been built for cross-compile:</p>
|
|
<ul class="simple">
|
|
<li>c-ares</li>
|
|
<li>expat</li>
|
|
<li>sqlite3</li>
|
|
<li>zlib</li>
|
|
<li>libssh2</li>
|
|
<li>cppunit</li>
|
|
</ul>
|
|
<p>Some environment variables can be adjusted to change build settings:</p>
|
|
<dl class="docutils">
|
|
<dt><tt class="docutils literal">HOST</tt></dt>
|
|
<dd>cross-compile to build programs to run on <tt class="docutils literal">HOST</tt>. It defaults to
|
|
<tt class="docutils literal"><span class="pre">i686-w64-mingw32</span></tt>. To build a 64bit binary, specify
|
|
<tt class="docutils literal"><span class="pre">x86_64-w64-mingw32</span></tt>.</dd>
|
|
<dt><tt class="docutils literal">PREFIX</tt></dt>
|
|
<dd>Prefix to the directory where dependent libraries are installed. It
|
|
defaults to <tt class="docutils literal"><span class="pre">/usr/local/$HOST</span></tt>. <tt class="docutils literal"><span class="pre">-I$PREFIX/include</span></tt> will be
|
|
added to <tt class="docutils literal">CPPFLAGS</tt>. <tt class="docutils literal"><span class="pre">-L$PREFIX/lib</span></tt> will be added to
|
|
<tt class="docutils literal">LDFLAGS</tt>. <tt class="docutils literal">$PREFIX/lib/pkgconfig</tt> will be set to
|
|
<tt class="docutils literal">PKG_CONFIG_LIBDIR</tt>.</dd>
|
|
</dl>
|
|
<p>For example, to build a 64bit binary do this:</p>
|
|
<pre class="literal-block">
|
|
$ HOST=x86_64-w64-mingw32 ./mingw-config
|
|
</pre>
|
|
<p>If you want libaria2 dll with <tt class="docutils literal"><span class="pre">--enable-libaria2</span></tt>, then don't use
|
|
<tt class="docutils literal">ARIA2_STATIC=yes</tt> and prepare the DLL version of external
|
|
libraries.</p>
|
|
</div>
|
|
<div class="section" id="cross-compiling-android-binary">
|
|
<h1>Cross-compiling Android binary</h1>
|
|
<p>In this section, we describe how to build Android binary using Android
|
|
NDK cross-compiler on Debian Linux.</p>
|
|
<p>At the time of this writing, Android NDK r21e should compile aria2
|
|
without errors.</p>
|
|
<p><tt class="docutils literal"><span class="pre">android-config</span></tt> script is a configure script wrapper for Android
|
|
build. We use it to create an official Android build. This script
|
|
assumes the following libraries have been built for cross-compile:</p>
|
|
<ul class="simple">
|
|
<li>c-ares</li>
|
|
<li>openssl</li>
|
|
<li>expat</li>
|
|
<li>zlib</li>
|
|
<li>libssh2</li>
|
|
</ul>
|
|
<p>When building the above libraries, make sure that disable shared
|
|
library and enable only static library. We are going to link those
|
|
libraries statically.</p>
|
|
<p><tt class="docutils literal"><span class="pre">android-config</span></tt> assumes that <tt class="docutils literal">$ANDROID_HOME</tt> and <tt class="docutils literal">$NDK</tt>
|
|
environment variables are defined.</p>
|
|
<p>We currently use Android NDK r21e. <tt class="docutils literal">$NDK</tt> should point to the
|
|
directory to Android NDK. The build tools will be found under
|
|
<tt class="docutils literal"><span class="pre">$NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/</span></tt>.</p>
|
|
<p>All the dependent libraries must be installed under
|
|
<tt class="docutils literal">$ANDROID_HOME/usr/local</tt>.</p>
|
|
<p>After <tt class="docutils literal"><span class="pre">android-config</span></tt>, run <tt class="docutils literal">make</tt> to compile sources.</p>
|
|
</div>
|
|
<div class="section" id="building-documentation">
|
|
<h1>Building documentation</h1>
|
|
<p><a class="reference external" href="http://sphinx-doc.org/">Sphinx</a> is used to building the
|
|
documentation. aria2 man pages will be build when you run <tt class="docutils literal">make</tt> if
|
|
they are not up-to-date. You can also build an HTML version of the aria2
|
|
man page by <tt class="docutils literal">make html</tt>. The HTML version manual is also available
|
|
<a class="reference external" href="https://aria2.github.io/manual/en/html/">online</a> (<a class="reference external" href="https://aria2.github.io/manual/ru/html/">Russian
|
|
translation</a>, <a class="reference external" href="https://aria2.github.io/manual/pt/html/">Portuguese
|
|
translation</a>).</p>
|
|
</div>
|
|
<div class="section" id="bittorrent">
|
|
<h1>BitTorrent</h1>
|
|
<div class="section" id="about-file-names">
|
|
<h2>About file names</h2>
|
|
<p>The file name of the downloaded file is determined as follows:</p>
|
|
<dl class="docutils">
|
|
<dt>single-file mode</dt>
|
|
<dd>If "name" key is present in .torrent file, the file name is the value
|
|
of "name" key. Otherwise, the file name is the base name of .torrent
|
|
file appended by ".file". For example, .torrent file is
|
|
"test.torrent", then file name is "test.torrent.file". The
|
|
directory to store the downloaded file can be specified by -d
|
|
option.</dd>
|
|
<dt>multi-file mode</dt>
|
|
<dd>The complete directory/file structure mentioned in .torrent file
|
|
is created. The directory to store the top directory of
|
|
downloaded files can be specified by -d option.</dd>
|
|
</dl>
|
|
<p>Before download starts, a complete directory structure is created if
|
|
needed. By default, aria2 opens at most 100 files mentioned in
|
|
.torrent file, and directly writes to and reads from these files.
|
|
The number of files to open simultaneously can be controlled by
|
|
<tt class="docutils literal"><span class="pre">--bt-max-open-files</span></tt> option.</p>
|
|
</div>
|
|
<div class="section" id="dht">
|
|
<h2>DHT</h2>
|
|
<p>aria2 supports mainline compatible DHT. By default, the routing table
|
|
for IPv4 DHT is saved to <tt class="docutils literal">$XDG_CACHE_HOME/aria2/dht.dat</tt> and the
|
|
routing table for IPv6 DHT is saved to
|
|
<tt class="docutils literal">$XDG_CACHE_HOME/aria2/dht6.dat</tt> unless files exist at
|
|
<tt class="docutils literal"><span class="pre">$HOME/.aria2/dht.dat</span></tt> or <tt class="docutils literal"><span class="pre">$HOME/.aria2/dht6.dat</span></tt>. aria2 uses the
|
|
same port number to listen on for both IPv4 and IPv6 DHT.</p>
|
|
</div>
|
|
<div class="section" id="udp-tracker">
|
|
<h2>UDP tracker</h2>
|
|
<p>UDP tracker support is enabled when IPv4 DHT is enabled. The port
|
|
number of the UDP tracker is shared with DHT. Use <tt class="docutils literal"><span class="pre">--dht-listen-port</span></tt>
|
|
option to change the port number.</p>
|
|
</div>
|
|
<div class="section" id="other-things-should-be-noted">
|
|
<h2>Other things should be noted</h2>
|
|
<ul class="simple">
|
|
<li><tt class="docutils literal"><span class="pre">-o</span></tt> option is used to change the file name of .torrent file itself,
|
|
not a file name of a file in .torrent file. For this purpose, use
|
|
<tt class="docutils literal"><span class="pre">--index-out</span></tt> option instead.</li>
|
|
<li>The port numbers that aria2 uses by default are 6881-6999 for TCP
|
|
and UDP.</li>
|
|
<li>aria2 doesn't configure port-forwarding automatically. Please
|
|
configure your router or firewall manually.</li>
|
|
<li>The maximum number of peers is 55. This limit may be exceeded when
|
|
the download rate is low. This download rate can be adjusted using
|
|
<tt class="docutils literal"><span class="pre">--bt-request-peer-speed-limit</span></tt> option.</li>
|
|
<li>As of release 0.10.0, aria2 stops sending request messages after
|
|
selective download completes.</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
<div class="section" id="metalink">
|
|
<h1>Metalink</h1>
|
|
<p>The current implementation supports HTTP(S)/FTP/SFTP/BitTorrent. The
|
|
other P2P protocols are ignored. Both Metalink4 (RFC 5854) and
|
|
Metalink version 3.0 documents are supported.</p>
|
|
<p>For checksum verification, md5, sha-1, sha-224, sha-256, sha-384, and
|
|
sha-512 are supported. If multiple hash algorithms are provided, aria2
|
|
uses a stronger one. If whole file checksum verification fails, aria2
|
|
doesn't retry the download and just exits with a non-zero return code.</p>
|
|
<p>The supported user preferences are version, language, location,
|
|
protocol, and os.</p>
|
|
<p>If chunk checksums are provided in the Metalink file, aria2 automatically
|
|
validates chunks of data during download. This behavior can be turned
|
|
off by a command-line option.</p>
|
|
<p>If a signature is included in a Metalink file, aria2 saves it as a file
|
|
after the completion of the download. The file name is download
|
|
file name + ".sig". If the same file already exists, the signature file is
|
|
not saved.</p>
|
|
<p>In Metalink4, a multi-file torrent could appear in metalink:metaurl
|
|
element. Since aria2 cannot download 2 same torrents at the same
|
|
time, aria2 groups files in metalink:file element which has the same
|
|
BitTorrent metaurl, and downloads them from a single BitTorrent swarm.
|
|
This is a basically multi-file torrent download with file selection, so
|
|
the adjacent files which are not in Metalink document but share the same
|
|
piece with the selected file are also created.</p>
|
|
<p>If relative URI is specified in metalink:url or metalink:metaurl
|
|
element, aria2 uses the URI of Metalink file as base URI to resolve
|
|
the relative URI. If relative URI is found in the Metalink file which is
|
|
read from the local disk, aria2 uses the value of <tt class="docutils literal"><span class="pre">--metalink-base-uri</span></tt>
|
|
option as base URI. If this option is not specified, the relative URI
|
|
will be ignored.</p>
|
|
</div>
|
|
<div class="section" id="metalink-http">
|
|
<h1>Metalink/HTTP</h1>
|
|
<p>The current implementation only uses rel=duplicate links. aria2
|
|
understands Digest header fields and check whether it matches the
|
|
digest value from other sources. If it differs, drop the connection.
|
|
aria2 also uses this digest value to perform checksum verification
|
|
after the download is finished. aria2 recognizes geo value. To tell aria2
|
|
which location you prefer, you can use <tt class="docutils literal"><span class="pre">--metalink-location</span></tt> option.</p>
|
|
</div>
|
|
<div class="section" id="netrc">
|
|
<h1>netrc</h1>
|
|
<p>netrc support is enabled by default for HTTP(S)/FTP/SFTP. To disable
|
|
netrc support, specify -n command-line option. Your .netrc file
|
|
should have correct permissions(600).</p>
|
|
</div>
|
|
<div class="section" id="websocket">
|
|
<h1>WebSocket</h1>
|
|
<p>The WebSocket server embedded in aria2 implements the specification
|
|
defined in RFC 6455. The supported protocol version is 13.</p>
|
|
</div>
|
|
<div class="section" id="libaria2">
|
|
<h1>libaria2</h1>
|
|
<p>The libaria2 is a C++ library that offers aria2 functionality to the
|
|
client code. Currently, libaria2 is not built by default. To enable
|
|
libaria2, use <tt class="docutils literal"><span class="pre">--enable-libaria2</span></tt> configure option. By default,
|
|
only the shared library is built. To build a static library, use
|
|
<tt class="docutils literal"><span class="pre">--enable-static</span></tt> configure option as well. See libaria2
|
|
documentation to know how to use API.</p>
|
|
</div>
|
|
<div class="section" id="references">
|
|
<h1>References</h1>
|
|
<ul class="simple">
|
|
<li><a class="reference external" href="https://aria2.github.io/manual/en/html/">aria2 Online Manual</a></li>
|
|
<li><a class="reference external" href="https://aria2.github.io/">https://aria2.github.io/</a></li>
|
|
<li><a class="reference external" href="http://tools.ietf.org/html/rfc959">RFC 959 FILE TRANSFER PROTOCOL (FTP)</a></li>
|
|
<li><a class="reference external" href="http://tools.ietf.org/html/rfc1738">RFC 1738 Uniform Resource Locators (URL)</a></li>
|
|
<li><a class="reference external" href="http://tools.ietf.org/html/rfc2428">RFC 2428 FTP Extensions for IPv6 and NATs</a></li>
|
|
<li><a class="reference external" href="http://tools.ietf.org/html/rfc2616">RFC 2616 Hypertext Transfer Protocol -- HTTP/1.1</a></li>
|
|
<li><a class="reference external" href="http://tools.ietf.org/html/rfc3659">RFC 3659 Extensions to FTP</a></li>
|
|
<li><a class="reference external" href="http://tools.ietf.org/html/rfc3986">RFC 3986 Uniform Resource Identifier (URI): Generic Syntax</a></li>
|
|
<li><a class="reference external" href="http://tools.ietf.org/html/rfc4038">RFC 4038 Application Aspects of IPv6 Transition</a></li>
|
|
<li><a class="reference external" href="http://tools.ietf.org/html/rfc5854">RFC 5854 The Metalink Download Description Format</a></li>
|
|
<li><a class="reference external" href="http://tools.ietf.org/html/rfc6249">RFC 6249 Metalink/HTTP: Mirrors and Hashes</a></li>
|
|
<li><a class="reference external" href="http://tools.ietf.org/html/rfc6265">RFC 6265 HTTP State Management Mechanism</a></li>
|
|
<li><a class="reference external" href="http://tools.ietf.org/html/rfc6266">RFC 6266 Use of the Content-Disposition Header Field in the Hypertext Transfer Protocol (HTTP)</a></li>
|
|
<li><a class="reference external" href="http://tools.ietf.org/html/rfc6455">RFC 6455 The WebSocket Protocol</a></li>
|
|
<li><a class="reference external" href="http://tools.ietf.org/html/rfc6555">RFC 6555 Happy Eyeballs: Success with Dual-Stack Hosts</a></li>
|
|
<li><a class="reference external" href="http://www.bittorrent.org/beps/bep_0003.html">The BitTorrent Protocol Specification</a></li>
|
|
<li><a class="reference external" href="http://www.bittorrent.org/beps/bep_0005.html">BitTorrent: DHT Protocol</a></li>
|
|
<li><a class="reference external" href="http://www.bittorrent.org/beps/bep_0006.html">BitTorrent: Fast Extension</a></li>
|
|
<li><a class="reference external" href="http://www.bittorrent.org/beps/bep_0007.html">BitTorrent: IPv6 Tracker Extension</a></li>
|
|
<li><a class="reference external" href="http://www.bittorrent.org/beps/bep_0009.html">BitTorrent: Extension for Peers to Send Metadata Files</a></li>
|
|
<li><a class="reference external" href="http://www.bittorrent.org/beps/bep_0010.html">BitTorrent: Extension Protocol</a></li>
|
|
<li><a class="reference external" href="http://www.bittorrent.org/beps/bep_0012.html">BitTorrent: Multitracker Metadata Extension</a></li>
|
|
<li><a class="reference external" href="http://www.bittorrent.org/beps/bep_0015.html">BitTorrent: UDP Tracker Protocol for BitTorrent</a>
|
|
and <a class="reference external" href="http://www.rasterbar.com/products/libtorrent/udp_tracker_protocol.html">BitTorrent udp-tracker protocol specification</a>.</li>
|
|
<li><a class="reference external" href="http://www.bittorrent.org/beps/bep_0019.html">BitTorrent: WebSeed - HTTP/FTP Seeding (GetRight style)</a></li>
|
|
<li><a class="reference external" href="http://www.bittorrent.org/beps/bep_0027.html">BitTorrent: Private Torrents</a></li>
|
|
<li><a class="reference external" href="http://www.bittorrent.org/beps/bep_0032.html">BitTorrent: BitTorrent DHT Extensions for IPv6</a></li>
|
|
<li><a class="reference external" href="http://wiki.vuze.com/w/Message_Stream_Encryption">BitTorrent: Message Stream Encryption</a></li>
|
|
<li><a class="reference external" href="https://pdos.csail.mit.edu/~petar/papers/maymounkov-kademlia-lncs.pdf">Kademlia: A Peer-to-peer Information System Based on the XOR Metric</a></li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</body>
|
|
</html>
|