apt-fast
apt-fast copied to clipboard
Automatic mirror selection
I thought it would be a good idea to implement an automatic mirror selection command (apt-fast best-mirrors-select for example) to add best mirrors according to the location of user like what we have for best server selection in ubuntu.
+1
you can use netselect-apt for that. it gives you a list of the 10 best mirrors... you can then copy it into the MIRRORS variable.. shouldn't be too hard to automate that in a script.. ;)
sudo netselect-apt testing -n
here for Debian testing ;)
I wrote a little python script that does that for me on Debian testing: https://github.com/stfl/apt-fast-mirrors
I've got a Bash function to extract URLs of up-to-date Ubuntu mirrors below.
ubuntu_mirror() {
local url="https://launchpad.net/ubuntu/+archivemirrors"
local xpath1="//table/tbody/tr[td/span[@class='distromirrorstatusUP']]/td/a[starts-with(@href,'"
local xpath2="${xpath1}$1"
local xpath="${xpath2}')]/@href"
wget -qO- $url | xmllint --html --xpath "$xpath" - 2>&0 | sed 's/.*href="\(.*\)"/\1/g'
}
MIRRORS1="(' "
MIRRORS2=${MIRRORS1}$(ubuntu_mirror https | awk -vRS=' ' -vOFS=', ' '$1=$1')
MIRRORS="${MIRRORS2} ')"
The function can also find
http
orftp
URLs.
I've got a Bash function to extract URLs of up-to-date Ubuntu mirrors below.
function ubuntu-mirror { PROTOCOL="$1" str='s/.*href="\(' str+=$PROTOCOL str+=':\/\/.*\)"/\1/p' wget -qO- https://launchpad.net/ubuntu/+archivemirrors | xmllint --html --xpath '//table/tbody/tr[td/span[@class="distromirrorstatusUP"]]/td/a[not(starts-with(@href, "/"))]/@href' - 2>&0 | sed -n $str }
* Use either `http`, `https`, `ftp` or `rsync`.
MIRRORS="( '" MIRRORS+="ubuntu-mirror https | awk -vRS='' -vOFS=', ' '$1=$1'" MIRRORS+="' )"
How do you use this function after adding it to .profile?
How do you use this function after adding it to .profile?
Sorry, forgot to fix it.
I'm still unsure to keep it as is or make it not as a function which I've tried and seems faster.
MIRRORS="( '" MIRRORS+=$(ubuntu-mirror https | awk -vRS='' -vOFS=', ' '$1=$1') MIRRORS+="' )"
So this part also goes into .profile?
So this part also goes into .profile?
Actually, both parts.
So this part also goes into .profile?
Actually, both parts.
Then we export MIRRORS(?): export MIRRORS
Then we export MIRRORS(?): export MIRRORS
I now don't think that's needed. You can use it if it works for you.