Я хочу обновить файл sources.list с помощью самого быстрого сервера из командной строки в новой установке Ubuntu Server. Я знаю, что это просто трилогично с графическим интерфейсом, но, кажется, нет простого способа сделать это из командной строки?
Вам больше не нужно заниматься поиском - как объяснил ajmitch, вы можете использовать deb mirror для автоматического выбора лучшего зеркала.
apt-get теперь поддерживает зеркало ', который автоматически выберет хорошее зеркало на основе вашего местоположения. Помещение: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
в верхней части вашего файла /etc/apt/sources.list должно быть всем, что необходимо, чтобы автоматически выбрать зеркало для вас на основе вашего географического положения. Lucid (10.04), Maverick (10.10), Natty (11.04) и Oneiric (11.10) могут заменить precise на соответствующее имя. Вот один из способов, который всегда будет работать, используя старые добрые netselect и некоторые grep магии:
Вот скрипт Python, который я написал, который находит зеркала с самой низкой задержкой TCP.
Сценарий также предоставляет данные о пропускной способности и состоянии, взятые из сценария Python , и будет генерировать новый файл sources.list автоматически или используя зеркало, выбранное из списка.
Oneliner, который выбирает лучшее (по скорости загрузки) зеркало на основе mirror.ubuntu.com для вашего 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 }'
Я разработал простой скрипт nodejs на основе ping, который проверяет серверы, перечисленные на mirror.ubuntu.com/mirrors.txt, и возвращает самый быстрый из них:
sudo npm install -g ffum
ffum
Пожалуйста, дайте мне знать, если вы найдете он полезен или имеет какие-либо предложения (=
Я знаю, что это напрямую не отвечает на вопрос OP, но есть кнопка в версии Ubuntu на рабочем столе / графическом интерфейсе, которая находит лучшее зеркало для вас. Это, казалось, сработало очень хорошо, поэтому я вкратце рассмотрел его, но не успел следить.
Причина, по которой я это вызвала, состоит в том, что я думаю, что это будет довольно прямолинейно и полезно превратите его в утилиту командной строки.
Если кому-то интересно, тест, кажется, находится в:
/usr/lib/python3/dist-packages/softwareproperties/MirrorTest.py
Опять же, это примерно так, как я получил, но я Я решил оставить это здесь, если кто-то захочет этого. Я, вероятно, заберу его, когда у меня еще немного времени.
Самый простой и эффективный способ получить самое быстрое зеркало - использовать источник apt mirror://, см.
https://mvogt.wordpress.com/2011/03/21/the-apt -mirror-метод /
Я использую следующее для автоматического выбора зеркал (и отключить 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
Если вы хотите использовать эту утилиту, вы можете реализовать такую утилиту, как простой скрипт bash, как показано ниже. Это может быть полезно, если вы хотите использовать утилиту, не требуя 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=,,`:' \t\t'$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
Другие ответы, включая принятый ответ, более недействительны (для Ubuntu 11.04 и новее), потому что они рекомендовали пакеты Debian, такие как netselect-apt и apt-spy, которые не работают с Ubuntu.
[d1 ] Ниже приведены два разных рабочих ответа на этот вопрос: Использовать метод apt-get mirror:. Этот метод запрашивает у сервера Ubuntu список зеркал рядом с вами на основе вашего IP-адреса и выбирает один из них , Самая легкая альтернатива, с незначительным недостатком, что иногда самое близкое зеркало может быть не самым быстрым. Командная строка foo с использованием netselect Показывает, как использовать инструмент netselect, чтобы найти самые быстрые недавно обновленные серверы от вас - по сети, а не по географическому признаку. Используйте sed для замены зеркал в sources.list.. Поскольку некоторые источники используют папки с добавлением в качестве части своего пути, лучше использовать синтаксис альтернативного разделителя. [!d14 ]
sudo sed -i 's%us.archive.ubuntu.com%mirrors.gigenet.com/ubuntuarchive/%' /etc/apt/sources.list
приятная терминальная программа здесь:
# apt-get install netselect-apt
Available Options
stable|testing|unstable|experimental|woody|sarge|etch|sid Specify which distribution of Debian to use. By default stable is used.
-s, --sources
While generating OUTFILE include also deb-src lines to use with ‘‘apt-get source’’ to obtain Debian source packages.
-i, --infile INFILE
Use INFILE instead of mirrors_full for reading mirror list. The file must be in the same format as mirrors_full.
-o, --outfile OUTFILE
Use OUTFILE instead of sources.list.
-n, --nonfree
Include also non-free section while generating OUTFILE.
-f, --ftp
Use FTP mirrors instead of HTTP and generate OUTFILE accordingly.
Examples
If you want non-free repos use the following command
# netselect-apt -n