.metalink

Metalink
Metalink logo
Filename extension
.meta4, .metalink
Internet media type
application/metalink4+xml,
application/metalink+xml
Type of formatFile distribution
Extended fromXML, HTTP
StandardRFC 5854, RFC 6249

Metalink is an extensible metadata file format that describes one or more computer files available for download. It specifies files appropriate for the user's language and operating system; facilitates file verification and recovery from data corruption; and lists alternate download sources (mirror URIs).

The metadata is encoded in HTTP header fields and/or in an XML file with extension .meta4 or .metalink. The duplicate download locations provide reliability in case one method fails. Some clients also achieve faster download speeds by allowing different chunks/segments of each file to be downloaded from multiple resources at the same time (segmented downloading).

Metalink supports listing multiple partial and full file hashes along with PGP signatures. Most clients only support verifying MD5, SHA-1, and SHA-256, however. Besides FTP and HTTP mirror locations and rsync, it also supports listing the P2P methods BitTorrent, ed2k, magnet link or any other that uses a URI.

Development history[]

Metalink 3.0 was publicly released in 2005. It was designed to aid in downloading Linux ISO images and other large files on release day, when servers would be overloaded (each server would have to be tried manually) and to repair large downloads by replacing only the parts with errors instead of fully re-downloading them. It was initially adopted by download managers, and was used by open source projects such as OpenOffice.org and Linux distributions. A community developed around it, more download programs supported it (including proprietary ones) and it saw commercial adoption. In 2008, the community took their work to the Internet Engineering Task Force which resulted in Metalink 4.0 in 2010, described in a Standards Track RFC.[1] Metalink 3.0 (with the extension .metalink) and Metalink 4.0 (with the extension .meta4) are incompatible because they have a slightly different format. In 2011, another Standards Track RFC described Metalink in HTTP header fields.[2]

Client programs[]

Tool Debian-based Fedora-based Arch-based BSD-based Windows
aria2[3] Yes Yes Yes[4] Yes[5]
cURL No; built without Metalink support No; built without Metalink support
Wget Yes; v1.17 or later built with metalink support Yes; v1.17 or later built with metalink support Yes; v1.17 or later built with metalink support Yes; v1.17 or later built with metalink support
DownThemAll not in repo not in repo not in repo not in repo
FlashGot not in repo not in repo not in repo not in repo
Free Download Manager not in repo not in repo not in repo not in repo
GetRight not in repo not in repo not in repo not in repo
jDownloader not in repo not in repo not in repo not in repo
KGet Yes Yes Yes Yes No
Phex not in repo not in repo not in repo not in repo
SmartFTP not in repo not in repo not in repo not in repo
easyMule not in repo not in repo not in repo not in repo
ZYpp not in repo not in repo not in repo not in repo

Client libraries[]

In use[]

Mandriva Linux has integrated Metalink into package management with urpmi and aria2. Fedora has integrated Metalink into package management with yum. openSUSE has integrated Metalink into package management with ZYpp and aria2.

Wubi, the Windows-based Ubuntu installer, uses Metadl (LGPL) to download Ubuntu ISO images and takes advantage of Metalink's features of higher availability and increased reliability. If there are errors in the download, they are repaired, instead of restarting the large download.

Appupdater (GPL) for Windows "is similar to apt-get or yum on Linux. It automates the process of installing and maintaining up to date versions of programs."[citation needed]

Currently, OpenOffice.org uses Metalinks to distribute their free office suite. cURL offers Metalinks of their downloads. UniProt Consortium also provides a Metalink for their large protein database. Dofus, a Flash MMORPG uses Metalinks for downloads and so does SageMath, the open-source mathematical software.

The software hosting and collaboration platform Origo generates Metalinks for all hosted releases.

The following Linux distributions use Metalink for ISO image distribution:[citation needed] Adios, Bayanihan Linux, BeleniX, Berry Linux, BLAG Linux and GNU, Bluewhite64 Linux, Damn Small Linux, Fedora, GoboLinux, Granular Linux, KateOS, Linux Mint, openSUSE, Pardus Linux, PCLinuxOS, PuppyLinux, Sabayon Linux, StartCom Enterprise Linux, SUSE Linux, Ubuntu.

The following FreeBSD based distributions use Metalink for ISO image distribution: DesktopBSD, MidnightBSD, and TrueOS.

Metalink client feature comparison[]

A guide to which clients support which Metalink features:

Client wget cURL DownThemAll Free Download Manager GetRight KGet Phex SmartFTP
Licensing Free Software (GNU General Public License) Free Software (MIT/X derivate license) Free Software (GNU General Public License) Free Software (GNU General Public License) Proprietary / $29.95 for Standard, $49.95 for Pro Free Software (GNU General Public License) Free Software (GNU General Public License) Proprietary / Free 30 day Evaluation

Multiple Editions/$39.99 Professional

Interface CLI CLI GUI GUI GUI GUI GUI GUI
Metalink 4.0 Yes Yes Yes No No Yes No Yes
Runs on Linux Yes Yes Yes No No Yes Yes No
Runs on Windows Yes Yes Yes Yes Yes No Yes Yes
Runs on Mac OS X Yes Yes Yes No No No Yes No
Resume Downloads ? Yes Yes Yes Yes Yes Yes Yes[6]
Segmented Downloads ? ? Yes Yes Yes Yes Yes No
Multiple File support ? ? Yes Yes Yes Yes Yes Yes
"location" ? ? Yes No No No No No
OS ? ? Yes Yes No No No No
Language ? ? Yes No No No No No
HTTP with Transparent Negotiation ? ? Yes No No No No No
Metalink/HTTP ? ? No No No No No No
HTTP Yes Yes Yes Yes Yes Yes Yes Yes
FTP Yes Yes Yes Yes Yes Yes Yes Yes
BitTorrent ? No Yes Yes Yes No No
magnet ? ? No No No No Yes No
MD5 Hashes ? Yes Yes Yes Yes Yes Yes
SHA-1 Hashes ? Yes Yes Yes Yes Yes Yes
SHA-256 Hashes ? Yes Yes No No No Yes
Piece Hashes ? ? No No No No No No
PGP Signatures ? ? No No No No No No

No clients support rsync at this time.

Metalink generation[]

Metalink is formatted as XML so it can be either hand-crafted or created with an XML library, useful for automation. These tools are specifically for Metalink.

Example Metalink 4.0 .meta4 file[]

Metalink 4.0 files have the extension .meta4 and are XML text files. They are served with the application/metalink4+xml Internet media type.

 <?xml version="1.0" encoding="UTF-8"?>
 <metalink xmlns="urn:ietf:params:xml:ns:metalink">
   <published>2009-05-15T12:23:23Z</published>
   <file name="example.ext">
     <size>14471447</size>
     <identity>Example</identity>
     <version>1.0</version>
     <language>en</language>
     <description>
     A description of the example file for download.
     </description>
     <hash type="sha-256">3d6fece8033d146d8611eab4f032df738c8c1283620fd02a1f2bfec6e27d590d</hash>
     <url location="de" priority="1">ftp://ftp.example.com/example.ext</url>
     <url location="fr" priority="1">http://example.com/example.ext</url>
     <metaurl mediatype="torrent" priority="2">http://example.com/example.ext.torrent</metaurl>
   </file>
 </metalink>

Example Metalink/HTTP header fields[]

Metalink in HTTP header fields makes use of existing standard HTTP header fields such as ETags, Link header fields (for mirrors and P2P), and Instance Digests (for hashes).

Etag: "thvDyvhfIqlvFe+A9MYgxAfm1q5="
Link: <http://www2.example.com/example.ext>; rel=duplicate
Link: <ftp://ftp.example.com/example.ext>; rel=duplicate
Link: <http://example.com/example.ext.torrent>; rel=describedby; type="application/x-bittorrent"
Link: <http://example.com/example.ext.meta4>; rel=describedby; type="application/metalink4+xml"
Link: <http://example.com/example.ext.asc>; rel=describedby; type="application/pgp-signature"
Digest: SHA-256=MWVkMWQxYTRiMzk5MDQ0MzI3NGU5NDEyZTk5OWY1ZGFmNzgyZTJlODYzYjRjYzFhOTlmNTQwYzI2M2QwM2U2MQ==

Example Metalink 3.0 .metalink file[]

Metalink 3.0 files have the extension .metalink and are XML text files.

 <?xml version="1.0" encoding="UTF-8"?>
 <metalink version="3.0" xmlns="http://www.metalinker.org/">
   <files>
     <file name="example.ext">
       <verification>
         <hash type="md5">example-md5-hash</hash>
         <hash type="sha1">example-sha1-hash</hash>
         <signature type="pgp"/>
       </verification>
       <resources>
         <url type="ftp" location="us" preference="90">ftp://ftp.example.com/example.ext</url>
         <url type="ftp" location="uk" preference="90">ftp://ftp.example.net/example.ext</url>
         <url type="http" location="us" preference="90">http://example.com/example.ext</url> 
         <url type="http" location="de" preference="90">http://example.net/example.ext</url>
         <url type="bittorrent" preference="100">http://example.org/example.ext.torrent</url>
         <url type="rsync"/>
         <url type="magnet"/>
         <url type="ed2k"/>
       </resources>
     </file>
   </files>
 </metalink>

See also[]

References[]

  1. ^ Anthony, Bryan; Neil, McNab; Peter, Poeml (June 2010). "The Metalink Download Description Format". tools.ietf.org. Retrieved 2018-04-07.
  2. ^ <anthonybryan@gmail.com>, Anthony Bryan (June 2011). "Metalink in HTTP Headers". tools.ietf.org. Retrieved 2018-04-07.
  3. ^ aria2 - The next generation download utility
  4. ^ "aria2 AUR page". Retrieved 23 April 2020.
  5. ^ "Chocolatey aria2 package page". Retrieved 23 April 2020.
  6. ^ "SmartFTP - Features".

External links[]