How do you select the fastest mirror from the command line?How can I search for the fastest update server on the command line?Is it better to use the UK or USA server?How to find fastest mirror from given list?Is there any way I can dynamically select a mirror that is closest to me?How can I get apt to use a mirror close to me, or choose a faster mirror?How to lower wait time for repository updatesMaking mirror://mirrors.ubuntu.com highly availableFailed to fetch http://us.archive.ubuntu.com/ubuntu/dists/lucid/main/source/Sources 404 Not Found [IP: 91.189.91.26 80]Could not connect to bd.archive.ubuntu.com:80 (116.193.170.18), connection timed outWhy can't I install lib32gcc1?How can I change repository mirror from commandline?Change software sources from the command lineThe fastest way to create a file from a terminalOpen the first (or any) file from command lineRestore default apt repositories in sources.list from command lineInstall ubuntu with the command lineSet the fastest mirror from preseedHow to mirror image files via command line?

What are the downsides of being a debt-free country (no foreign national debt)?

What does it mean to play in a mode?

How do I compile something for Linux if I don't have enough space for installing GCC?

How to analyse 'Element not Found' exceptions when working with Selenium

Car Possession being threatened by Signer

Talmud Bavli Sanhedrin 98b: an interpretation in a messianic sense of the figure of the "suffering servant" of Isaiah 52-53?

Why is casting a DATE field to VARCHAR datatype non-deterministic and is there a way to make it deterministic?

Is there a Scoville scale for coldness?

What is considered room temperature in Celsius?

Why do aircraft cockpit displays use uppercase fonts?

Why do we have to make the sign of the Cross physically?

What is the reason for difference between integer division and float to int conversion in python?

Is there a term for branding that is adaptive / modular which can be used to create brands and sub-brands?

Can a human colony survive on a 'hot' world?

My boss asked what number would keep me happy?

Should I replace fillable PDFs?

How to prevent discontent among the players when one player murders the others' characters?

Reimbursed more than my travel expenses for interview

Sleep for 1000 years

C - random password generator

Declining a paper review after accepting it and seeing the manuscript

Fourier transform is an isomorphism...but we don’t get when each frequency appears?

Mark at multiple positions

Why didn't the 6502 have increase/decrease opcodes for A?



How do you select the fastest mirror from the command line?


How can I search for the fastest update server on the command line?Is it better to use the UK or USA server?How to find fastest mirror from given list?Is there any way I can dynamically select a mirror that is closest to me?How can I get apt to use a mirror close to me, or choose a faster mirror?How to lower wait time for repository updatesMaking mirror://mirrors.ubuntu.com highly availableFailed to fetch http://us.archive.ubuntu.com/ubuntu/dists/lucid/main/source/Sources 404 Not Found [IP: 91.189.91.26 80]Could not connect to bd.archive.ubuntu.com:80 (116.193.170.18), connection timed outWhy can't I install lib32gcc1?How can I change repository mirror from commandline?Change software sources from the command lineThe fastest way to create a file from a terminalOpen the first (or any) file from command lineRestore default apt repositories in sources.list from command lineInstall ubuntu with the command lineSet the fastest mirror from preseedHow to mirror image files via command line?






.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty
margin-bottom:0;









137


















I want to update my sources.list file with the fastest server from the command line in a fresh Ubuntu Server install. I know this is trivially easy with the GUI, but there doesn't seem to be a simple way to do it from from the command line?










share|improve this question






















  • 3





    In regular expressions, the . character means any character. If you want it to match a ., you need to escape it with , so us.archive[..] should be us.archive[..]

    – Egil
    May 4 '11 at 7:13











  • Related: askubuntu.com/questions/37753/…

    – Jorge Castro
    Apr 6 '12 at 19:13






  • 2





    In my case I had to replace the # signs with slashes (/). Otherwise I got sed: -e expression #1, char 53: unterminated s' command`.

    – Ethan Leroy
    Oct 18 '13 at 21:18











  • @EthanLeroy same here with Ubuntu 12.04.3

    – logoff
    Jan 10 '14 at 11:44











  • Should be slash not hash.

    – Matt H
    May 19 '14 at 22:20

















137


















I want to update my sources.list file with the fastest server from the command line in a fresh Ubuntu Server install. I know this is trivially easy with the GUI, but there doesn't seem to be a simple way to do it from from the command line?










share|improve this question






















  • 3





    In regular expressions, the . character means any character. If you want it to match a ., you need to escape it with , so us.archive[..] should be us.archive[..]

    – Egil
    May 4 '11 at 7:13











  • Related: askubuntu.com/questions/37753/…

    – Jorge Castro
    Apr 6 '12 at 19:13






  • 2





    In my case I had to replace the # signs with slashes (/). Otherwise I got sed: -e expression #1, char 53: unterminated s' command`.

    – Ethan Leroy
    Oct 18 '13 at 21:18











  • @EthanLeroy same here with Ubuntu 12.04.3

    – logoff
    Jan 10 '14 at 11:44











  • Should be slash not hash.

    – Matt H
    May 19 '14 at 22:20













137













137









137


78






I want to update my sources.list file with the fastest server from the command line in a fresh Ubuntu Server install. I know this is trivially easy with the GUI, but there doesn't seem to be a simple way to do it from from the command line?










share|improve this question
















I want to update my sources.list file with the fastest server from the command line in a fresh Ubuntu Server install. I know this is trivially easy with the GUI, but there doesn't seem to be a simple way to do it from from the command line?







command-line apt repository






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited May 7 '18 at 10:11









k0pernikus

4,3586 gold badges37 silver badges67 bronze badges




4,3586 gold badges37 silver badges67 bronze badges










asked May 4 '11 at 6:35









EvanEvan

2,8855 gold badges24 silver badges23 bronze badges




2,8855 gold badges24 silver badges23 bronze badges










  • 3





    In regular expressions, the . character means any character. If you want it to match a ., you need to escape it with , so us.archive[..] should be us.archive[..]

    – Egil
    May 4 '11 at 7:13











  • Related: askubuntu.com/questions/37753/…

    – Jorge Castro
    Apr 6 '12 at 19:13






  • 2





    In my case I had to replace the # signs with slashes (/). Otherwise I got sed: -e expression #1, char 53: unterminated s' command`.

    – Ethan Leroy
    Oct 18 '13 at 21:18











  • @EthanLeroy same here with Ubuntu 12.04.3

    – logoff
    Jan 10 '14 at 11:44











  • Should be slash not hash.

    – Matt H
    May 19 '14 at 22:20












  • 3





    In regular expressions, the . character means any character. If you want it to match a ., you need to escape it with , so us.archive[..] should be us.archive[..]

    – Egil
    May 4 '11 at 7:13











  • Related: askubuntu.com/questions/37753/…

    – Jorge Castro
    Apr 6 '12 at 19:13






  • 2





    In my case I had to replace the # signs with slashes (/). Otherwise I got sed: -e expression #1, char 53: unterminated s' command`.

    – Ethan Leroy
    Oct 18 '13 at 21:18











  • @EthanLeroy same here with Ubuntu 12.04.3

    – logoff
    Jan 10 '14 at 11:44











  • Should be slash not hash.

    – Matt H
    May 19 '14 at 22:20







3




3





In regular expressions, the . character means any character. If you want it to match a ., you need to escape it with , so us.archive[..] should be us.archive[..]

– Egil
May 4 '11 at 7:13





In regular expressions, the . character means any character. If you want it to match a ., you need to escape it with , so us.archive[..] should be us.archive[..]

– Egil
May 4 '11 at 7:13













Related: askubuntu.com/questions/37753/…

– Jorge Castro
Apr 6 '12 at 19:13





Related: askubuntu.com/questions/37753/…

– Jorge Castro
Apr 6 '12 at 19:13




2




2





In my case I had to replace the # signs with slashes (/). Otherwise I got sed: -e expression #1, char 53: unterminated s' command`.

– Ethan Leroy
Oct 18 '13 at 21:18





In my case I had to replace the # signs with slashes (/). Otherwise I got sed: -e expression #1, char 53: unterminated s' command`.

– Ethan Leroy
Oct 18 '13 at 21:18













@EthanLeroy same here with Ubuntu 12.04.3

– logoff
Jan 10 '14 at 11:44





@EthanLeroy same here with Ubuntu 12.04.3

– logoff
Jan 10 '14 at 11:44













Should be slash not hash.

– Matt H
May 19 '14 at 22:20





Should be slash not hash.

– Matt H
May 19 '14 at 22:20










13 Answers
13






active

oldest

votes


















22



















Pakket netselect-apt

dapper (net): Choose the fastest Debian mirror with netselect
[universe]
0.3.ds1-5: all
hardy (net): Choose the fastest Debian mirror with netselect
[universe]
0.3.ds1-11: all



Pakket apt-spy

dapper (admin): writes a sources.list file based on bandwidth tests
[universe]
3.1-14: amd64 i386 powerpc


Not included in newer Ubuntu due to secturity issues it seems: see: Bug report



But .. I normally just use ping to find out the speed of a connection to some location. Amount of hops and latency.






share|improve this answer




















  • 4





    netselect-apt doesn't seem to be available in Ubuntu 12.04

    – offby1
    Nov 6 '13 at 23:22











  • correct: see here bugs.launchpad.net/ubuntu/+source/netselect/+bug/337377

    – Rinzwind
    Nov 7 '13 at 7:41






  • 8





    This is not the most upvoted, or the best answer any more, check next one

    – ntg
    Jun 10 '15 at 7:54











  • Which answer is the "next one" might have changed.

    – gmatht
    Jan 24 '17 at 4:46











  • apt-spy is gone at debian 9, but netselect-apt is OK

    – netawater
    Nov 21 '17 at 16:05


















147



















You don't have to do any searching anymore - as ajmitch has explained, you can use deb mirror to have the best mirror picked for you automatically.




apt-get now supports a 'mirror' method that will automatically select a good mirror based on your location. Putting:



deb mirror://mirrors.ubuntu.com/mirrors.txt precise main restricted universe multiverse
deb mirror://mirrors.ubuntu.com/mirrors.txt precise-updates main restricted universe multiverse
deb mirror://mirrors.ubuntu.com/mirrors.txt precise-backports main restricted universe multiverse
deb mirror://mirrors.ubuntu.com/mirrors.txt precise-security main restricted universe multiverse


on the top in your /etc/apt/sources.list file should be all that is needed to make it automatically pick a mirror for you based on your geographical location.



Lucid (10.04), Maverick (10.10), Natty (11.04), and Oneiric (11.10) users can replace precise with the appropriate name.







share|improve this answer



























  • Great tip. Just note that after making the change you need to run sudo apt-get update before doing any apt-get install for it to use your closest mirror.

    – Simon East
    Jun 29 '13 at 17:03






  • 2





    Related: askubuntu.com/q/319433/11244

    – Till
    Jul 18 '13 at 15:45






  • 24





    Nice tip, but unhelpful in my case. It works on geolocation, giving me the local server, which is waaaayy slower where I am. The network temporal distance is the important factor here, not spatial distance.

    – jarondl
    Jul 31 '13 at 8:24






  • 1





    currently broken: bugs.launchpad.net/ubuntu/+source/apt/+bug/1613184

    – marathon
    Aug 31 '17 at 18:34






  • 1





    @marathon fixed at least on 18.04+

    – Pablo A
    Mar 25 at 19:06


















49



















Here's one way that will always work, using good old netselect and some grep magic:



The terminal-addict's "find best server" hack!



  • Download and dpkg -i netselect for your architecture from the Debian website. (it's about 125 KB, no dependencies)


  • Find the fastest Ubuntu mirrors from your location, either up-to-date or at most six hours behind with this (I'll explain it below, sorry it doesn't split up nicely in Markdown)



    sudo netselect -v -s10 -t20 `wget -q -O- https://launchpad.net/ubuntu/+archivemirrors | grep -P -B8 "statusUP|statusSIX" | grep -o -P "(f|ht)tp://[^"]*"`



  • netselect:




    1. -v makes it a little verbose -- you want to see progress dots and messages telling you different mirrors mapping to the same IP were merged :)


    2. -sN controls how many mirrors you want at the end (e.g. top 10 mirrors)


    3. -tN is how long each mirror is speed-tested (default is 10; the higher the number, the longer it takes but the more reliable the results.)



  • This is the backquotes stuff (don't paste, just for explanation)




    wget -q -O- https://launchpad.net/ubuntu/+archivemirrors
    | grep -P -B8 "status(UP|SIX)"
    | grep -o -P "(f|ht)tp://[^"]*"



    1. wget pulls the latest mirror status from https://launchpad.net/ubuntu/+archivemirrors.

    2. The first grep extracts mirrors that are up-to-date or six-hours behind, along with 8 lines of previous context which includes the actual ftp/http URLs

    3. The second grep extracts these ftp/http URLs



  • Here's a sample output from California, USA:




    60 ftp://mirrors.se.eu.kernel.org/ubuntu/
    70 http://ubuntu.alex-vichev.info/
    77 http://ftp.citylink.co.nz/ubuntu/
    279 http://ubuntu.mirrors.tds.net/pub/ubuntu/
    294 http://mirror.umd.edu/ubuntu/
    332 http://mirrors.rit.edu/ubuntu/
    364 ftp://pf.archive.ubuntu.com/ubuntu/
    378 http://mirror.csclub.uwaterloo.ca/ubuntu/
    399 ftp://ubuntu.mirror.frontiernet.net/ubuntu/
    455 http://ubuntu.mirror.root.lu/ubuntu/


    • The "ranks" are an arbitrary metric; lower is usually better.

    • If you're wondering why the kernel.org Sweden-EU mirror and an NZ mirror are in the top three from California, well, so am I ;-) The truth is that netselect doesn't always choose the most appropriate URL to display when multiple mirrors map to a single IP; number 3 is also known as nz.archive.ubuntu.com!






share|improve this answer






















  • 9





    netselect picks mirrors that have low udp or icmp latency. It doesn't necessarily pick mirrors that can give more bandwidth.

    – Tobu
    Oct 13 '13 at 19:40











  • @pix I approved your edit, but it's not command substitution that results in newlines being replaced. It's the subsequent field splitting that removed the newlines. Command substitution only removes trailing newlines.

    – muru
    Feb 21 '17 at 9:23


















25



















Oneliner that select best (by download speed) mirror based on mirrors.ubuntu.com for yours ip.



curl -s http://mirrors.ubuntu.com/mirrors.txt | xargs -n1 -I sh -c 'echo `curl -r 0-102400 -s -w %speed_download -o /dev/null /ls-lR.gz` ' |sort -g -r |head -1| awk ' print $2 '





share|improve this answer




















  • 2





    To have more options replace at the end: sort -gr | head -3.

    – Pablo A
    Mar 4 '17 at 1:55






  • 1





    Currently, curl -s http://mirrors.ubuntu.com/mirrors.txt returns only one line: http://archive.ubuntu.com/ubuntu/ which defeats the purpose of choosing among several. :-/

    – Stéphane Gourichon
    Jun 26 '17 at 13:35











  • yes, so this method is NG.

    – netawater
    Nov 18 '17 at 4:58











  • I found the curl part of this answer helpful because curl -r 0-102400 -o /dev/null [server_url]/ls-lR.gz where [server_url] is the base mirror URL listed in mirrors.txt, allows a speed comparison of the first ~100K of the index file from the mirror.

    – jamesc
    Mar 12 '18 at 12:57











  • This tests transfer speed, which is definitely an improvement over netselect. It's only downloading 10k from each server, which may not be a great representation of steady transfer speed on faster connections, though. Increase that 102400 to test with a larger download

    – Phil Miller
    Jun 8 '18 at 21:41


















17



















Here is a Python script I wrote that finds mirrors with the lowest TCP latency.



The script also provides bandwidth and status data taken from launchpad, and will generate a new sources.list file automatically or using a mirror chosen from a list.



A usage example that lets you choose from 5 US mirrors with the lowest latency to your machine:



$ apt-select --country US -t 5 --choose





share|improve this answer






















  • 5





    I want to let you know that I've made a debian package with your script that is ready to be used in a very easy and straightforward way: github.com/brodock/apt-select/releases/tag/0.1.0

    – Gabriel Mazetto
    Nov 3 '15 at 4:25











  • this is a perfect solution, as I've tried the other methods. to make noob friendly, I've written a post detailing this method:. blog.kmonsoor.com/…

    – kmonsoor
    Oct 11 '16 at 19:14











  • This is great, since netselect isn't available in newer versions of Ubuntu

    – Tek
    Feb 18 '18 at 7:23











  • Please show how to use it in your post

    – Jonathan
    Oct 31 '18 at 6:21











  • @Jonathan done. Full usage is in the README at the first link.

    – John B
    Nov 1 '18 at 0:07


















5



















I developed a simple ping-based nodejs script that tests the servers listed on mirrors.ubuntu.com/mirrors.txt and returns the fastest one:



sudo npm install -g ffum
ffum


Please let me know if you find it useful or have any suggestions (=






share|improve this answer



























  • ffum does not work: Connection error.

    – James Fu
    Jul 10 '13 at 8:48












  • It doesn't work: Empty output.

    – Juan Simón
    Aug 27 '13 at 1:06











  • git clone the repo and run node ffum

    – Michael
    Aug 7 '14 at 3:58











  • Awesome, works for me! I had a bug where it was looking for node instead of nodejs... also would be cool to have some verbose of each tested archive speed.

    – tweak2
    Aug 27 '14 at 16:57


















4



















I know this doesn't directly answer the OP's question, but there's a button in the desktop/GUI version of Ubuntu that finds the best mirror for you. It seemed to work pretty well, so I looked into it briefly, but didn't have time to follow up.



The reason I bring it up is because I think it would be pretty straight forward and usable to make it into a command line utility.



If anyone is interested, the test seems to be located in:



/usr/lib/python3/dist-packages/softwareproperties/MirrorTest.py


Again, that's about as far as I got, but I figured I'd leave this here in case anyone wanted it. I'll probably pick back up on it when I have a little more time.






share|improve this answer

























  • On 18.04, this script detects when it is invoked as an application (as main) from a terminal....and just prints its results to the terminal. Make sure to give it enough time to complete. $ python3 /usr/lib/python3/dist-packages/softwareproperties/MirrorTest.py >> [top 5 omitted] and the winner is: ny-mirrors.evowise.com

    – PatKilg
    Jun 9 '18 at 18:07












  • Sadly it doesn't work correctly. This script takes the 5 servers with lowest ping, then score them by bandwidth by downloading a ~1M file (Packages.gz in main from your dist). If you modify the script to increase it to 25 servers and download a 500M file you get completely different results, which are correct this time.

    – Jocelyn
    Feb 16 at 11:20


















2



















Command That Finds Fast Mirrors



On Ubuntu 18.04 I got good results by running



 python /usr/lib/python3/dist-packages/softwareproperties/MirrorTest.py


That prints a list of mirrors organized by "time" (not explained), and then I used one of the mirrors it ranked highest.



More Details



For me, it was useful to test a few of the top results output by that command by setting them as my mirror in /etc/apt/sources.list and then doing



time sudo apt update


to see how long it took to download the package list from that mirror. I tested the top three suggestions and they were all fast, but one of them was twice as fast as the other two in the time sudo apt update test.



Here's an example output from python /usr/lib/python3/dist-packages/softwareproperties/MirrorTest.py:



mirror: es-mirrors.evowise.com - time: 0.183778047562
mirror: it-mirrors.evowise.com - time: 0.18604683876
mirror: la-mirrors.evowise.com - time: 0.192630052567
mirror: ny-mirrors.evowise.com - time: 0.208723068237
mirror: mirrors.accretive-networks.net - time: 0.385910987854
mirror: mirror.team-cymru.org - time: 0.46785402298
mirror: mirrors.psu.ac.th - time: 1.64231991768
and the winner is: es-mirrors.evowise.com





share|improve this answer




















  • 1





    Sadly it doesn't work correctly. This script takes the 5 servers with lowest ping, then score them by bandwidth by downloading a ~1M file (Packages.gz in main from your dist). If you modify the script to increase it to 25 servers and download a 500M file you get completely different results, which are correct this time.

    – Jocelyn
    Feb 16 at 11:14



















2



















For the command line, you can use a Python tool called apt-smart



A usage example that lets you list ranked mirrors within your country (automatically detect):



$ apt-smart -l


With -l, or --list-mirrors, you will get ( example output from Travis CI U.S. server ):



---------------------------------------------------------------------------------------------------------
| Rank | Mirror URL | Available? | Updating? | Last updated | Bandwidth |
---------------------------------------------------------------------------------------------------------
| 1 | http://mirrors.gigenet.com/ubuntua... | Yes | No | Up to date | 1.73 MB/s |
| 2 | http://mirror.genesisadaptive.com/... | Yes | No | Up to date | 1.68 MB/s |
| 3 | http://ubuntu.mirrors.tds.net/pub/... | Yes | No | Up to date | 1.4 MB/s |
| 4 | http://repos.forethought.net/ubuntu | Yes | No | Up to date | 1.35 MB/s |
| 5 | http://repo.miserver.it.umich.edu/... | Yes | No | Up to date | 937.62 KB/s |
...
| 75 | http://mirror.cc.vt.edu/pub2/ubuntu | Yes | No | 1 day behind | 659.67 KB/s |
| 76 | http://mirror.atlantic.net/ubuntu | Yes | No | 2 days behind | 351.26 KB/s |
| 77 | http://mirror.lstn.net/ubuntu | Yes | No | 4 days behind | 806.81 KB/s |
| 78 | http://mirrors.usinternet.com/ubun... | Yes | No | 4 weeks behind | 514.31 KB/s |
| 79 | http://mirrors.arpnetworks.com/Ubuntu | Yes | No | 19 weeks behind | 418.94 KB/s |
| 80 | http://mirrors.ocf.berkeley.edu/ub... | Yes | Yes | Up to date | 446.07 KB/s |
---------------------------------------------------------------------------------------------------------
Full URLs which are too long to be shown in above table:
1: http://mirrors.gigenet.com/ubuntuarchive
2: http://mirror.genesisadaptive.com/ubuntu
3: http://ubuntu.mirrors.tds.net/pub/ubuntu
5: http://repo.miserver.it.umich.edu/ubuntu
...
78: http://mirrors.usinternet.com/ubuntu/archive
80: http://mirrors.ocf.berkeley.edu/ubuntu



Of course, apt-smart can also change your sources.list if you want to:



$ apt-smart -a


With -a , or --auto-change-mirror to discover available mirrors, rank the mirrors by connection speed and update status and update /etc/apt/sources.list to use the best available mirror.



With -c , or --change-mirror MIRROR_URL to update /etc/apt/sources.list to use the given MIRROR_URL.



Compared with other tools:




  • apt-smart automatically finds where you are so you don't need to specify the country when you travel abroad.


  • apt-smart does real HTTP download from each mirror to get more accurate results ( bandwidth & status ) and supports HTTP proxy, rather than using ping and relying on launchpad 's inaccurate data.


  • apt-smart is being maintained, whereas most other tools leave issues unfix for a long time.

You can easily install apt-smart via pip, for detailed copy'n'paste install commands and usages please see Project Readme.






share|improve this answer

























  • This works great! "pip install apt-smart" to install it.

    – Andy Fraley
    Nov 1 at 1:57











  • @Andy Fraley Thank you for commenting. If you are lucky enough, you can install apt-smart simply by pip install apt-smart and run apt-smart without any errors. But sometimes in some environments it might says 'apt-smart' command not found, or any other errors. It is not a bug of apt-smart but it is something of pip or Ubuntu system environment, and talking about it will be a long story. So the recommend way to install it is to follow the install commands in Project Readme, which is clear and can be copy'n'paste as a whole into terminal.

    – Martin X
    Nov 3 at 4:03


















0



















I use the following to auto select mirrors (and disable deb-src)



sudo sed -i -e 's%http://archive.ubuntu.com/ubuntu%mirror://mirrors.ubuntu.com/mirrors.txt%' -e 's/^deb-src/#deb-src/' /etc/apt/sources.list





share|improve this answer
































    0



















    If you want a utility to do this you could implement such a utility as a simple bash script like the following. This might be useful if you want to use the utility without needing pip/nodejs.



    #!/bin/bash
    if [ -z "$1" ]
    then
    echo Usage: sudo $0 http://mirrors.ubuntu.com/mirrors.txt
    echo OR consider one of...
    for mirror in `wget http://mirrors.ubuntu.com/mirrors.txt -O - 2> /dev/null`
    do
    (
    host=`echo $mirror |sed s,.*//,,|sed s,/.*,,`
    echo -e `ping $host -c1 | grep time=|sed s,.*time=,,`:' tt'$mirror
    ) &
    done
    wait
    exit 1
    fi

    OLD_SOURCE=`cat /etc/apt/sources.list | grep ^deb | head -n1 | cut -d -f2`

    [ -e /etc/apt/sources.list.orig ] || cp /etc/apt/sources.list /etc/apt/sources.list.orig

    cp /etc/apt/sources.list /etc/apt/sources.list.tmp
    sed "s,$OLD_SOURCE,$1," < /etc/apt/sources.list.tmp > /etc/apt/sources.list





    share|improve this answer


































      0



















      The other answers, including the accepted answer, are no longer valid (for Ubuntu 11.04 and newer) because they recommended Debian packages such as netselect-apt and apt-spy which do not work with Ubuntu.



      There are two different working answers to this question below:




      1. Use apt-get's mirror: method


        This method asks the Ubuntu server for a list of mirrors near you based on your IP, and selects one of them. The easiest alternative, with the minor downside that sometimes the closest mirror may not be the fastest.





      2. Command-line foo using netselect

        Shows you how to use the netselect tool to find the fastest recently updated servers from you -- network-wise, not geographically. Use sed to replace mirrors in sources.list.

      Use sed to replace mirrors in sources.list



      Since some sources use addition folders as part of their path it might be better to use the alternate separator syntax.



      sudo sed -i 's%us.archive.ubuntu.com%mirrors.gigenet.com/ubuntuarchive/%' /etc/apt/sources.list





      share|improve this answer


































        -1



















        The easiest and efficient way to get the fastest mirror is to use the apt mirror:// source, see



        https://mvogt.wordpress.com/2011/03/21/the-apt-mirror-method/






        share|improve this answer































          13 Answers
          13






          active

          oldest

          votes








          13 Answers
          13






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          22



















          Pakket netselect-apt

          dapper (net): Choose the fastest Debian mirror with netselect
          [universe]
          0.3.ds1-5: all
          hardy (net): Choose the fastest Debian mirror with netselect
          [universe]
          0.3.ds1-11: all



          Pakket apt-spy

          dapper (admin): writes a sources.list file based on bandwidth tests
          [universe]
          3.1-14: amd64 i386 powerpc


          Not included in newer Ubuntu due to secturity issues it seems: see: Bug report



          But .. I normally just use ping to find out the speed of a connection to some location. Amount of hops and latency.






          share|improve this answer




















          • 4





            netselect-apt doesn't seem to be available in Ubuntu 12.04

            – offby1
            Nov 6 '13 at 23:22











          • correct: see here bugs.launchpad.net/ubuntu/+source/netselect/+bug/337377

            – Rinzwind
            Nov 7 '13 at 7:41






          • 8





            This is not the most upvoted, or the best answer any more, check next one

            – ntg
            Jun 10 '15 at 7:54











          • Which answer is the "next one" might have changed.

            – gmatht
            Jan 24 '17 at 4:46











          • apt-spy is gone at debian 9, but netselect-apt is OK

            – netawater
            Nov 21 '17 at 16:05















          22



















          Pakket netselect-apt

          dapper (net): Choose the fastest Debian mirror with netselect
          [universe]
          0.3.ds1-5: all
          hardy (net): Choose the fastest Debian mirror with netselect
          [universe]
          0.3.ds1-11: all



          Pakket apt-spy

          dapper (admin): writes a sources.list file based on bandwidth tests
          [universe]
          3.1-14: amd64 i386 powerpc


          Not included in newer Ubuntu due to secturity issues it seems: see: Bug report



          But .. I normally just use ping to find out the speed of a connection to some location. Amount of hops and latency.






          share|improve this answer




















          • 4





            netselect-apt doesn't seem to be available in Ubuntu 12.04

            – offby1
            Nov 6 '13 at 23:22











          • correct: see here bugs.launchpad.net/ubuntu/+source/netselect/+bug/337377

            – Rinzwind
            Nov 7 '13 at 7:41






          • 8





            This is not the most upvoted, or the best answer any more, check next one

            – ntg
            Jun 10 '15 at 7:54











          • Which answer is the "next one" might have changed.

            – gmatht
            Jan 24 '17 at 4:46











          • apt-spy is gone at debian 9, but netselect-apt is OK

            – netawater
            Nov 21 '17 at 16:05













          22















          22











          22









          Pakket netselect-apt

          dapper (net): Choose the fastest Debian mirror with netselect
          [universe]
          0.3.ds1-5: all
          hardy (net): Choose the fastest Debian mirror with netselect
          [universe]
          0.3.ds1-11: all



          Pakket apt-spy

          dapper (admin): writes a sources.list file based on bandwidth tests
          [universe]
          3.1-14: amd64 i386 powerpc


          Not included in newer Ubuntu due to secturity issues it seems: see: Bug report



          But .. I normally just use ping to find out the speed of a connection to some location. Amount of hops and latency.






          share|improve this answer














          Pakket netselect-apt

          dapper (net): Choose the fastest Debian mirror with netselect
          [universe]
          0.3.ds1-5: all
          hardy (net): Choose the fastest Debian mirror with netselect
          [universe]
          0.3.ds1-11: all



          Pakket apt-spy

          dapper (admin): writes a sources.list file based on bandwidth tests
          [universe]
          3.1-14: amd64 i386 powerpc


          Not included in newer Ubuntu due to secturity issues it seems: see: Bug report



          But .. I normally just use ping to find out the speed of a connection to some location. Amount of hops and latency.







          share|improve this answer













          share|improve this answer




          share|improve this answer










          answered May 4 '11 at 7:07









          RinzwindRinzwind

          228k30 gold badges440 silver badges584 bronze badges




          228k30 gold badges440 silver badges584 bronze badges










          • 4





            netselect-apt doesn't seem to be available in Ubuntu 12.04

            – offby1
            Nov 6 '13 at 23:22











          • correct: see here bugs.launchpad.net/ubuntu/+source/netselect/+bug/337377

            – Rinzwind
            Nov 7 '13 at 7:41






          • 8





            This is not the most upvoted, or the best answer any more, check next one

            – ntg
            Jun 10 '15 at 7:54











          • Which answer is the "next one" might have changed.

            – gmatht
            Jan 24 '17 at 4:46











          • apt-spy is gone at debian 9, but netselect-apt is OK

            – netawater
            Nov 21 '17 at 16:05












          • 4





            netselect-apt doesn't seem to be available in Ubuntu 12.04

            – offby1
            Nov 6 '13 at 23:22











          • correct: see here bugs.launchpad.net/ubuntu/+source/netselect/+bug/337377

            – Rinzwind
            Nov 7 '13 at 7:41






          • 8





            This is not the most upvoted, or the best answer any more, check next one

            – ntg
            Jun 10 '15 at 7:54











          • Which answer is the "next one" might have changed.

            – gmatht
            Jan 24 '17 at 4:46











          • apt-spy is gone at debian 9, but netselect-apt is OK

            – netawater
            Nov 21 '17 at 16:05







          4




          4





          netselect-apt doesn't seem to be available in Ubuntu 12.04

          – offby1
          Nov 6 '13 at 23:22





          netselect-apt doesn't seem to be available in Ubuntu 12.04

          – offby1
          Nov 6 '13 at 23:22













          correct: see here bugs.launchpad.net/ubuntu/+source/netselect/+bug/337377

          – Rinzwind
          Nov 7 '13 at 7:41





          correct: see here bugs.launchpad.net/ubuntu/+source/netselect/+bug/337377

          – Rinzwind
          Nov 7 '13 at 7:41




          8




          8





          This is not the most upvoted, or the best answer any more, check next one

          – ntg
          Jun 10 '15 at 7:54





          This is not the most upvoted, or the best answer any more, check next one

          – ntg
          Jun 10 '15 at 7:54













          Which answer is the "next one" might have changed.

          – gmatht
          Jan 24 '17 at 4:46





          Which answer is the "next one" might have changed.

          – gmatht
          Jan 24 '17 at 4:46













          apt-spy is gone at debian 9, but netselect-apt is OK

          – netawater
          Nov 21 '17 at 16:05





          apt-spy is gone at debian 9, but netselect-apt is OK

          – netawater
          Nov 21 '17 at 16:05













          147



















          You don't have to do any searching anymore - as ajmitch has explained, you can use deb mirror to have the best mirror picked for you automatically.




          apt-get now supports a 'mirror' method that will automatically select a good mirror based on your location. Putting:



          deb mirror://mirrors.ubuntu.com/mirrors.txt precise main restricted universe multiverse
          deb mirror://mirrors.ubuntu.com/mirrors.txt precise-updates main restricted universe multiverse
          deb mirror://mirrors.ubuntu.com/mirrors.txt precise-backports main restricted universe multiverse
          deb mirror://mirrors.ubuntu.com/mirrors.txt precise-security main restricted universe multiverse


          on the top in your /etc/apt/sources.list file should be all that is needed to make it automatically pick a mirror for you based on your geographical location.



          Lucid (10.04), Maverick (10.10), Natty (11.04), and Oneiric (11.10) users can replace precise with the appropriate name.







          share|improve this answer



























          • Great tip. Just note that after making the change you need to run sudo apt-get update before doing any apt-get install for it to use your closest mirror.

            – Simon East
            Jun 29 '13 at 17:03






          • 2





            Related: askubuntu.com/q/319433/11244

            – Till
            Jul 18 '13 at 15:45






          • 24





            Nice tip, but unhelpful in my case. It works on geolocation, giving me the local server, which is waaaayy slower where I am. The network temporal distance is the important factor here, not spatial distance.

            – jarondl
            Jul 31 '13 at 8:24






          • 1





            currently broken: bugs.launchpad.net/ubuntu/+source/apt/+bug/1613184

            – marathon
            Aug 31 '17 at 18:34






          • 1





            @marathon fixed at least on 18.04+

            – Pablo A
            Mar 25 at 19:06















          147



















          You don't have to do any searching anymore - as ajmitch has explained, you can use deb mirror to have the best mirror picked for you automatically.




          apt-get now supports a 'mirror' method that will automatically select a good mirror based on your location. Putting:



          deb mirror://mirrors.ubuntu.com/mirrors.txt precise main restricted universe multiverse
          deb mirror://mirrors.ubuntu.com/mirrors.txt precise-updates main restricted universe multiverse
          deb mirror://mirrors.ubuntu.com/mirrors.txt precise-backports main restricted universe multiverse
          deb mirror://mirrors.ubuntu.com/mirrors.txt precise-security main restricted universe multiverse


          on the top in your /etc/apt/sources.list file should be all that is needed to make it automatically pick a mirror for you based on your geographical location.



          Lucid (10.04), Maverick (10.10), Natty (11.04), and Oneiric (11.10) users can replace precise with the appropriate name.







          share|improve this answer



























          • Great tip. Just note that after making the change you need to run sudo apt-get update before doing any apt-get install for it to use your closest mirror.

            – Simon East
            Jun 29 '13 at 17:03






          • 2





            Related: askubuntu.com/q/319433/11244

            – Till
            Jul 18 '13 at 15:45






          • 24





            Nice tip, but unhelpful in my case. It works on geolocation, giving me the local server, which is waaaayy slower where I am. The network temporal distance is the important factor here, not spatial distance.

            – jarondl
            Jul 31 '13 at 8:24






          • 1





            currently broken: bugs.launchpad.net/ubuntu/+source/apt/+bug/1613184

            – marathon
            Aug 31 '17 at 18:34






          • 1





            @marathon fixed at least on 18.04+

            – Pablo A
            Mar 25 at 19:06













          147















          147











          147









          You don't have to do any searching anymore - as ajmitch has explained, you can use deb mirror to have the best mirror picked for you automatically.




          apt-get now supports a 'mirror' method that will automatically select a good mirror based on your location. Putting:



          deb mirror://mirrors.ubuntu.com/mirrors.txt precise main restricted universe multiverse
          deb mirror://mirrors.ubuntu.com/mirrors.txt precise-updates main restricted universe multiverse
          deb mirror://mirrors.ubuntu.com/mirrors.txt precise-backports main restricted universe multiverse
          deb mirror://mirrors.ubuntu.com/mirrors.txt precise-security main restricted universe multiverse


          on the top in your /etc/apt/sources.list file should be all that is needed to make it automatically pick a mirror for you based on your geographical location.



          Lucid (10.04), Maverick (10.10), Natty (11.04), and Oneiric (11.10) users can replace precise with the appropriate name.







          share|improve this answer
















          You don't have to do any searching anymore - as ajmitch has explained, you can use deb mirror to have the best mirror picked for you automatically.




          apt-get now supports a 'mirror' method that will automatically select a good mirror based on your location. Putting:



          deb mirror://mirrors.ubuntu.com/mirrors.txt precise main restricted universe multiverse
          deb mirror://mirrors.ubuntu.com/mirrors.txt precise-updates main restricted universe multiverse
          deb mirror://mirrors.ubuntu.com/mirrors.txt precise-backports main restricted universe multiverse
          deb mirror://mirrors.ubuntu.com/mirrors.txt precise-security main restricted universe multiverse


          on the top in your /etc/apt/sources.list file should be all that is needed to make it automatically pick a mirror for you based on your geographical location.



          Lucid (10.04), Maverick (10.10), Natty (11.04), and Oneiric (11.10) users can replace precise with the appropriate name.








          share|improve this answer















          share|improve this answer




          share|improve this answer








          edited Apr 13 '17 at 12:25









          Community

          1




          1










          answered Oct 23 '10 at 10:31









          badpbadp

          9,59212 gold badges38 silver badges52 bronze badges




          9,59212 gold badges38 silver badges52 bronze badges















          • Great tip. Just note that after making the change you need to run sudo apt-get update before doing any apt-get install for it to use your closest mirror.

            – Simon East
            Jun 29 '13 at 17:03






          • 2





            Related: askubuntu.com/q/319433/11244

            – Till
            Jul 18 '13 at 15:45






          • 24





            Nice tip, but unhelpful in my case. It works on geolocation, giving me the local server, which is waaaayy slower where I am. The network temporal distance is the important factor here, not spatial distance.

            – jarondl
            Jul 31 '13 at 8:24






          • 1





            currently broken: bugs.launchpad.net/ubuntu/+source/apt/+bug/1613184

            – marathon
            Aug 31 '17 at 18:34






          • 1





            @marathon fixed at least on 18.04+

            – Pablo A
            Mar 25 at 19:06

















          • Great tip. Just note that after making the change you need to run sudo apt-get update before doing any apt-get install for it to use your closest mirror.

            – Simon East
            Jun 29 '13 at 17:03






          • 2





            Related: askubuntu.com/q/319433/11244

            – Till
            Jul 18 '13 at 15:45






          • 24





            Nice tip, but unhelpful in my case. It works on geolocation, giving me the local server, which is waaaayy slower where I am. The network temporal distance is the important factor here, not spatial distance.

            – jarondl
            Jul 31 '13 at 8:24






          • 1





            currently broken: bugs.launchpad.net/ubuntu/+source/apt/+bug/1613184

            – marathon
            Aug 31 '17 at 18:34






          • 1





            @marathon fixed at least on 18.04+

            – Pablo A
            Mar 25 at 19:06
















          Great tip. Just note that after making the change you need to run sudo apt-get update before doing any apt-get install for it to use your closest mirror.

          – Simon East
          Jun 29 '13 at 17:03





          Great tip. Just note that after making the change you need to run sudo apt-get update before doing any apt-get install for it to use your closest mirror.

          – Simon East
          Jun 29 '13 at 17:03




          2




          2





          Related: askubuntu.com/q/319433/11244

          – Till
          Jul 18 '13 at 15:45





          Related: askubuntu.com/q/319433/11244

          – Till
          Jul 18 '13 at 15:45




          24




          24





          Nice tip, but unhelpful in my case. It works on geolocation, giving me the local server, which is waaaayy slower where I am. The network temporal distance is the important factor here, not spatial distance.

          – jarondl
          Jul 31 '13 at 8:24





          Nice tip, but unhelpful in my case. It works on geolocation, giving me the local server, which is waaaayy slower where I am. The network temporal distance is the important factor here, not spatial distance.

          – jarondl
          Jul 31 '13 at 8:24




          1




          1





          currently broken: bugs.launchpad.net/ubuntu/+source/apt/+bug/1613184

          – marathon
          Aug 31 '17 at 18:34





          currently broken: bugs.launchpad.net/ubuntu/+source/apt/+bug/1613184

          – marathon
          Aug 31 '17 at 18:34




          1




          1





          @marathon fixed at least on 18.04+

          – Pablo A
          Mar 25 at 19:06





          @marathon fixed at least on 18.04+

          – Pablo A
          Mar 25 at 19:06











          49



















          Here's one way that will always work, using good old netselect and some grep magic:



          The terminal-addict's "find best server" hack!



          • Download and dpkg -i netselect for your architecture from the Debian website. (it's about 125 KB, no dependencies)


          • Find the fastest Ubuntu mirrors from your location, either up-to-date or at most six hours behind with this (I'll explain it below, sorry it doesn't split up nicely in Markdown)



            sudo netselect -v -s10 -t20 `wget -q -O- https://launchpad.net/ubuntu/+archivemirrors | grep -P -B8 "statusUP|statusSIX" | grep -o -P "(f|ht)tp://[^"]*"`



          • netselect:




            1. -v makes it a little verbose -- you want to see progress dots and messages telling you different mirrors mapping to the same IP were merged :)


            2. -sN controls how many mirrors you want at the end (e.g. top 10 mirrors)


            3. -tN is how long each mirror is speed-tested (default is 10; the higher the number, the longer it takes but the more reliable the results.)



          • This is the backquotes stuff (don't paste, just for explanation)




            wget -q -O- https://launchpad.net/ubuntu/+archivemirrors
            | grep -P -B8 "status(UP|SIX)"
            | grep -o -P "(f|ht)tp://[^"]*"



            1. wget pulls the latest mirror status from https://launchpad.net/ubuntu/+archivemirrors.

            2. The first grep extracts mirrors that are up-to-date or six-hours behind, along with 8 lines of previous context which includes the actual ftp/http URLs

            3. The second grep extracts these ftp/http URLs



          • Here's a sample output from California, USA:




            60 ftp://mirrors.se.eu.kernel.org/ubuntu/
            70 http://ubuntu.alex-vichev.info/
            77 http://ftp.citylink.co.nz/ubuntu/
            279 http://ubuntu.mirrors.tds.net/pub/ubuntu/
            294 http://mirror.umd.edu/ubuntu/
            332 http://mirrors.rit.edu/ubuntu/
            364 ftp://pf.archive.ubuntu.com/ubuntu/
            378 http://mirror.csclub.uwaterloo.ca/ubuntu/
            399 ftp://ubuntu.mirror.frontiernet.net/ubuntu/
            455 http://ubuntu.mirror.root.lu/ubuntu/


            • The "ranks" are an arbitrary metric; lower is usually better.

            • If you're wondering why the kernel.org Sweden-EU mirror and an NZ mirror are in the top three from California, well, so am I ;-) The truth is that netselect doesn't always choose the most appropriate URL to display when multiple mirrors map to a single IP; number 3 is also known as nz.archive.ubuntu.com!






          share|improve this answer






















          • 9





            netselect picks mirrors that have low udp or icmp latency. It doesn't necessarily pick mirrors that can give more bandwidth.

            – Tobu
            Oct 13 '13 at 19:40











          • @pix I approved your edit, but it's not command substitution that results in newlines being replaced. It's the subsequent field splitting that removed the newlines. Command substitution only removes trailing newlines.

            – muru
            Feb 21 '17 at 9:23















          49



















          Here's one way that will always work, using good old netselect and some grep magic:



          The terminal-addict's "find best server" hack!



          • Download and dpkg -i netselect for your architecture from the Debian website. (it's about 125 KB, no dependencies)


          • Find the fastest Ubuntu mirrors from your location, either up-to-date or at most six hours behind with this (I'll explain it below, sorry it doesn't split up nicely in Markdown)



            sudo netselect -v -s10 -t20 `wget -q -O- https://launchpad.net/ubuntu/+archivemirrors | grep -P -B8 "statusUP|statusSIX" | grep -o -P "(f|ht)tp://[^"]*"`



          • netselect:




            1. -v makes it a little verbose -- you want to see progress dots and messages telling you different mirrors mapping to the same IP were merged :)


            2. -sN controls how many mirrors you want at the end (e.g. top 10 mirrors)


            3. -tN is how long each mirror is speed-tested (default is 10; the higher the number, the longer it takes but the more reliable the results.)



          • This is the backquotes stuff (don't paste, just for explanation)




            wget -q -O- https://launchpad.net/ubuntu/+archivemirrors
            | grep -P -B8 "status(UP|SIX)"
            | grep -o -P "(f|ht)tp://[^"]*"



            1. wget pulls the latest mirror status from https://launchpad.net/ubuntu/+archivemirrors.

            2. The first grep extracts mirrors that are up-to-date or six-hours behind, along with 8 lines of previous context which includes the actual ftp/http URLs

            3. The second grep extracts these ftp/http URLs



          • Here's a sample output from California, USA:




            60 ftp://mirrors.se.eu.kernel.org/ubuntu/
            70 http://ubuntu.alex-vichev.info/
            77 http://ftp.citylink.co.nz/ubuntu/
            279 http://ubuntu.mirrors.tds.net/pub/ubuntu/
            294 http://mirror.umd.edu/ubuntu/
            332 http://mirrors.rit.edu/ubuntu/
            364 ftp://pf.archive.ubuntu.com/ubuntu/
            378 http://mirror.csclub.uwaterloo.ca/ubuntu/
            399 ftp://ubuntu.mirror.frontiernet.net/ubuntu/
            455 http://ubuntu.mirror.root.lu/ubuntu/


            • The "ranks" are an arbitrary metric; lower is usually better.

            • If you're wondering why the kernel.org Sweden-EU mirror and an NZ mirror are in the top three from California, well, so am I ;-) The truth is that netselect doesn't always choose the most appropriate URL to display when multiple mirrors map to a single IP; number 3 is also known as nz.archive.ubuntu.com!






          share|improve this answer






















          • 9





            netselect picks mirrors that have low udp or icmp latency. It doesn't necessarily pick mirrors that can give more bandwidth.

            – Tobu
            Oct 13 '13 at 19:40











          • @pix I approved your edit, but it's not command substitution that results in newlines being replaced. It's the subsequent field splitting that removed the newlines. Command substitution only removes trailing newlines.

            – muru
            Feb 21 '17 at 9:23













          49















          49











          49









          Here's one way that will always work, using good old netselect and some grep magic:



          The terminal-addict's "find best server" hack!



          • Download and dpkg -i netselect for your architecture from the Debian website. (it's about 125 KB, no dependencies)


          • Find the fastest Ubuntu mirrors from your location, either up-to-date or at most six hours behind with this (I'll explain it below, sorry it doesn't split up nicely in Markdown)



            sudo netselect -v -s10 -t20 `wget -q -O- https://launchpad.net/ubuntu/+archivemirrors | grep -P -B8 "statusUP|statusSIX" | grep -o -P "(f|ht)tp://[^"]*"`



          • netselect:




            1. -v makes it a little verbose -- you want to see progress dots and messages telling you different mirrors mapping to the same IP were merged :)


            2. -sN controls how many mirrors you want at the end (e.g. top 10 mirrors)


            3. -tN is how long each mirror is speed-tested (default is 10; the higher the number, the longer it takes but the more reliable the results.)



          • This is the backquotes stuff (don't paste, just for explanation)




            wget -q -O- https://launchpad.net/ubuntu/+archivemirrors
            | grep -P -B8 "status(UP|SIX)"
            | grep -o -P "(f|ht)tp://[^"]*"



            1. wget pulls the latest mirror status from https://launchpad.net/ubuntu/+archivemirrors.

            2. The first grep extracts mirrors that are up-to-date or six-hours behind, along with 8 lines of previous context which includes the actual ftp/http URLs

            3. The second grep extracts these ftp/http URLs



          • Here's a sample output from California, USA:




            60 ftp://mirrors.se.eu.kernel.org/ubuntu/
            70 http://ubuntu.alex-vichev.info/
            77 http://ftp.citylink.co.nz/ubuntu/
            279 http://ubuntu.mirrors.tds.net/pub/ubuntu/
            294 http://mirror.umd.edu/ubuntu/
            332 http://mirrors.rit.edu/ubuntu/
            364 ftp://pf.archive.ubuntu.com/ubuntu/
            378 http://mirror.csclub.uwaterloo.ca/ubuntu/
            399 ftp://ubuntu.mirror.frontiernet.net/ubuntu/
            455 http://ubuntu.mirror.root.lu/ubuntu/


            • The "ranks" are an arbitrary metric; lower is usually better.

            • If you're wondering why the kernel.org Sweden-EU mirror and an NZ mirror are in the top three from California, well, so am I ;-) The truth is that netselect doesn't always choose the most appropriate URL to display when multiple mirrors map to a single IP; number 3 is also known as nz.archive.ubuntu.com!






          share|improve this answer
















          Here's one way that will always work, using good old netselect and some grep magic:



          The terminal-addict's "find best server" hack!



          • Download and dpkg -i netselect for your architecture from the Debian website. (it's about 125 KB, no dependencies)


          • Find the fastest Ubuntu mirrors from your location, either up-to-date or at most six hours behind with this (I'll explain it below, sorry it doesn't split up nicely in Markdown)



            sudo netselect -v -s10 -t20 `wget -q -O- https://launchpad.net/ubuntu/+archivemirrors | grep -P -B8 "statusUP|statusSIX" | grep -o -P "(f|ht)tp://[^"]*"`



          • netselect:




            1. -v makes it a little verbose -- you want to see progress dots and messages telling you different mirrors mapping to the same IP were merged :)


            2. -sN controls how many mirrors you want at the end (e.g. top 10 mirrors)


            3. -tN is how long each mirror is speed-tested (default is 10; the higher the number, the longer it takes but the more reliable the results.)



          • This is the backquotes stuff (don't paste, just for explanation)




            wget -q -O- https://launchpad.net/ubuntu/+archivemirrors
            | grep -P -B8 "status(UP|SIX)"
            | grep -o -P "(f|ht)tp://[^"]*"



            1. wget pulls the latest mirror status from https://launchpad.net/ubuntu/+archivemirrors.

            2. The first grep extracts mirrors that are up-to-date or six-hours behind, along with 8 lines of previous context which includes the actual ftp/http URLs

            3. The second grep extracts these ftp/http URLs



          • Here's a sample output from California, USA:




            60 ftp://mirrors.se.eu.kernel.org/ubuntu/
            70 http://ubuntu.alex-vichev.info/
            77 http://ftp.citylink.co.nz/ubuntu/
            279 http://ubuntu.mirrors.tds.net/pub/ubuntu/
            294 http://mirror.umd.edu/ubuntu/
            332 http://mirrors.rit.edu/ubuntu/
            364 ftp://pf.archive.ubuntu.com/ubuntu/
            378 http://mirror.csclub.uwaterloo.ca/ubuntu/
            399 ftp://ubuntu.mirror.frontiernet.net/ubuntu/
            455 http://ubuntu.mirror.root.lu/ubuntu/


            • The "ranks" are an arbitrary metric; lower is usually better.

            • If you're wondering why the kernel.org Sweden-EU mirror and an NZ mirror are in the top three from California, well, so am I ;-) The truth is that netselect doesn't always choose the most appropriate URL to display when multiple mirrors map to a single IP; number 3 is also known as nz.archive.ubuntu.com!







          share|improve this answer















          share|improve this answer




          share|improve this answer








          edited Feb 21 '17 at 9:16









          pix

          4933 silver badges11 bronze badges




          4933 silver badges11 bronze badges










          answered May 24 '12 at 6:45









          ishish

          123k35 gold badges281 silver badges299 bronze badges




          123k35 gold badges281 silver badges299 bronze badges










          • 9





            netselect picks mirrors that have low udp or icmp latency. It doesn't necessarily pick mirrors that can give more bandwidth.

            – Tobu
            Oct 13 '13 at 19:40











          • @pix I approved your edit, but it's not command substitution that results in newlines being replaced. It's the subsequent field splitting that removed the newlines. Command substitution only removes trailing newlines.

            – muru
            Feb 21 '17 at 9:23












          • 9





            netselect picks mirrors that have low udp or icmp latency. It doesn't necessarily pick mirrors that can give more bandwidth.

            – Tobu
            Oct 13 '13 at 19:40











          • @pix I approved your edit, but it's not command substitution that results in newlines being replaced. It's the subsequent field splitting that removed the newlines. Command substitution only removes trailing newlines.

            – muru
            Feb 21 '17 at 9:23







          9




          9





          netselect picks mirrors that have low udp or icmp latency. It doesn't necessarily pick mirrors that can give more bandwidth.

          – Tobu
          Oct 13 '13 at 19:40





          netselect picks mirrors that have low udp or icmp latency. It doesn't necessarily pick mirrors that can give more bandwidth.

          – Tobu
          Oct 13 '13 at 19:40













          @pix I approved your edit, but it's not command substitution that results in newlines being replaced. It's the subsequent field splitting that removed the newlines. Command substitution only removes trailing newlines.

          – muru
          Feb 21 '17 at 9:23





          @pix I approved your edit, but it's not command substitution that results in newlines being replaced. It's the subsequent field splitting that removed the newlines. Command substitution only removes trailing newlines.

          – muru
          Feb 21 '17 at 9:23











          25



















          Oneliner that select best (by download speed) mirror based on mirrors.ubuntu.com for yours ip.



          curl -s http://mirrors.ubuntu.com/mirrors.txt | xargs -n1 -I sh -c 'echo `curl -r 0-102400 -s -w %speed_download -o /dev/null /ls-lR.gz` ' |sort -g -r |head -1| awk ' print $2 '





          share|improve this answer




















          • 2





            To have more options replace at the end: sort -gr | head -3.

            – Pablo A
            Mar 4 '17 at 1:55






          • 1





            Currently, curl -s http://mirrors.ubuntu.com/mirrors.txt returns only one line: http://archive.ubuntu.com/ubuntu/ which defeats the purpose of choosing among several. :-/

            – Stéphane Gourichon
            Jun 26 '17 at 13:35











          • yes, so this method is NG.

            – netawater
            Nov 18 '17 at 4:58











          • I found the curl part of this answer helpful because curl -r 0-102400 -o /dev/null [server_url]/ls-lR.gz where [server_url] is the base mirror URL listed in mirrors.txt, allows a speed comparison of the first ~100K of the index file from the mirror.

            – jamesc
            Mar 12 '18 at 12:57











          • This tests transfer speed, which is definitely an improvement over netselect. It's only downloading 10k from each server, which may not be a great representation of steady transfer speed on faster connections, though. Increase that 102400 to test with a larger download

            – Phil Miller
            Jun 8 '18 at 21:41















          25



















          Oneliner that select best (by download speed) mirror based on mirrors.ubuntu.com for yours ip.



          curl -s http://mirrors.ubuntu.com/mirrors.txt | xargs -n1 -I sh -c 'echo `curl -r 0-102400 -s -w %speed_download -o /dev/null /ls-lR.gz` ' |sort -g -r |head -1| awk ' print $2 '





          share|improve this answer




















          • 2





            To have more options replace at the end: sort -gr | head -3.

            – Pablo A
            Mar 4 '17 at 1:55






          • 1





            Currently, curl -s http://mirrors.ubuntu.com/mirrors.txt returns only one line: http://archive.ubuntu.com/ubuntu/ which defeats the purpose of choosing among several. :-/

            – Stéphane Gourichon
            Jun 26 '17 at 13:35











          • yes, so this method is NG.

            – netawater
            Nov 18 '17 at 4:58











          • I found the curl part of this answer helpful because curl -r 0-102400 -o /dev/null [server_url]/ls-lR.gz where [server_url] is the base mirror URL listed in mirrors.txt, allows a speed comparison of the first ~100K of the index file from the mirror.

            – jamesc
            Mar 12 '18 at 12:57











          • This tests transfer speed, which is definitely an improvement over netselect. It's only downloading 10k from each server, which may not be a great representation of steady transfer speed on faster connections, though. Increase that 102400 to test with a larger download

            – Phil Miller
            Jun 8 '18 at 21:41













          25















          25











          25









          Oneliner that select best (by download speed) mirror based on mirrors.ubuntu.com for yours ip.



          curl -s http://mirrors.ubuntu.com/mirrors.txt | xargs -n1 -I sh -c 'echo `curl -r 0-102400 -s -w %speed_download -o /dev/null /ls-lR.gz` ' |sort -g -r |head -1| awk ' print $2 '





          share|improve this answer














          Oneliner that select best (by download speed) mirror based on mirrors.ubuntu.com for yours ip.



          curl -s http://mirrors.ubuntu.com/mirrors.txt | xargs -n1 -I sh -c 'echo `curl -r 0-102400 -s -w %speed_download -o /dev/null /ls-lR.gz` ' |sort -g -r |head -1| awk ' print $2 '






          share|improve this answer













          share|improve this answer




          share|improve this answer










          answered Jan 10 '16 at 19:40









          KAndyKAndy

          3513 silver badges3 bronze badges




          3513 silver badges3 bronze badges










          • 2





            To have more options replace at the end: sort -gr | head -3.

            – Pablo A
            Mar 4 '17 at 1:55






          • 1





            Currently, curl -s http://mirrors.ubuntu.com/mirrors.txt returns only one line: http://archive.ubuntu.com/ubuntu/ which defeats the purpose of choosing among several. :-/

            – Stéphane Gourichon
            Jun 26 '17 at 13:35











          • yes, so this method is NG.

            – netawater
            Nov 18 '17 at 4:58











          • I found the curl part of this answer helpful because curl -r 0-102400 -o /dev/null [server_url]/ls-lR.gz where [server_url] is the base mirror URL listed in mirrors.txt, allows a speed comparison of the first ~100K of the index file from the mirror.

            – jamesc
            Mar 12 '18 at 12:57











          • This tests transfer speed, which is definitely an improvement over netselect. It's only downloading 10k from each server, which may not be a great representation of steady transfer speed on faster connections, though. Increase that 102400 to test with a larger download

            – Phil Miller
            Jun 8 '18 at 21:41












          • 2





            To have more options replace at the end: sort -gr | head -3.

            – Pablo A
            Mar 4 '17 at 1:55






          • 1





            Currently, curl -s http://mirrors.ubuntu.com/mirrors.txt returns only one line: http://archive.ubuntu.com/ubuntu/ which defeats the purpose of choosing among several. :-/

            – Stéphane Gourichon
            Jun 26 '17 at 13:35











          • yes, so this method is NG.

            – netawater
            Nov 18 '17 at 4:58











          • I found the curl part of this answer helpful because curl -r 0-102400 -o /dev/null [server_url]/ls-lR.gz where [server_url] is the base mirror URL listed in mirrors.txt, allows a speed comparison of the first ~100K of the index file from the mirror.

            – jamesc
            Mar 12 '18 at 12:57











          • This tests transfer speed, which is definitely an improvement over netselect. It's only downloading 10k from each server, which may not be a great representation of steady transfer speed on faster connections, though. Increase that 102400 to test with a larger download

            – Phil Miller
            Jun 8 '18 at 21:41







          2




          2





          To have more options replace at the end: sort -gr | head -3.

          – Pablo A
          Mar 4 '17 at 1:55





          To have more options replace at the end: sort -gr | head -3.

          – Pablo A
          Mar 4 '17 at 1:55




          1




          1





          Currently, curl -s http://mirrors.ubuntu.com/mirrors.txt returns only one line: http://archive.ubuntu.com/ubuntu/ which defeats the purpose of choosing among several. :-/

          – Stéphane Gourichon
          Jun 26 '17 at 13:35





          Currently, curl -s http://mirrors.ubuntu.com/mirrors.txt returns only one line: http://archive.ubuntu.com/ubuntu/ which defeats the purpose of choosing among several. :-/

          – Stéphane Gourichon
          Jun 26 '17 at 13:35













          yes, so this method is NG.

          – netawater
          Nov 18 '17 at 4:58





          yes, so this method is NG.

          – netawater
          Nov 18 '17 at 4:58













          I found the curl part of this answer helpful because curl -r 0-102400 -o /dev/null [server_url]/ls-lR.gz where [server_url] is the base mirror URL listed in mirrors.txt, allows a speed comparison of the first ~100K of the index file from the mirror.

          – jamesc
          Mar 12 '18 at 12:57





          I found the curl part of this answer helpful because curl -r 0-102400 -o /dev/null [server_url]/ls-lR.gz where [server_url] is the base mirror URL listed in mirrors.txt, allows a speed comparison of the first ~100K of the index file from the mirror.

          – jamesc
          Mar 12 '18 at 12:57













          This tests transfer speed, which is definitely an improvement over netselect. It's only downloading 10k from each server, which may not be a great representation of steady transfer speed on faster connections, though. Increase that 102400 to test with a larger download

          – Phil Miller
          Jun 8 '18 at 21:41





          This tests transfer speed, which is definitely an improvement over netselect. It's only downloading 10k from each server, which may not be a great representation of steady transfer speed on faster connections, though. Increase that 102400 to test with a larger download

          – Phil Miller
          Jun 8 '18 at 21:41











          17



















          Here is a Python script I wrote that finds mirrors with the lowest TCP latency.



          The script also provides bandwidth and status data taken from launchpad, and will generate a new sources.list file automatically or using a mirror chosen from a list.



          A usage example that lets you choose from 5 US mirrors with the lowest latency to your machine:



          $ apt-select --country US -t 5 --choose





          share|improve this answer






















          • 5





            I want to let you know that I've made a debian package with your script that is ready to be used in a very easy and straightforward way: github.com/brodock/apt-select/releases/tag/0.1.0

            – Gabriel Mazetto
            Nov 3 '15 at 4:25











          • this is a perfect solution, as I've tried the other methods. to make noob friendly, I've written a post detailing this method:. blog.kmonsoor.com/…

            – kmonsoor
            Oct 11 '16 at 19:14











          • This is great, since netselect isn't available in newer versions of Ubuntu

            – Tek
            Feb 18 '18 at 7:23











          • Please show how to use it in your post

            – Jonathan
            Oct 31 '18 at 6:21











          • @Jonathan done. Full usage is in the README at the first link.

            – John B
            Nov 1 '18 at 0:07















          17



















          Here is a Python script I wrote that finds mirrors with the lowest TCP latency.



          The script also provides bandwidth and status data taken from launchpad, and will generate a new sources.list file automatically or using a mirror chosen from a list.



          A usage example that lets you choose from 5 US mirrors with the lowest latency to your machine:



          $ apt-select --country US -t 5 --choose





          share|improve this answer






















          • 5





            I want to let you know that I've made a debian package with your script that is ready to be used in a very easy and straightforward way: github.com/brodock/apt-select/releases/tag/0.1.0

            – Gabriel Mazetto
            Nov 3 '15 at 4:25











          • this is a perfect solution, as I've tried the other methods. to make noob friendly, I've written a post detailing this method:. blog.kmonsoor.com/…

            – kmonsoor
            Oct 11 '16 at 19:14











          • This is great, since netselect isn't available in newer versions of Ubuntu

            – Tek
            Feb 18 '18 at 7:23











          • Please show how to use it in your post

            – Jonathan
            Oct 31 '18 at 6:21











          • @Jonathan done. Full usage is in the README at the first link.

            – John B
            Nov 1 '18 at 0:07













          17















          17











          17









          Here is a Python script I wrote that finds mirrors with the lowest TCP latency.



          The script also provides bandwidth and status data taken from launchpad, and will generate a new sources.list file automatically or using a mirror chosen from a list.



          A usage example that lets you choose from 5 US mirrors with the lowest latency to your machine:



          $ apt-select --country US -t 5 --choose





          share|improve this answer
















          Here is a Python script I wrote that finds mirrors with the lowest TCP latency.



          The script also provides bandwidth and status data taken from launchpad, and will generate a new sources.list file automatically or using a mirror chosen from a list.



          A usage example that lets you choose from 5 US mirrors with the lowest latency to your machine:



          $ apt-select --country US -t 5 --choose






          share|improve this answer















          share|improve this answer




          share|improve this answer








          edited Nov 16 '18 at 13:41









          N0rbert

          36.5k10 gold badges86 silver badges170 bronze badges




          36.5k10 gold badges86 silver badges170 bronze badges










          answered Jun 10 '14 at 23:58









          John BJohn B

          4666 silver badges8 bronze badges




          4666 silver badges8 bronze badges










          • 5





            I want to let you know that I've made a debian package with your script that is ready to be used in a very easy and straightforward way: github.com/brodock/apt-select/releases/tag/0.1.0

            – Gabriel Mazetto
            Nov 3 '15 at 4:25











          • this is a perfect solution, as I've tried the other methods. to make noob friendly, I've written a post detailing this method:. blog.kmonsoor.com/…

            – kmonsoor
            Oct 11 '16 at 19:14











          • This is great, since netselect isn't available in newer versions of Ubuntu

            – Tek
            Feb 18 '18 at 7:23











          • Please show how to use it in your post

            – Jonathan
            Oct 31 '18 at 6:21











          • @Jonathan done. Full usage is in the README at the first link.

            – John B
            Nov 1 '18 at 0:07












          • 5





            I want to let you know that I've made a debian package with your script that is ready to be used in a very easy and straightforward way: github.com/brodock/apt-select/releases/tag/0.1.0

            – Gabriel Mazetto
            Nov 3 '15 at 4:25











          • this is a perfect solution, as I've tried the other methods. to make noob friendly, I've written a post detailing this method:. blog.kmonsoor.com/…

            – kmonsoor
            Oct 11 '16 at 19:14











          • This is great, since netselect isn't available in newer versions of Ubuntu

            – Tek
            Feb 18 '18 at 7:23











          • Please show how to use it in your post

            – Jonathan
            Oct 31 '18 at 6:21











          • @Jonathan done. Full usage is in the README at the first link.

            – John B
            Nov 1 '18 at 0:07







          5




          5





          I want to let you know that I've made a debian package with your script that is ready to be used in a very easy and straightforward way: github.com/brodock/apt-select/releases/tag/0.1.0

          – Gabriel Mazetto
          Nov 3 '15 at 4:25





          I want to let you know that I've made a debian package with your script that is ready to be used in a very easy and straightforward way: github.com/brodock/apt-select/releases/tag/0.1.0

          – Gabriel Mazetto
          Nov 3 '15 at 4:25













          this is a perfect solution, as I've tried the other methods. to make noob friendly, I've written a post detailing this method:. blog.kmonsoor.com/…

          – kmonsoor
          Oct 11 '16 at 19:14





          this is a perfect solution, as I've tried the other methods. to make noob friendly, I've written a post detailing this method:. blog.kmonsoor.com/…

          – kmonsoor
          Oct 11 '16 at 19:14













          This is great, since netselect isn't available in newer versions of Ubuntu

          – Tek
          Feb 18 '18 at 7:23





          This is great, since netselect isn't available in newer versions of Ubuntu

          – Tek
          Feb 18 '18 at 7:23













          Please show how to use it in your post

          – Jonathan
          Oct 31 '18 at 6:21





          Please show how to use it in your post

          – Jonathan
          Oct 31 '18 at 6:21













          @Jonathan done. Full usage is in the README at the first link.

          – John B
          Nov 1 '18 at 0:07





          @Jonathan done. Full usage is in the README at the first link.

          – John B
          Nov 1 '18 at 0:07











          5



















          I developed a simple ping-based nodejs script that tests the servers listed on mirrors.ubuntu.com/mirrors.txt and returns the fastest one:



          sudo npm install -g ffum
          ffum


          Please let me know if you find it useful or have any suggestions (=






          share|improve this answer



























          • ffum does not work: Connection error.

            – James Fu
            Jul 10 '13 at 8:48












          • It doesn't work: Empty output.

            – Juan Simón
            Aug 27 '13 at 1:06











          • git clone the repo and run node ffum

            – Michael
            Aug 7 '14 at 3:58











          • Awesome, works for me! I had a bug where it was looking for node instead of nodejs... also would be cool to have some verbose of each tested archive speed.

            – tweak2
            Aug 27 '14 at 16:57















          5



















          I developed a simple ping-based nodejs script that tests the servers listed on mirrors.ubuntu.com/mirrors.txt and returns the fastest one:



          sudo npm install -g ffum
          ffum


          Please let me know if you find it useful or have any suggestions (=






          share|improve this answer



























          • ffum does not work: Connection error.

            – James Fu
            Jul 10 '13 at 8:48












          • It doesn't work: Empty output.

            – Juan Simón
            Aug 27 '13 at 1:06











          • git clone the repo and run node ffum

            – Michael
            Aug 7 '14 at 3:58











          • Awesome, works for me! I had a bug where it was looking for node instead of nodejs... also would be cool to have some verbose of each tested archive speed.

            – tweak2
            Aug 27 '14 at 16:57













          5















          5











          5









          I developed a simple ping-based nodejs script that tests the servers listed on mirrors.ubuntu.com/mirrors.txt and returns the fastest one:



          sudo npm install -g ffum
          ffum


          Please let me know if you find it useful or have any suggestions (=






          share|improve this answer
















          I developed a simple ping-based nodejs script that tests the servers listed on mirrors.ubuntu.com/mirrors.txt and returns the fastest one:



          sudo npm install -g ffum
          ffum


          Please let me know if you find it useful or have any suggestions (=







          share|improve this answer















          share|improve this answer




          share|improve this answer








          edited May 14 '13 at 17:00









          Jorge Castro

          61.6k110 gold badges430 silver badges624 bronze badges




          61.6k110 gold badges430 silver badges624 bronze badges










          answered May 14 '13 at 16:56









          tentaculotentaculo

          591 silver badge1 bronze badge




          591 silver badge1 bronze badge















          • ffum does not work: Connection error.

            – James Fu
            Jul 10 '13 at 8:48












          • It doesn't work: Empty output.

            – Juan Simón
            Aug 27 '13 at 1:06











          • git clone the repo and run node ffum

            – Michael
            Aug 7 '14 at 3:58











          • Awesome, works for me! I had a bug where it was looking for node instead of nodejs... also would be cool to have some verbose of each tested archive speed.

            – tweak2
            Aug 27 '14 at 16:57

















          • ffum does not work: Connection error.

            – James Fu
            Jul 10 '13 at 8:48












          • It doesn't work: Empty output.

            – Juan Simón
            Aug 27 '13 at 1:06











          • git clone the repo and run node ffum

            – Michael
            Aug 7 '14 at 3:58











          • Awesome, works for me! I had a bug where it was looking for node instead of nodejs... also would be cool to have some verbose of each tested archive speed.

            – tweak2
            Aug 27 '14 at 16:57
















          ffum does not work: Connection error.

          – James Fu
          Jul 10 '13 at 8:48






          ffum does not work: Connection error.

          – James Fu
          Jul 10 '13 at 8:48














          It doesn't work: Empty output.

          – Juan Simón
          Aug 27 '13 at 1:06





          It doesn't work: Empty output.

          – Juan Simón
          Aug 27 '13 at 1:06













          git clone the repo and run node ffum

          – Michael
          Aug 7 '14 at 3:58





          git clone the repo and run node ffum

          – Michael
          Aug 7 '14 at 3:58













          Awesome, works for me! I had a bug where it was looking for node instead of nodejs... also would be cool to have some verbose of each tested archive speed.

          – tweak2
          Aug 27 '14 at 16:57





          Awesome, works for me! I had a bug where it was looking for node instead of nodejs... also would be cool to have some verbose of each tested archive speed.

          – tweak2
          Aug 27 '14 at 16:57











          4



















          I know this doesn't directly answer the OP's question, but there's a button in the desktop/GUI version of Ubuntu that finds the best mirror for you. It seemed to work pretty well, so I looked into it briefly, but didn't have time to follow up.



          The reason I bring it up is because I think it would be pretty straight forward and usable to make it into a command line utility.



          If anyone is interested, the test seems to be located in:



          /usr/lib/python3/dist-packages/softwareproperties/MirrorTest.py


          Again, that's about as far as I got, but I figured I'd leave this here in case anyone wanted it. I'll probably pick back up on it when I have a little more time.






          share|improve this answer

























          • On 18.04, this script detects when it is invoked as an application (as main) from a terminal....and just prints its results to the terminal. Make sure to give it enough time to complete. $ python3 /usr/lib/python3/dist-packages/softwareproperties/MirrorTest.py >> [top 5 omitted] and the winner is: ny-mirrors.evowise.com

            – PatKilg
            Jun 9 '18 at 18:07












          • Sadly it doesn't work correctly. This script takes the 5 servers with lowest ping, then score them by bandwidth by downloading a ~1M file (Packages.gz in main from your dist). If you modify the script to increase it to 25 servers and download a 500M file you get completely different results, which are correct this time.

            – Jocelyn
            Feb 16 at 11:20















          4



















          I know this doesn't directly answer the OP's question, but there's a button in the desktop/GUI version of Ubuntu that finds the best mirror for you. It seemed to work pretty well, so I looked into it briefly, but didn't have time to follow up.



          The reason I bring it up is because I think it would be pretty straight forward and usable to make it into a command line utility.



          If anyone is interested, the test seems to be located in:



          /usr/lib/python3/dist-packages/softwareproperties/MirrorTest.py


          Again, that's about as far as I got, but I figured I'd leave this here in case anyone wanted it. I'll probably pick back up on it when I have a little more time.






          share|improve this answer

























          • On 18.04, this script detects when it is invoked as an application (as main) from a terminal....and just prints its results to the terminal. Make sure to give it enough time to complete. $ python3 /usr/lib/python3/dist-packages/softwareproperties/MirrorTest.py >> [top 5 omitted] and the winner is: ny-mirrors.evowise.com

            – PatKilg
            Jun 9 '18 at 18:07












          • Sadly it doesn't work correctly. This script takes the 5 servers with lowest ping, then score them by bandwidth by downloading a ~1M file (Packages.gz in main from your dist). If you modify the script to increase it to 25 servers and download a 500M file you get completely different results, which are correct this time.

            – Jocelyn
            Feb 16 at 11:20













          4















          4











          4









          I know this doesn't directly answer the OP's question, but there's a button in the desktop/GUI version of Ubuntu that finds the best mirror for you. It seemed to work pretty well, so I looked into it briefly, but didn't have time to follow up.



          The reason I bring it up is because I think it would be pretty straight forward and usable to make it into a command line utility.



          If anyone is interested, the test seems to be located in:



          /usr/lib/python3/dist-packages/softwareproperties/MirrorTest.py


          Again, that's about as far as I got, but I figured I'd leave this here in case anyone wanted it. I'll probably pick back up on it when I have a little more time.






          share|improve this answer














          I know this doesn't directly answer the OP's question, but there's a button in the desktop/GUI version of Ubuntu that finds the best mirror for you. It seemed to work pretty well, so I looked into it briefly, but didn't have time to follow up.



          The reason I bring it up is because I think it would be pretty straight forward and usable to make it into a command line utility.



          If anyone is interested, the test seems to be located in:



          /usr/lib/python3/dist-packages/softwareproperties/MirrorTest.py


          Again, that's about as far as I got, but I figured I'd leave this here in case anyone wanted it. I'll probably pick back up on it when I have a little more time.







          share|improve this answer













          share|improve this answer




          share|improve this answer










          answered Oct 29 '16 at 21:35









          copeland3300copeland3300

          1412 bronze badges




          1412 bronze badges















          • On 18.04, this script detects when it is invoked as an application (as main) from a terminal....and just prints its results to the terminal. Make sure to give it enough time to complete. $ python3 /usr/lib/python3/dist-packages/softwareproperties/MirrorTest.py >> [top 5 omitted] and the winner is: ny-mirrors.evowise.com

            – PatKilg
            Jun 9 '18 at 18:07












          • Sadly it doesn't work correctly. This script takes the 5 servers with lowest ping, then score them by bandwidth by downloading a ~1M file (Packages.gz in main from your dist). If you modify the script to increase it to 25 servers and download a 500M file you get completely different results, which are correct this time.

            – Jocelyn
            Feb 16 at 11:20

















          • On 18.04, this script detects when it is invoked as an application (as main) from a terminal....and just prints its results to the terminal. Make sure to give it enough time to complete. $ python3 /usr/lib/python3/dist-packages/softwareproperties/MirrorTest.py >> [top 5 omitted] and the winner is: ny-mirrors.evowise.com

            – PatKilg
            Jun 9 '18 at 18:07












          • Sadly it doesn't work correctly. This script takes the 5 servers with lowest ping, then score them by bandwidth by downloading a ~1M file (Packages.gz in main from your dist). If you modify the script to increase it to 25 servers and download a 500M file you get completely different results, which are correct this time.

            – Jocelyn
            Feb 16 at 11:20
















          On 18.04, this script detects when it is invoked as an application (as main) from a terminal....and just prints its results to the terminal. Make sure to give it enough time to complete. $ python3 /usr/lib/python3/dist-packages/softwareproperties/MirrorTest.py >> [top 5 omitted] and the winner is: ny-mirrors.evowise.com

          – PatKilg
          Jun 9 '18 at 18:07






          On 18.04, this script detects when it is invoked as an application (as main) from a terminal....and just prints its results to the terminal. Make sure to give it enough time to complete. $ python3 /usr/lib/python3/dist-packages/softwareproperties/MirrorTest.py >> [top 5 omitted] and the winner is: ny-mirrors.evowise.com

          – PatKilg
          Jun 9 '18 at 18:07














          Sadly it doesn't work correctly. This script takes the 5 servers with lowest ping, then score them by bandwidth by downloading a ~1M file (Packages.gz in main from your dist). If you modify the script to increase it to 25 servers and download a 500M file you get completely different results, which are correct this time.

          – Jocelyn
          Feb 16 at 11:20





          Sadly it doesn't work correctly. This script takes the 5 servers with lowest ping, then score them by bandwidth by downloading a ~1M file (Packages.gz in main from your dist). If you modify the script to increase it to 25 servers and download a 500M file you get completely different results, which are correct this time.

          – Jocelyn
          Feb 16 at 11:20











          2



















          Command That Finds Fast Mirrors



          On Ubuntu 18.04 I got good results by running



           python /usr/lib/python3/dist-packages/softwareproperties/MirrorTest.py


          That prints a list of mirrors organized by "time" (not explained), and then I used one of the mirrors it ranked highest.



          More Details



          For me, it was useful to test a few of the top results output by that command by setting them as my mirror in /etc/apt/sources.list and then doing



          time sudo apt update


          to see how long it took to download the package list from that mirror. I tested the top three suggestions and they were all fast, but one of them was twice as fast as the other two in the time sudo apt update test.



          Here's an example output from python /usr/lib/python3/dist-packages/softwareproperties/MirrorTest.py:



          mirror: es-mirrors.evowise.com - time: 0.183778047562
          mirror: it-mirrors.evowise.com - time: 0.18604683876
          mirror: la-mirrors.evowise.com - time: 0.192630052567
          mirror: ny-mirrors.evowise.com - time: 0.208723068237
          mirror: mirrors.accretive-networks.net - time: 0.385910987854
          mirror: mirror.team-cymru.org - time: 0.46785402298
          mirror: mirrors.psu.ac.th - time: 1.64231991768
          and the winner is: es-mirrors.evowise.com





          share|improve this answer




















          • 1





            Sadly it doesn't work correctly. This script takes the 5 servers with lowest ping, then score them by bandwidth by downloading a ~1M file (Packages.gz in main from your dist). If you modify the script to increase it to 25 servers and download a 500M file you get completely different results, which are correct this time.

            – Jocelyn
            Feb 16 at 11:14
















          2



















          Command That Finds Fast Mirrors



          On Ubuntu 18.04 I got good results by running



           python /usr/lib/python3/dist-packages/softwareproperties/MirrorTest.py


          That prints a list of mirrors organized by "time" (not explained), and then I used one of the mirrors it ranked highest.



          More Details



          For me, it was useful to test a few of the top results output by that command by setting them as my mirror in /etc/apt/sources.list and then doing



          time sudo apt update


          to see how long it took to download the package list from that mirror. I tested the top three suggestions and they were all fast, but one of them was twice as fast as the other two in the time sudo apt update test.



          Here's an example output from python /usr/lib/python3/dist-packages/softwareproperties/MirrorTest.py:



          mirror: es-mirrors.evowise.com - time: 0.183778047562
          mirror: it-mirrors.evowise.com - time: 0.18604683876
          mirror: la-mirrors.evowise.com - time: 0.192630052567
          mirror: ny-mirrors.evowise.com - time: 0.208723068237
          mirror: mirrors.accretive-networks.net - time: 0.385910987854
          mirror: mirror.team-cymru.org - time: 0.46785402298
          mirror: mirrors.psu.ac.th - time: 1.64231991768
          and the winner is: es-mirrors.evowise.com





          share|improve this answer




















          • 1





            Sadly it doesn't work correctly. This script takes the 5 servers with lowest ping, then score them by bandwidth by downloading a ~1M file (Packages.gz in main from your dist). If you modify the script to increase it to 25 servers and download a 500M file you get completely different results, which are correct this time.

            – Jocelyn
            Feb 16 at 11:14














          2















          2











          2









          Command That Finds Fast Mirrors



          On Ubuntu 18.04 I got good results by running



           python /usr/lib/python3/dist-packages/softwareproperties/MirrorTest.py


          That prints a list of mirrors organized by "time" (not explained), and then I used one of the mirrors it ranked highest.



          More Details



          For me, it was useful to test a few of the top results output by that command by setting them as my mirror in /etc/apt/sources.list and then doing



          time sudo apt update


          to see how long it took to download the package list from that mirror. I tested the top three suggestions and they were all fast, but one of them was twice as fast as the other two in the time sudo apt update test.



          Here's an example output from python /usr/lib/python3/dist-packages/softwareproperties/MirrorTest.py:



          mirror: es-mirrors.evowise.com - time: 0.183778047562
          mirror: it-mirrors.evowise.com - time: 0.18604683876
          mirror: la-mirrors.evowise.com - time: 0.192630052567
          mirror: ny-mirrors.evowise.com - time: 0.208723068237
          mirror: mirrors.accretive-networks.net - time: 0.385910987854
          mirror: mirror.team-cymru.org - time: 0.46785402298
          mirror: mirrors.psu.ac.th - time: 1.64231991768
          and the winner is: es-mirrors.evowise.com





          share|improve this answer














          Command That Finds Fast Mirrors



          On Ubuntu 18.04 I got good results by running



           python /usr/lib/python3/dist-packages/softwareproperties/MirrorTest.py


          That prints a list of mirrors organized by "time" (not explained), and then I used one of the mirrors it ranked highest.



          More Details



          For me, it was useful to test a few of the top results output by that command by setting them as my mirror in /etc/apt/sources.list and then doing



          time sudo apt update


          to see how long it took to download the package list from that mirror. I tested the top three suggestions and they were all fast, but one of them was twice as fast as the other two in the time sudo apt update test.



          Here's an example output from python /usr/lib/python3/dist-packages/softwareproperties/MirrorTest.py:



          mirror: es-mirrors.evowise.com - time: 0.183778047562
          mirror: it-mirrors.evowise.com - time: 0.18604683876
          mirror: la-mirrors.evowise.com - time: 0.192630052567
          mirror: ny-mirrors.evowise.com - time: 0.208723068237
          mirror: mirrors.accretive-networks.net - time: 0.385910987854
          mirror: mirror.team-cymru.org - time: 0.46785402298
          mirror: mirrors.psu.ac.th - time: 1.64231991768
          and the winner is: es-mirrors.evowise.com






          share|improve this answer













          share|improve this answer




          share|improve this answer










          answered Jan 19 at 22:34









          ntc2ntc2

          3753 silver badges13 bronze badges




          3753 silver badges13 bronze badges










          • 1





            Sadly it doesn't work correctly. This script takes the 5 servers with lowest ping, then score them by bandwidth by downloading a ~1M file (Packages.gz in main from your dist). If you modify the script to increase it to 25 servers and download a 500M file you get completely different results, which are correct this time.

            – Jocelyn
            Feb 16 at 11:14













          • 1





            Sadly it doesn't work correctly. This script takes the 5 servers with lowest ping, then score them by bandwidth by downloading a ~1M file (Packages.gz in main from your dist). If you modify the script to increase it to 25 servers and download a 500M file you get completely different results, which are correct this time.

            – Jocelyn
            Feb 16 at 11:14








          1




          1





          Sadly it doesn't work correctly. This script takes the 5 servers with lowest ping, then score them by bandwidth by downloading a ~1M file (Packages.gz in main from your dist). If you modify the script to increase it to 25 servers and download a 500M file you get completely different results, which are correct this time.

          – Jocelyn
          Feb 16 at 11:14






          Sadly it doesn't work correctly. This script takes the 5 servers with lowest ping, then score them by bandwidth by downloading a ~1M file (Packages.gz in main from your dist). If you modify the script to increase it to 25 servers and download a 500M file you get completely different results, which are correct this time.

          – Jocelyn
          Feb 16 at 11:14












          2



















          For the command line, you can use a Python tool called apt-smart



          A usage example that lets you list ranked mirrors within your country (automatically detect):



          $ apt-smart -l


          With -l, or --list-mirrors, you will get ( example output from Travis CI U.S. server ):



          ---------------------------------------------------------------------------------------------------------
          | Rank | Mirror URL | Available? | Updating? | Last updated | Bandwidth |
          ---------------------------------------------------------------------------------------------------------
          | 1 | http://mirrors.gigenet.com/ubuntua... | Yes | No | Up to date | 1.73 MB/s |
          | 2 | http://mirror.genesisadaptive.com/... | Yes | No | Up to date | 1.68 MB/s |
          | 3 | http://ubuntu.mirrors.tds.net/pub/... | Yes | No | Up to date | 1.4 MB/s |
          | 4 | http://repos.forethought.net/ubuntu | Yes | No | Up to date | 1.35 MB/s |
          | 5 | http://repo.miserver.it.umich.edu/... | Yes | No | Up to date | 937.62 KB/s |
          ...
          | 75 | http://mirror.cc.vt.edu/pub2/ubuntu | Yes | No | 1 day behind | 659.67 KB/s |
          | 76 | http://mirror.atlantic.net/ubuntu | Yes | No | 2 days behind | 351.26 KB/s |
          | 77 | http://mirror.lstn.net/ubuntu | Yes | No | 4 days behind | 806.81 KB/s |
          | 78 | http://mirrors.usinternet.com/ubun... | Yes | No | 4 weeks behind | 514.31 KB/s |
          | 79 | http://mirrors.arpnetworks.com/Ubuntu | Yes | No | 19 weeks behind | 418.94 KB/s |
          | 80 | http://mirrors.ocf.berkeley.edu/ub... | Yes | Yes | Up to date | 446.07 KB/s |
          ---------------------------------------------------------------------------------------------------------
          Full URLs which are too long to be shown in above table:
          1: http://mirrors.gigenet.com/ubuntuarchive
          2: http://mirror.genesisadaptive.com/ubuntu
          3: http://ubuntu.mirrors.tds.net/pub/ubuntu
          5: http://repo.miserver.it.umich.edu/ubuntu
          ...
          78: http://mirrors.usinternet.com/ubuntu/archive
          80: http://mirrors.ocf.berkeley.edu/ubuntu



          Of course, apt-smart can also change your sources.list if you want to:



          $ apt-smart -a


          With -a , or --auto-change-mirror to discover available mirrors, rank the mirrors by connection speed and update status and update /etc/apt/sources.list to use the best available mirror.



          With -c , or --change-mirror MIRROR_URL to update /etc/apt/sources.list to use the given MIRROR_URL.



          Compared with other tools:




          • apt-smart automatically finds where you are so you don't need to specify the country when you travel abroad.


          • apt-smart does real HTTP download from each mirror to get more accurate results ( bandwidth & status ) and supports HTTP proxy, rather than using ping and relying on launchpad 's inaccurate data.


          • apt-smart is being maintained, whereas most other tools leave issues unfix for a long time.

          You can easily install apt-smart via pip, for detailed copy'n'paste install commands and usages please see Project Readme.






          share|improve this answer

























          • This works great! "pip install apt-smart" to install it.

            – Andy Fraley
            Nov 1 at 1:57











          • @Andy Fraley Thank you for commenting. If you are lucky enough, you can install apt-smart simply by pip install apt-smart and run apt-smart without any errors. But sometimes in some environments it might says 'apt-smart' command not found, or any other errors. It is not a bug of apt-smart but it is something of pip or Ubuntu system environment, and talking about it will be a long story. So the recommend way to install it is to follow the install commands in Project Readme, which is clear and can be copy'n'paste as a whole into terminal.

            – Martin X
            Nov 3 at 4:03















          2



















          For the command line, you can use a Python tool called apt-smart



          A usage example that lets you list ranked mirrors within your country (automatically detect):



          $ apt-smart -l


          With -l, or --list-mirrors, you will get ( example output from Travis CI U.S. server ):



          ---------------------------------------------------------------------------------------------------------
          | Rank | Mirror URL | Available? | Updating? | Last updated | Bandwidth |
          ---------------------------------------------------------------------------------------------------------
          | 1 | http://mirrors.gigenet.com/ubuntua... | Yes | No | Up to date | 1.73 MB/s |
          | 2 | http://mirror.genesisadaptive.com/... | Yes | No | Up to date | 1.68 MB/s |
          | 3 | http://ubuntu.mirrors.tds.net/pub/... | Yes | No | Up to date | 1.4 MB/s |
          | 4 | http://repos.forethought.net/ubuntu | Yes | No | Up to date | 1.35 MB/s |
          | 5 | http://repo.miserver.it.umich.edu/... | Yes | No | Up to date | 937.62 KB/s |
          ...
          | 75 | http://mirror.cc.vt.edu/pub2/ubuntu | Yes | No | 1 day behind | 659.67 KB/s |
          | 76 | http://mirror.atlantic.net/ubuntu | Yes | No | 2 days behind | 351.26 KB/s |
          | 77 | http://mirror.lstn.net/ubuntu | Yes | No | 4 days behind | 806.81 KB/s |
          | 78 | http://mirrors.usinternet.com/ubun... | Yes | No | 4 weeks behind | 514.31 KB/s |
          | 79 | http://mirrors.arpnetworks.com/Ubuntu | Yes | No | 19 weeks behind | 418.94 KB/s |
          | 80 | http://mirrors.ocf.berkeley.edu/ub... | Yes | Yes | Up to date | 446.07 KB/s |
          ---------------------------------------------------------------------------------------------------------
          Full URLs which are too long to be shown in above table:
          1: http://mirrors.gigenet.com/ubuntuarchive
          2: http://mirror.genesisadaptive.com/ubuntu
          3: http://ubuntu.mirrors.tds.net/pub/ubuntu
          5: http://repo.miserver.it.umich.edu/ubuntu
          ...
          78: http://mirrors.usinternet.com/ubuntu/archive
          80: http://mirrors.ocf.berkeley.edu/ubuntu



          Of course, apt-smart can also change your sources.list if you want to:



          $ apt-smart -a


          With -a , or --auto-change-mirror to discover available mirrors, rank the mirrors by connection speed and update status and update /etc/apt/sources.list to use the best available mirror.



          With -c , or --change-mirror MIRROR_URL to update /etc/apt/sources.list to use the given MIRROR_URL.



          Compared with other tools:




          • apt-smart automatically finds where you are so you don't need to specify the country when you travel abroad.


          • apt-smart does real HTTP download from each mirror to get more accurate results ( bandwidth & status ) and supports HTTP proxy, rather than using ping and relying on launchpad 's inaccurate data.


          • apt-smart is being maintained, whereas most other tools leave issues unfix for a long time.

          You can easily install apt-smart via pip, for detailed copy'n'paste install commands and usages please see Project Readme.






          share|improve this answer

























          • This works great! "pip install apt-smart" to install it.

            – Andy Fraley
            Nov 1 at 1:57











          • @Andy Fraley Thank you for commenting. If you are lucky enough, you can install apt-smart simply by pip install apt-smart and run apt-smart without any errors. But sometimes in some environments it might says 'apt-smart' command not found, or any other errors. It is not a bug of apt-smart but it is something of pip or Ubuntu system environment, and talking about it will be a long story. So the recommend way to install it is to follow the install commands in Project Readme, which is clear and can be copy'n'paste as a whole into terminal.

            – Martin X
            Nov 3 at 4:03













          2















          2











          2









          For the command line, you can use a Python tool called apt-smart



          A usage example that lets you list ranked mirrors within your country (automatically detect):



          $ apt-smart -l


          With -l, or --list-mirrors, you will get ( example output from Travis CI U.S. server ):



          ---------------------------------------------------------------------------------------------------------
          | Rank | Mirror URL | Available? | Updating? | Last updated | Bandwidth |
          ---------------------------------------------------------------------------------------------------------
          | 1 | http://mirrors.gigenet.com/ubuntua... | Yes | No | Up to date | 1.73 MB/s |
          | 2 | http://mirror.genesisadaptive.com/... | Yes | No | Up to date | 1.68 MB/s |
          | 3 | http://ubuntu.mirrors.tds.net/pub/... | Yes | No | Up to date | 1.4 MB/s |
          | 4 | http://repos.forethought.net/ubuntu | Yes | No | Up to date | 1.35 MB/s |
          | 5 | http://repo.miserver.it.umich.edu/... | Yes | No | Up to date | 937.62 KB/s |
          ...
          | 75 | http://mirror.cc.vt.edu/pub2/ubuntu | Yes | No | 1 day behind | 659.67 KB/s |
          | 76 | http://mirror.atlantic.net/ubuntu | Yes | No | 2 days behind | 351.26 KB/s |
          | 77 | http://mirror.lstn.net/ubuntu | Yes | No | 4 days behind | 806.81 KB/s |
          | 78 | http://mirrors.usinternet.com/ubun... | Yes | No | 4 weeks behind | 514.31 KB/s |
          | 79 | http://mirrors.arpnetworks.com/Ubuntu | Yes | No | 19 weeks behind | 418.94 KB/s |
          | 80 | http://mirrors.ocf.berkeley.edu/ub... | Yes | Yes | Up to date | 446.07 KB/s |
          ---------------------------------------------------------------------------------------------------------
          Full URLs which are too long to be shown in above table:
          1: http://mirrors.gigenet.com/ubuntuarchive
          2: http://mirror.genesisadaptive.com/ubuntu
          3: http://ubuntu.mirrors.tds.net/pub/ubuntu
          5: http://repo.miserver.it.umich.edu/ubuntu
          ...
          78: http://mirrors.usinternet.com/ubuntu/archive
          80: http://mirrors.ocf.berkeley.edu/ubuntu



          Of course, apt-smart can also change your sources.list if you want to:



          $ apt-smart -a


          With -a , or --auto-change-mirror to discover available mirrors, rank the mirrors by connection speed and update status and update /etc/apt/sources.list to use the best available mirror.



          With -c , or --change-mirror MIRROR_URL to update /etc/apt/sources.list to use the given MIRROR_URL.



          Compared with other tools:




          • apt-smart automatically finds where you are so you don't need to specify the country when you travel abroad.


          • apt-smart does real HTTP download from each mirror to get more accurate results ( bandwidth & status ) and supports HTTP proxy, rather than using ping and relying on launchpad 's inaccurate data.


          • apt-smart is being maintained, whereas most other tools leave issues unfix for a long time.

          You can easily install apt-smart via pip, for detailed copy'n'paste install commands and usages please see Project Readme.






          share|improve this answer














          For the command line, you can use a Python tool called apt-smart



          A usage example that lets you list ranked mirrors within your country (automatically detect):



          $ apt-smart -l


          With -l, or --list-mirrors, you will get ( example output from Travis CI U.S. server ):



          ---------------------------------------------------------------------------------------------------------
          | Rank | Mirror URL | Available? | Updating? | Last updated | Bandwidth |
          ---------------------------------------------------------------------------------------------------------
          | 1 | http://mirrors.gigenet.com/ubuntua... | Yes | No | Up to date | 1.73 MB/s |
          | 2 | http://mirror.genesisadaptive.com/... | Yes | No | Up to date | 1.68 MB/s |
          | 3 | http://ubuntu.mirrors.tds.net/pub/... | Yes | No | Up to date | 1.4 MB/s |
          | 4 | http://repos.forethought.net/ubuntu | Yes | No | Up to date | 1.35 MB/s |
          | 5 | http://repo.miserver.it.umich.edu/... | Yes | No | Up to date | 937.62 KB/s |
          ...
          | 75 | http://mirror.cc.vt.edu/pub2/ubuntu | Yes | No | 1 day behind | 659.67 KB/s |
          | 76 | http://mirror.atlantic.net/ubuntu | Yes | No | 2 days behind | 351.26 KB/s |
          | 77 | http://mirror.lstn.net/ubuntu | Yes | No | 4 days behind | 806.81 KB/s |
          | 78 | http://mirrors.usinternet.com/ubun... | Yes | No | 4 weeks behind | 514.31 KB/s |
          | 79 | http://mirrors.arpnetworks.com/Ubuntu | Yes | No | 19 weeks behind | 418.94 KB/s |
          | 80 | http://mirrors.ocf.berkeley.edu/ub... | Yes | Yes | Up to date | 446.07 KB/s |
          ---------------------------------------------------------------------------------------------------------
          Full URLs which are too long to be shown in above table:
          1: http://mirrors.gigenet.com/ubuntuarchive
          2: http://mirror.genesisadaptive.com/ubuntu
          3: http://ubuntu.mirrors.tds.net/pub/ubuntu
          5: http://repo.miserver.it.umich.edu/ubuntu
          ...
          78: http://mirrors.usinternet.com/ubuntu/archive
          80: http://mirrors.ocf.berkeley.edu/ubuntu



          Of course, apt-smart can also change your sources.list if you want to:



          $ apt-smart -a


          With -a , or --auto-change-mirror to discover available mirrors, rank the mirrors by connection speed and update status and update /etc/apt/sources.list to use the best available mirror.



          With -c , or --change-mirror MIRROR_URL to update /etc/apt/sources.list to use the given MIRROR_URL.



          Compared with other tools:




          • apt-smart automatically finds where you are so you don't need to specify the country when you travel abroad.


          • apt-smart does real HTTP download from each mirror to get more accurate results ( bandwidth & status ) and supports HTTP proxy, rather than using ping and relying on launchpad 's inaccurate data.


          • apt-smart is being maintained, whereas most other tools leave issues unfix for a long time.

          You can easily install apt-smart via pip, for detailed copy'n'paste install commands and usages please see Project Readme.







          share|improve this answer













          share|improve this answer




          share|improve this answer










          answered Oct 7 at 8:52









          Martin XMartin X

          313 bronze badges




          313 bronze badges















          • This works great! "pip install apt-smart" to install it.

            – Andy Fraley
            Nov 1 at 1:57











          • @Andy Fraley Thank you for commenting. If you are lucky enough, you can install apt-smart simply by pip install apt-smart and run apt-smart without any errors. But sometimes in some environments it might says 'apt-smart' command not found, or any other errors. It is not a bug of apt-smart but it is something of pip or Ubuntu system environment, and talking about it will be a long story. So the recommend way to install it is to follow the install commands in Project Readme, which is clear and can be copy'n'paste as a whole into terminal.

            – Martin X
            Nov 3 at 4:03

















          • This works great! "pip install apt-smart" to install it.

            – Andy Fraley
            Nov 1 at 1:57











          • @Andy Fraley Thank you for commenting. If you are lucky enough, you can install apt-smart simply by pip install apt-smart and run apt-smart without any errors. But sometimes in some environments it might says 'apt-smart' command not found, or any other errors. It is not a bug of apt-smart but it is something of pip or Ubuntu system environment, and talking about it will be a long story. So the recommend way to install it is to follow the install commands in Project Readme, which is clear and can be copy'n'paste as a whole into terminal.

            – Martin X
            Nov 3 at 4:03
















          This works great! "pip install apt-smart" to install it.

          – Andy Fraley
          Nov 1 at 1:57





          This works great! "pip install apt-smart" to install it.

          – Andy Fraley
          Nov 1 at 1:57













          @Andy Fraley Thank you for commenting. If you are lucky enough, you can install apt-smart simply by pip install apt-smart and run apt-smart without any errors. But sometimes in some environments it might says 'apt-smart' command not found, or any other errors. It is not a bug of apt-smart but it is something of pip or Ubuntu system environment, and talking about it will be a long story. So the recommend way to install it is to follow the install commands in Project Readme, which is clear and can be copy'n'paste as a whole into terminal.

          – Martin X
          Nov 3 at 4:03





          @Andy Fraley Thank you for commenting. If you are lucky enough, you can install apt-smart simply by pip install apt-smart and run apt-smart without any errors. But sometimes in some environments it might says 'apt-smart' command not found, or any other errors. It is not a bug of apt-smart but it is something of pip or Ubuntu system environment, and talking about it will be a long story. So the recommend way to install it is to follow the install commands in Project Readme, which is clear and can be copy'n'paste as a whole into terminal.

          – Martin X
          Nov 3 at 4:03











          0



















          I use the following to auto select mirrors (and disable deb-src)



          sudo sed -i -e 's%http://archive.ubuntu.com/ubuntu%mirror://mirrors.ubuntu.com/mirrors.txt%' -e 's/^deb-src/#deb-src/' /etc/apt/sources.list





          share|improve this answer





























            0



















            I use the following to auto select mirrors (and disable deb-src)



            sudo sed -i -e 's%http://archive.ubuntu.com/ubuntu%mirror://mirrors.ubuntu.com/mirrors.txt%' -e 's/^deb-src/#deb-src/' /etc/apt/sources.list





            share|improve this answer



























              0















              0











              0









              I use the following to auto select mirrors (and disable deb-src)



              sudo sed -i -e 's%http://archive.ubuntu.com/ubuntu%mirror://mirrors.ubuntu.com/mirrors.txt%' -e 's/^deb-src/#deb-src/' /etc/apt/sources.list





              share|improve this answer














              I use the following to auto select mirrors (and disable deb-src)



              sudo sed -i -e 's%http://archive.ubuntu.com/ubuntu%mirror://mirrors.ubuntu.com/mirrors.txt%' -e 's/^deb-src/#deb-src/' /etc/apt/sources.list






              share|improve this answer













              share|improve this answer




              share|improve this answer










              answered Jul 9 '16 at 12:37









              iheggieiheggie

              1614 bronze badges




              1614 bronze badges
























                  0



















                  If you want a utility to do this you could implement such a utility as a simple bash script like the following. This might be useful if you want to use the utility without needing pip/nodejs.



                  #!/bin/bash
                  if [ -z "$1" ]
                  then
                  echo Usage: sudo $0 http://mirrors.ubuntu.com/mirrors.txt
                  echo OR consider one of...
                  for mirror in `wget http://mirrors.ubuntu.com/mirrors.txt -O - 2> /dev/null`
                  do
                  (
                  host=`echo $mirror |sed s,.*//,,|sed s,/.*,,`
                  echo -e `ping $host -c1 | grep time=|sed s,.*time=,,`:' tt'$mirror
                  ) &
                  done
                  wait
                  exit 1
                  fi

                  OLD_SOURCE=`cat /etc/apt/sources.list | grep ^deb | head -n1 | cut -d -f2`

                  [ -e /etc/apt/sources.list.orig ] || cp /etc/apt/sources.list /etc/apt/sources.list.orig

                  cp /etc/apt/sources.list /etc/apt/sources.list.tmp
                  sed "s,$OLD_SOURCE,$1," < /etc/apt/sources.list.tmp > /etc/apt/sources.list





                  share|improve this answer































                    0



















                    If you want a utility to do this you could implement such a utility as a simple bash script like the following. This might be useful if you want to use the utility without needing pip/nodejs.



                    #!/bin/bash
                    if [ -z "$1" ]
                    then
                    echo Usage: sudo $0 http://mirrors.ubuntu.com/mirrors.txt
                    echo OR consider one of...
                    for mirror in `wget http://mirrors.ubuntu.com/mirrors.txt -O - 2> /dev/null`
                    do
                    (
                    host=`echo $mirror |sed s,.*//,,|sed s,/.*,,`
                    echo -e `ping $host -c1 | grep time=|sed s,.*time=,,`:' tt'$mirror
                    ) &
                    done
                    wait
                    exit 1
                    fi

                    OLD_SOURCE=`cat /etc/apt/sources.list | grep ^deb | head -n1 | cut -d -f2`

                    [ -e /etc/apt/sources.list.orig ] || cp /etc/apt/sources.list /etc/apt/sources.list.orig

                    cp /etc/apt/sources.list /etc/apt/sources.list.tmp
                    sed "s,$OLD_SOURCE,$1," < /etc/apt/sources.list.tmp > /etc/apt/sources.list





                    share|improve this answer





























                      0















                      0











                      0









                      If you want a utility to do this you could implement such a utility as a simple bash script like the following. This might be useful if you want to use the utility without needing pip/nodejs.



                      #!/bin/bash
                      if [ -z "$1" ]
                      then
                      echo Usage: sudo $0 http://mirrors.ubuntu.com/mirrors.txt
                      echo OR consider one of...
                      for mirror in `wget http://mirrors.ubuntu.com/mirrors.txt -O - 2> /dev/null`
                      do
                      (
                      host=`echo $mirror |sed s,.*//,,|sed s,/.*,,`
                      echo -e `ping $host -c1 | grep time=|sed s,.*time=,,`:' tt'$mirror
                      ) &
                      done
                      wait
                      exit 1
                      fi

                      OLD_SOURCE=`cat /etc/apt/sources.list | grep ^deb | head -n1 | cut -d -f2`

                      [ -e /etc/apt/sources.list.orig ] || cp /etc/apt/sources.list /etc/apt/sources.list.orig

                      cp /etc/apt/sources.list /etc/apt/sources.list.tmp
                      sed "s,$OLD_SOURCE,$1," < /etc/apt/sources.list.tmp > /etc/apt/sources.list





                      share|improve this answer
















                      If you want a utility to do this you could implement such a utility as a simple bash script like the following. This might be useful if you want to use the utility without needing pip/nodejs.



                      #!/bin/bash
                      if [ -z "$1" ]
                      then
                      echo Usage: sudo $0 http://mirrors.ubuntu.com/mirrors.txt
                      echo OR consider one of...
                      for mirror in `wget http://mirrors.ubuntu.com/mirrors.txt -O - 2> /dev/null`
                      do
                      (
                      host=`echo $mirror |sed s,.*//,,|sed s,/.*,,`
                      echo -e `ping $host -c1 | grep time=|sed s,.*time=,,`:' tt'$mirror
                      ) &
                      done
                      wait
                      exit 1
                      fi

                      OLD_SOURCE=`cat /etc/apt/sources.list | grep ^deb | head -n1 | cut -d -f2`

                      [ -e /etc/apt/sources.list.orig ] || cp /etc/apt/sources.list /etc/apt/sources.list.orig

                      cp /etc/apt/sources.list /etc/apt/sources.list.tmp
                      sed "s,$OLD_SOURCE,$1," < /etc/apt/sources.list.tmp > /etc/apt/sources.list






                      share|improve this answer















                      share|improve this answer




                      share|improve this answer








                      edited Nov 29 '17 at 15:26









                      derHugo

                      2,6824 gold badges18 silver badges38 bronze badges




                      2,6824 gold badges18 silver badges38 bronze badges










                      answered Jan 24 '17 at 4:52









                      gmathtgmatht

                      4664 silver badges6 bronze badges




                      4664 silver badges6 bronze badges
























                          0



















                          The other answers, including the accepted answer, are no longer valid (for Ubuntu 11.04 and newer) because they recommended Debian packages such as netselect-apt and apt-spy which do not work with Ubuntu.



                          There are two different working answers to this question below:




                          1. Use apt-get's mirror: method


                            This method asks the Ubuntu server for a list of mirrors near you based on your IP, and selects one of them. The easiest alternative, with the minor downside that sometimes the closest mirror may not be the fastest.





                          2. Command-line foo using netselect

                            Shows you how to use the netselect tool to find the fastest recently updated servers from you -- network-wise, not geographically. Use sed to replace mirrors in sources.list.

                          Use sed to replace mirrors in sources.list



                          Since some sources use addition folders as part of their path it might be better to use the alternate separator syntax.



                          sudo sed -i 's%us.archive.ubuntu.com%mirrors.gigenet.com/ubuntuarchive/%' /etc/apt/sources.list





                          share|improve this answer































                            0



















                            The other answers, including the accepted answer, are no longer valid (for Ubuntu 11.04 and newer) because they recommended Debian packages such as netselect-apt and apt-spy which do not work with Ubuntu.



                            There are two different working answers to this question below:




                            1. Use apt-get's mirror: method


                              This method asks the Ubuntu server for a list of mirrors near you based on your IP, and selects one of them. The easiest alternative, with the minor downside that sometimes the closest mirror may not be the fastest.





                            2. Command-line foo using netselect

                              Shows you how to use the netselect tool to find the fastest recently updated servers from you -- network-wise, not geographically. Use sed to replace mirrors in sources.list.

                            Use sed to replace mirrors in sources.list



                            Since some sources use addition folders as part of their path it might be better to use the alternate separator syntax.



                            sudo sed -i 's%us.archive.ubuntu.com%mirrors.gigenet.com/ubuntuarchive/%' /etc/apt/sources.list





                            share|improve this answer





























                              0















                              0











                              0









                              The other answers, including the accepted answer, are no longer valid (for Ubuntu 11.04 and newer) because they recommended Debian packages such as netselect-apt and apt-spy which do not work with Ubuntu.



                              There are two different working answers to this question below:




                              1. Use apt-get's mirror: method


                                This method asks the Ubuntu server for a list of mirrors near you based on your IP, and selects one of them. The easiest alternative, with the minor downside that sometimes the closest mirror may not be the fastest.





                              2. Command-line foo using netselect

                                Shows you how to use the netselect tool to find the fastest recently updated servers from you -- network-wise, not geographically. Use sed to replace mirrors in sources.list.

                              Use sed to replace mirrors in sources.list



                              Since some sources use addition folders as part of their path it might be better to use the alternate separator syntax.



                              sudo sed -i 's%us.archive.ubuntu.com%mirrors.gigenet.com/ubuntuarchive/%' /etc/apt/sources.list





                              share|improve this answer
















                              The other answers, including the accepted answer, are no longer valid (for Ubuntu 11.04 and newer) because they recommended Debian packages such as netselect-apt and apt-spy which do not work with Ubuntu.



                              There are two different working answers to this question below:




                              1. Use apt-get's mirror: method


                                This method asks the Ubuntu server for a list of mirrors near you based on your IP, and selects one of them. The easiest alternative, with the minor downside that sometimes the closest mirror may not be the fastest.





                              2. Command-line foo using netselect

                                Shows you how to use the netselect tool to find the fastest recently updated servers from you -- network-wise, not geographically. Use sed to replace mirrors in sources.list.

                              Use sed to replace mirrors in sources.list



                              Since some sources use addition folders as part of their path it might be better to use the alternate separator syntax.



                              sudo sed -i 's%us.archive.ubuntu.com%mirrors.gigenet.com/ubuntuarchive/%' /etc/apt/sources.list






                              share|improve this answer















                              share|improve this answer




                              share|improve this answer








                              answered May 7 '18 at 10:10


























                              community wiki





                              k0pernikus

























                                  -1



















                                  The easiest and efficient way to get the fastest mirror is to use the apt mirror:// source, see



                                  https://mvogt.wordpress.com/2011/03/21/the-apt-mirror-method/






                                  share|improve this answer































                                    -1



















                                    The easiest and efficient way to get the fastest mirror is to use the apt mirror:// source, see



                                    https://mvogt.wordpress.com/2011/03/21/the-apt-mirror-method/






                                    share|improve this answer





























                                      -1















                                      -1











                                      -1









                                      The easiest and efficient way to get the fastest mirror is to use the apt mirror:// source, see



                                      https://mvogt.wordpress.com/2011/03/21/the-apt-mirror-method/






                                      share|improve this answer
















                                      The easiest and efficient way to get the fastest mirror is to use the apt mirror:// source, see



                                      https://mvogt.wordpress.com/2011/03/21/the-apt-mirror-method/







                                      share|improve this answer















                                      share|improve this answer




                                      share|improve this answer








                                      edited Apr 10 '16 at 8:32









                                      0xF2

                                      2,5742 gold badges24 silver badges47 bronze badges




                                      2,5742 gold badges24 silver badges47 bronze badges










                                      answered Apr 10 '16 at 7:58









                                      daviddavid

                                      1




                                      1
























                                          Highly active question. Earn 10 reputation in order to answer this question. The reputation requirement helps protect this question from spam and non-answer activity.












                                          Highly active question. Earn 10 reputation in order to answer this question. The reputation requirement helps protect this question from spam and non-answer activity.











                                          Highly active question. Earn 10 reputation in order to answer this question. The reputation requirement helps protect this question from spam and non-answer activity.





                                          Highly active question. Earn 10 reputation in order to answer this question. The reputation requirement helps protect this question from spam and non-answer activity.


                                          Popular posts from this blog

                                          Distance measures on a map of a game The 2019 Stack Overflow Developer Survey Results Are Inmin distance in a graphShortest distance path on contour plotHow to plot a tilted map?Finding points outside of a diskDelaunay link distanceAnnulus from GeoDisks: drawing a ring on a mapNegative Correlation DistanceFind distance along a path (GPS coordinates)Finding position at given distance in a GeoPathMathematics behind distance estimation using camera

                                          How to get a smooth, uniform ParametricPlot of a 2D Region?How to plot a complicated Region?How to exclude a region from ParametricPlotHow discretize a region placing vertices on a specific non-uniform gridHow to transform a Plot or a ParametricPlot into a RegionHow can I get a smooth plot of a bounded region?Smooth ParametricPlot3D with RegionFunction?Smooth border of a region ParametricPlotSmooth region boundarySmooth region plot from list of pointsGet minimum y of a certain x in a region

                                          Genealogie vun de Merowenger Vum Merowech bis zum Chilperich I. | Navigatiounsmenü