Create a `sources.list` file for a Debian mirror with the lowest latency.


Create sources.list using the lowest latency server

$ sudo netselect-apt

Specify Debian branch, stable is used by default
$ sudo netselect-apt [testing]

Include non-free section
$ sudo netselect-apt --non-free

Specify a country for the mirror list lookup
$ sudo netselect-apt -c [India]


netselect-apt [OPTIONS] [ stable|testing|unstable|experimental|release_codename|sid]


netselect-apt automatically creates a sources.list file for using with apt for the specified distribution by downloading the list of Debian mirrors using wget choosing the fastest servers using netselect, and testing the valid servers using curl (if available). The output file is written to OUTFILE.

The list of fastest servers is determined by checking through netselect, which servers responder faster to ICMP queries. In order to determine if the servers are valid a connectiong using the specificied protocol (HTTP or FTP) is done using curl.

If netselect is not installed setuid, then netselect-apt needs to run as an administrator user (i.e. root). This is only required because the network probes done by netselect requires these permissions. No changes are done to the system.

If -i INFILE is passed netselect-apt uses that rather than downloading another copy to a temporary file. The file will be downloaded from



Specify which distribution of Debian to use. By default stable is used.

-a, --arch ARCH

Use mirrors containing ARCH. By default the architecture of the current machine is used as reported by dpkg

-s, --sources

While generating OUTFILE include also deb-src lines to use with ``apt-get source'' to obtain Debian source packages.

-i, --infile INFILE

Use INFILE instead of downloading the mirror list to a temporary file. The file must be in the same format as mirrors_full.

-o, --outfile OUTFILE

Use OUTFILE instead of sources.list.

-n, --nonfree

Include also non-free section while generating OUTFILE.

-f, --ftp

Use FTP mirrors instead of HTTP and generate OUTFILE accordingly.


The OPTIONS provided are added, verbatim, to netselect when it is run. Here you can provide a (quoted) list of options for netselect.

-t, --tests hosts

Make a short list with the number of hosts provided and use that list to test for mirror validity. By default 10 hosts are tested.

-c, --country COUNTRY

Only test the sites found under the country COUNTRY (the value can either be an ISO-3166 value or the full name of the language, in English). When this value is set the mirror list or the INFILE will be filtered and only the sites that are listed under the given country will be tested. Note that restricting the search might not give the best results, as the "fastest" mirror might not even be in the same country as the system the program is running in.



setting this to 1 is equivalent to --sources


setting this to 1 is equivalent to --nonfree


netselect-apt is unable to work with restricted environments in which network filtering is implemented as it relies on netselect being able to find a suitable mirror. To do this, the system where the script is run needs to have network visibility of the mirrors, as it will probe them using ICMP probes.

netselect-apt is also unable to work in environments where HTTP or FTP network connections have to be done through a proxy host, as it relies on being able to test the validity of the remote mirrors doing direct network connections to them.

netselect-apt will not check if the mirror it suggests as the "fastest" mirror is either valid or up-to-date. It is recommended that users that use this tool also validate that the mirrors suggested are official mirrors and are also current.


netselect(1), wget(1), curl(1), apt(8), sources.list(5). For Debian GNU/Linux it is recommended that users review the official mirror list at as well as the mirror checker tool at (which provides information on the up-to-dateness status of mirrors)


Avery Pennarun <>

This manual page and program have been also enhanced by Filippo Giunchedi <> and Javier Fernandez-Sanguino <>

Copied to clipboard