This is a guide on How to change repositories to a different mirror that applies to all Linux distributions. Often you would feel the auto selected mirror via GeoIP is not the fastest one of you’re just paranoid like me who would want to select a mirror from a specific country. This guide would help you to select mirrors manually and control where you download updates from. It might also help you speed up your download if you manage to select a good one.
I am not the original author of this guide, g0tmi1k from Kali Forums wrote it and it is a wonderful guide on how to change repositories to a different mirror.
I am redistributing this to make it more available in search engines as I too failed to find a well written guide on achieve this. I am not even going to try to re-write anything as this Guide is just too good. This was originally written for Kali Linux but any Linux user can find a mirror of their choice, and replace the links to point to their chosen mirror. Other distro users, feel free to leave a comment if you need help.
Original post link How to change the repositories to a different official mirror. Again kudos to gotli1lk for this great guide.
Related posts:
How to add official Kali Linux Repositories?
How to fix Kali Linux apt-get slow update?
So here goes..
How to change repositories to a different mirror
There are several mirrors of the Kali Linux repository server, all of which are spread over the world.
Each time you interact with the repository, by default it will automatically use the mirror that is closest to you based on your geoip location (idea being, this will give you the best speed due to less latency).
For whatever reason, you may wish to manually force kali to use a certain/different mirror rather than the one that is nearest you.
Warning: Doing so, if that mirror stops functioning, you will no longer receive updates.
Find your mirror
To start with, you can see what mirror you’re using and other ones near by, by visiting this URL: http://http.kali.org/README.mirrorlist
For example:
Found 1 mirror which handle this country (GB):
http://ftp.hands.com/kali/README (gb, prio 100)
Found 5 mirrors in other countries, but same continent (EU):
http://ftp.free.fr/pub/kali/README (fr, prio 200)
http://mirror.pcextreme.nl/kali/README (nl, prio 200)
http://ftp.halifax.rwth-aachen.de/kali/README (de, prio 100)
http://kali.mirror.garr.it/mirrors/kali/README (it, prio 100)
http://ftp.cc.uoc.gr/mirrors/linux/kali/kali/README (gr, prio 100)
…So from the looks of it, in this example ‘ftp.hands.com’ is being used. Lets switch to ‘kali.mirror.garr.it’
(there isn’t a reason or justification for this, just a server that was picked at random).
Make a backup of your sources.list file
Before making any modifications, its highly recommended that you create a backup of any files that will be altered.
This can be done by running:
root@kali ~$ cp -f /etc/apt/sources.list{,.bkup}
Change mirror in sources.list file
The default source.list file looks like:
root@kali~$ cat /etc/apt/sources.list | grep -v '^#' | uniq
deb http://http.kali.org/kali kali main non-free contrib
deb-src http://http.kali.org/kali kali main non-free contrib
deb http://security.kali.org/kali-security kali/updates main contrib non-free
root@kali~$
Hint: Kali Linux sources.list Repositories
So we will replace default values with ‘kali.mirror.garr.it’.
From: http – README.mirrorlist we can see the base HTTP URL is: kali.mirror.garr.it/mirrors/kali/
Before (default/original)
deb http://http.kali.org/kali kali main non-free contrib
deb-src http://http.kali.org/kali kali main non-free contrib
After (static mirror/manually altering)
deb http://kali.mirror.garr.it/mirrors/kali/ kali main non-free contrib
deb-src http://kali.mirror.garr.it/mirrors/kali/ kali main non-free contrib
From: security – README.mirrorlist we can see the base security URL is: kali.mirror.garr.it/mirrors/kali-security/
Before (default/original)
deb http://security.kali.org/kali-security kali/updates main contrib non-free
After (static mirror/manually altering)
deb http://kali.mirror.garr.it/mirrors/kali-security/ kali main non-free contrib
Therefore we can make the switch to ‘kali.mirror.garr.it’ by using the default values as a template, and merging in the information above.
Example command:
echo '# kali.mirror.garr.it
deb http://kali.mirror.garr.it/mirrors/kali/ kali main non-free contrib
deb-src http://kali.mirror.garr.it/mirrors/kali/ kali main non-free contrib
deb http://kali.mirror.garr.it/mirrors/kali-security/ kali main non-free contrib' > /etc/apt/sources.list
The result looks like this:
root@kali:~# echo '# kali.mirror.garr.it
> deb http://kali.mirror.garr.it/mirrors/kali/ kali main non-free contrib
> deb-src http://kali.mirror.garr.it/mirrors/kali/ kali main non-free contrib
>
> deb http://kali.mirror.garr.it/mirrors/kali-security/ kali main non-free contrib' > /etc/apt/sources.list
root@kali:~# cat /etc/apt/sources.list
# kali.mirror.garr.it
deb http://kali.mirror.garr.it/mirrors/kali/ kali main non-free contrib
deb-src http://kali.mirror.garr.it/mirrors/kali/ kali main non-free contrib
deb http://kali.mirror.garr.it/mirrors/kali-security/ kali main non-free contrib
root@kali:~#
Test your change
We can then test it out by doing ‘apt-get update’:
root@kali:~# apt-get update
Get:1 http://kali.mirror.garr.it kali Release.gpg [836 B]
Get:2 http://kali.mirror.garr.it kali Release.gpg [836 B]
Get:3 http://kali.mirror.garr.it kali Release [21.1 kB]
Get:4 http://kali.mirror.garr.it kali Release [8,791 B]
Get:5 http://kali.mirror.garr.it kali/main Sources [7,531 kB]
Get:6 http://kali.mirror.garr.it kali/non-free Sources [117 kB]
Get:7 http://kali.mirror.garr.it kali/contrib Sources [55.5 kB]
Get:8 http://kali.mirror.garr.it kali/main i386 Packages [8,450 kB]
Get:9 http://kali.mirror.garr.it kali/non-free i386 Packages [115 kB]
Get:10 http://kali.mirror.garr.it kali/contrib i386 Packages [55.2 kB]
Get:11 http://kali.mirror.garr.it kali/main i386 Packages [284 kB]
Get:12 http://kali.mirror.garr.it kali/non-free i386 Packages [20 B]
Get:13 http://kali.mirror.garr.it kali/contrib i386 Packages [616 B]
Ign http://kali.mirror.garr.it kali/contrib Translation-en_GB
Ign http://kali.mirror.garr.it kali/contrib Translation-en
Ign http://kali.mirror.garr.it kali/main Translation-en_GB
Ign http://kali.mirror.garr.it kali/main Translation-en
Ign http://kali.mirror.garr.it kali/non-free Translation-en_GB
Ign http://kali.mirror.garr.it kali/non-free Translation-en
Ign http://kali.mirror.garr.it kali/contrib Translation-en_GB
Ign http://kali.mirror.garr.it kali/contrib Translation-en
Ign http://kali.mirror.garr.it kali/main Translation-en_GB
Ign http://kali.mirror.garr.it kali/main Translation-en
Ign http://kali.mirror.garr.it kali/non-free Translation-en_GB
Ign http://kali.mirror.garr.it kali/non-free Translation-en
Fetched 16.6 MB in 11s (1,388 kB/s)
Reading package lists... Done
root@kali:~#
…no warnings :)
Done!
Rollback changes
If anything goes wrong at any stage or the server isn’t working, we are able to restore from the backup by doing:
root@kali:~# cp -f /etc/apt/sources.list{.bkup,}
root@kali:~# apt-get update
Get:1 http://security.kali.org kali/updates Release.gpg [836 B]
Get:2 http://http.kali.org kali Release.gpg [836 B]
Get:3 http://security.kali.org kali/updates Release [11.0 kB]
Get:4 http://http.kali.org kali Release [21.1 kB]
Get:5 http://security.kali.org kali/updates/main i386 Packages [143 kB]
Get:6 http://http.kali.org kali/main Sources [7,531 kB]
Ign http://security.kali.org kali/updates/contrib Translation-en_GB
Ign http://security.kali.org kali/updates/contrib Translation-en
Ign http://security.kali.org kali/updates/main Translation-en_GB
Ign http://security.kali.org kali/updates/main Translation-en
Ign http://security.kali.org kali/updates/non-free Translation-en_GB
Ign http://security.kali.org kali/updates/non-free Translation-en
Ign http://http.kali.org kali/contrib Translation-en_GB
Ign http://http.kali.org kali/contrib Translation-en
Ign http://http.kali.org kali/main Translation-en_GB
Ign http://http.kali.org kali/main Translation-en
Ign http://http.kali.org kali/non-free Translation-en_GB
Ign http://http.kali.org kali/non-free Translation-en
Get:7 http://http.kali.org kali/non-free Sources [117 kB]
Get:8 http://security.kali.org kali/updates/contrib i386 Packages [20 B]
Get:9 http://http.kali.org kali/contrib Sources [55.5 kB]
Get:10 http://security.kali.org kali/updates/non-free i386 Packages [20 B]
Get:11 http://http.kali.org kali/main i386 Packages [8,450 kB]
Get:12 http://http.kali.org kali/non-free i386 Packages [115 kB]
Get:13 http://http.kali.org kali/contrib i386 Packages [55.2 kB]
Fetched 16.5 MB in 18s (870 kB/s)
Reading package lists... Done
root@kali:~#
…and everything is back to normal :)
Related posts:
How to add official Kali Linux Repositories?
How to fix Kali Linux apt-get slow update?
Bookmarks/Handy links specific for Kali Linux:
Official Kali Linux Mirrors
Kali Linux sources.list Repositories
Thanks for reading.
This worked for Ubuntu as well. I just had to select a mirror manually.
Works like a charm.
I’m in France, but my priority repo was in US….
I think I made some changes in my locales so maybe it could be an explanation.
Hello sir I got an error, how to fix this? please help
apt-get update
Hit http://kali.mirror.garr.it kali InRelease
Ign http://kali.mirror.garr.it kali InRelease
Get:1 http://kali.mirror.garr.it kali/main Sources [7,555 kB]
Get:2 http://kali.mirror.garr.it kali/non-free Sources [119 kB]
Get:3 http://kali.mirror.garr.it kali/contrib Sources [56.8 kB]
Get:4 http://kali.mirror.garr.it kali/main amd64 Packages [10.9 MB]
Get:5 http://kali.mirror.garr.it kali/non-free amd64 Packages [169 kB]
Get:6 http://kali.mirror.garr.it kali/contrib amd64 Packages [78.6 kB]
Ign http://kali.mirror.garr.it kali Release.gpg
Ign http://kali.mirror.garr.it kali Release
Ign http://kali.mirror.garr.it kali/contrib Translation-en_US
Ign http://kali.mirror.garr.it kali/contrib Translation-en
Ign http://kali.mirror.garr.it kali/main Translation-en_US
Ign http://kali.mirror.garr.it kali/main Translation-en
Ign http://kali.mirror.garr.it kali/non-free Translation-en_US
Ign http://kali.mirror.garr.it kali/non-free Translation-en
Err http://kali.mirror.garr.it kali/main amd64 Packages
404 Not Found [IP: 193.206.139.34 80]
Err http://kali.mirror.garr.it kali/non-free amd64 Packages
404 Not Found [IP: 193.206.139.34 80]
Err http://kali.mirror.garr.it kali/contrib amd64 Packages
404 Not Found [IP: 193.206.139.34 80]
Ign http://kali.mirror.garr.it kali/contrib Translation-en_US
Ign http://kali.mirror.garr.it kali/contrib Translation-en
Ign http://kali.mirror.garr.it kali/main Translation-en_US
Ign http://kali.mirror.garr.it kali/main Translation-en
Ign http://kali.mirror.garr.it kali/non-free Translation-en_US
Ign http://kali.mirror.garr.it kali/non-free Translation-en
W: Failed to fetch http://kali.mirror.garr.it/mirrors/kali-security/dists/kali/main/binary-amd64/Packages 404 Not Found [IP: 193.206.139.34 80]
W: Failed to fetch http://kali.mirror.garr.it/mirrors/kali-security/dists/kali/non-free/binary-amd64/Packages 404 Not Found [IP: 193.206.139.34 80]
W: Failed to fetch http://kali.mirror.garr.it/mirrors/kali-security/dists/kali/contrib/binary-amd64/Packages 404 Not Found [IP: 193.206.139.34 80]
E: Some index files failed to download. They have been ignored, or old ones used instead.