apt-repo, выбор сервера и альтовые зеркала
заметки на полях
О целях на источники (репозитории)Их содержит этот пакет
$ rpm -ql apt-conf-branch|grep sources
/etc/apt/sources.list
/etc/apt/sources.list.d
/etc/apt/sources.list.d/alt.list
/etc/apt/sources.list.d/dcby.list
/etc/apt/sources.list.d/heanet.list
/etc/apt/sources.list.d/ipsl.list
/etc/apt/sources.list.d/yandex.list
Т.е. в наличии пять серверов:
- Главный сервер и четыре зеркала, которые описаны в файлах *.list
Полный список источников отдающих по протоколу http можно посмотреть этой командой
# apt-repo list -a|grep http
#rpm [p8] http://ftp.altlinux.org/pub/distributions/ALTLinux p8/branch/i586 debuginfo
#rpm [p8] http://ftp.altlinux.org/pub/distributions/ALTLinux p8/branch/i586 classic
#rpm [p8] http://ftp.altlinux.org/pub/distributions/ALTLinux p8/branch/noarch classic
#rpm [p8] http://mirror.datacenter.by/pub/ALTLinux p8/branch/i586 classic
#rpm [p8] http://mirror.datacenter.by/pub/ALTLinux p8/branch/noarch classic
#rpm [p8] http://ftp.heanet.ie/mirrors/ftp.altlinux.org p8/branch/i586 classic
#rpm [p8] http://ftp.heanet.ie/mirrors/ftp.altlinux.org p8/branch/noarch classic
#rpm [p8] http://distrib-coffee.ipsl.jussieu.fr/pub/linux/altlinux p8/branch/i586 classic
#rpm [p8] http://distrib-coffee.ipsl.jussieu.fr/pub/linux/altlinux p8/branch/noarch classic
#rpm [p8] http://mirror.yandex.ru/altlinux p8/branch/i586 classic
#rpm [p8] http://mirror.yandex.ru/altlinux p8/branch/noarch classic
Если команда не вывела добавленные источники
apt-repo
или они были удалены командой
# apt-repo rm all
то команда
# apt-repo add p8
или команда
# apt-repo add branch p8
добавит цели (в данном случае на репозиторий p8/branch)
# apt-repo add branch p8
которые после добавления можно просмотреть
# apt-repo
rpm [updates] http://ftp.altlinux.org/pub/distributions/ALTLinux p8/branch/i586 classic
rpm [updates] http://ftp.altlinux.org/pub/distributions/ALTLinux p8/branch/noarch classic
Самый быстрый сервер
Но всегда ли этот сервер будет самым оптимальным?
Обычно у команды ping делающей три запроса будет аналогичный вывод
$ ping -c3 ftp.altlinux.org
PING ftp.altlinux.org (62.152.55.238) 56(84) bytes of data.
64 bytes from 62.152.55.238: icmp_req=1 ttl=55 time=64.6 ms
64 bytes from 62.152.55.238: icmp_req=2 ttl=55 time=64.4 ms
64 bytes from 62.152.55.238: icmp_req=3 ttl=55 time=64.1 ms
--- ftp.altlinux.org ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2001ms
rtt min/avg/max/mdev = 64.138/64.407/64.632/0.204 ms
в которм нас интересует последняя строка
$ ping -c3 ftp.altlinux.org|grep avg
rtt min/avg/max/mdev = 93.364/141.402/169.316/34.118 ms
в которой наиболее интересна величина average, - среднее количество времени затраченное на отправку/получение трёх пакетов, которое чем меньше, тем лучше.
Зная эту величину, можно выбрать наиболее оптимальный сервер, сравнивая значение этой величины, - сервер во Франции совсем не пингуется
$ ping -c3 mirror.datacenter.by|grep avg|cut -f2 -d '='|awk -F '/' '{print $2}'
106.901
$ ping -c3 mirror.yandex.ru|grep avg|cut -f2 -d '='|awk -F '/' '{print $2}'
125.733
$ ping -c3 ftp.altlinux.org|grep avg|cut -f2 -d '='|awk -F '/' '{print $2}'
139.192
$ ping -c3 ftp.heanet.ie|grep avg|cut -f2 -d '='|awk -F '/' '{print $2}'
160.538
$ ping -c3 distrib-coffee.ipsl.jussieu.fr|grep avg|cut -f2 -d '='|awk -F '/' '{print $2}'
$
В данном случае самым оптимальным оказался сервер mirror.datacenter.by :
- У него среднее время затраченное на отправку/получение трёх пакетов оказалось наименьшим.
Выбор источника в конфигурационном файле
Эти команды в качестве источника выбирают репозиторий p8/branch на сервере ftp.altlinux.org
# apt-repo add p8
# apt-repo add branch p8
Нас же интересует наиболее быстрый сервер, - в данном случае mirror.datacenter.by
Если все источники отсутстуют или были удалены командой
# apt-repo rm all
то из списка всех источников
# apt-repo list -a|grep http
#rpm [p8] http://ftp.altlinux.org/pub/distributions/ALTLinux p8/branch/i586 debuginfo
#rpm [p8] http://ftp.altlinux.org/pub/distributions/ALTLinux p8/branch/i586 classic
#rpm [p8] http://ftp.altlinux.org/pub/distributions/ALTLinux p8/branch/noarch classic
#rpm [p8] http://mirror.datacenter.by/pub/ALTLinux p8/branch/i586 classic
#rpm [p8] http://mirror.datacenter.by/pub/ALTLinux p8/branch/noarch classic
#rpm [p8] http://ftp.heanet.ie/mirrors/ftp.altlinux.org p8/branch/i586 classic
#rpm [p8] http://ftp.heanet.ie/mirrors/ftp.altlinux.org p8/branch/noarch classic
#rpm [p8] http://distrib-coffee.ipsl.jussieu.fr/pub/linux/altlinux p8/branch/i586 classic
#rpm [p8] http://distrib-coffee.ipsl.jussieu.fr/pub/linux/altlinux p8/branch/noarch classic
#rpm [p8] http://mirror.yandex.ru/altlinux p8/branch/i586 classic
#rpm [p8] http://mirror.yandex.ru/altlinux p8/branch/noarch classic
нас интересует именно он
# apt-repo list -a|grep http|grep mirror.datacenter.by
#rpm [p8] http://mirror.datacenter.by/pub/ALTLinux p8/branch/i586 classic
#rpm [p8] http://mirror.datacenter.by/pub/ALTLinux p8/branch/noarch classic
Имея этот вывод, можно добавить сервер как источник этими командами, пользуясь функцией выделить-скопировать-вставить
# apt-repo add "rpm [p8] http://mirror.datacenter.by/pub/ALTLinux p8/branch/i586 classic"
# apt-repo add "rpm [p8] http://mirror.datacenter.by/pub/ALTLinux p8/branch/noarch classic"
и получить командой вывод добавленных источников
# apt-repo
rpm [p8] http://mirror.datacenter.by/pub/ALTLinux p8/branch/i586 classic
rpm [p8] http://mirror.datacenter.by/pub/ALTLinux p8/branch/noarch classic
или воспользоваится этой командой
# apt-repo add http://mirror.datacenter.by/pub/ALTLinux/p8/branch
чтобы цели на репозиторий выглядели так
# apt-repo
rpm http://mirror.datacenter.by/pub/ALTLinux p8/branch/i586 classic
rpm http://mirror.datacenter.by/pub/ALTLinux p8/branch/noarch classic
Но в последнем случае вам нужно знать полный путь к репозиторию на сервере.
В альтернативном варианте, добавить отсутствующие цели на репозиторий, поможет sed - строчный редактор.
Здесь он раскомментирует цели на репозиторий p8/branch расположенный на сервере mirror.datacenter.by
# sed -i 's/#rpm \[p8\] http/rpm \[p8\] http/g' /etc/apt/sources.list.d/dcby.list
Обратные слеши экранируют квадратные скобки и не позволяют интерпретировать их.
В конце команды, как цель, указан полный путь к файлу, который содержит источники на сервере.
Здесь dcby.list, это datacenter.by.
sed в указанном файле, в команде выше, раскомментирует закомментированные цели для http протокола
# apt-repo
rpm [p8] http://mirror.datacenter.by/pub/ALTLinux p8/branch/i586 classic
rpm [p8] http://mirror.datacenter.by/pub/ALTLinux p8/branch/noarch classic
Но вы можете выбрать целью sed наиболее подходящий для вас сервер из списка, в чём вам уже помогла команда ping
# ls -1 /etc/apt/sources.list.d/
alt.list
dcby.list
heanet.list
ipsl.list
yandex.list
Итак источники добавлены.
Осталось обновить локальную базу пакетов
# apt-get update
и выполнить обновление системы
# apt-get dist-upgrade
Не указывайте источниками два репозитория сразу, например p8/branch и sisyphus, - вы можете сломать систему.