Создание зеркала: //mirrors.ubuntu.com очень доступно

Мы распределенная команда, поэтому наши виртуальные машины используют настройку Ubuntu mirror://. Наш /etc/apt/sources.list выглядит следующим образом:

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

Это само по себе довольно удивительно и очень полезно для людей, которые работают в разных местах - меньше локальной настройки и т. Д. Необходимо. Отказ в теории.

В повседневной работе эта настройка слишком часто завершается сбоем. Я хочу сказать 2-3 раза на этой неделе.

Прямо сейчас mirrors.ubuntu.com возвращает ftp.uni-bayreuth.de как мое зеркало в шкафу. К сожалению, похоже, что он не работает.

Это продолжалось в течение нескольких часов, и волонтеры в университете размещают зеркало, и сегодня, будучи пятницей, у меня мало надежд на то, что это скоро исправят.

Все разговоры, мои вопросы:

  • Кто-нибудь этим пользуется?
  • Как вы обходите время простоя? (мое быстрое исправление - это сценарий оболочки)
  • Как я могу помочь улучшить эту ситуацию?
26
задан 30 March 2014 в 00:02

6 ответов

В Debian 6.0.4 была такая команда:

apt-spy

Это помогло автоматически найти следующий ближайший доступный сервер и сгенерировать a new sources.list

В Ubuntu эта команда, кажется, не существует?

Она все еще существует в Debian 7.0 wheezy:

https://launchpad.net / debian / wheezy / + source / apt-spy / + copyright

Вы можете скачать свой пакет * .deb здесь:

http: //packages.debian. org / sid / apt-spy

... все еще ищет источники ...

Вам, очевидно, нужна Debian-7.0-Installation для получения исходного кода после редактирования списка источников с записью:

deb-src http://http.debian.net / debian wheezy main

Затем, после обновления sudo apt-get, вы просто всасываете код:

sudo apt-get source apt-spy [ 1115]

0
ответ дан 30 March 2014 в 00:02

Я написал скрипт Python под названием apt-select , который будет служить альтернативой CLI методу GUI.

Сценарий запрашивает каждое зеркало через TCP, печатает на стандартные зеркала с наименьшей задержкой и генерирует новый файл sources.list. Есть также несколько опций, которые позволяют вам выбирать из списка ранжированных зеркал и получать информацию, например, когда зеркало было обновлено в последний раз и его пропускную способность.

0
ответ дан 30 March 2014 в 00:02

Я ценю весь вклад в этот вопрос, но так как никто не придумал простого решения, которое соответствовало бы нашим обстоятельствам, я решил решить проблему самостоятельно.

Я создал инструмент (специально для Ubuntu), который я назвал apt-spy2.

Основная цель этого инструмента - быстро найти работающее зеркало . Работа определяется тем, что зеркальный сервер доступен и (мы надеемся :) обновлены.

Я не делаю предположений о том, является ли выбранный сервер обязательно самым близким и самым быстрым. Я не делаю пинг или трюки с GEO DNS - но пока это работает, когда что-то ломается.

Как это работает - в двух словах:

  1. Я использую http://mirrors.ubuntu.com или список зеркал панели запуска для получения серверы.
  2. Я делаю простую проверку каждого (для кода статуса ответа HTTP).
  3. LBNL, я обновляю /etc/apt/sources.list.

Обратите внимание: Это предполагает, что люди играют красиво и ставят дополнительные зеркала (например, сторонние репозитории в /etc/apt/sources.list.d. Но я думаю, это означает, что есть место для улучшений.

] Вы можете получить этот инструмент следующим образом:

$ [sudo] gem install apt-spy2

Cli поставляется с list, check, fix и help (с расширенной информацией о том, как использовать его).

Я пытался документировать как можно больше в проекте README .

Текущая версия очень консервативна 0.5.0.

[ 1128] Код с открытым исходным кодом и лицензия либеральная. И я принимаю все взносы.

0
ответ дан 30 March 2014 в 00:02

Возможно, вы не используете решение, которое вам нравится, но настройка локального кэша для файлов .deb должна быть идеальной, когда вы загружаете несколько МБ пакетов (в основном, я уверен, что они одинаковы) и поскольку вы загружаете из того же пакета. сервер, вы можете пожертвовать ПК, чтобы сделать кеш и сделать сервер менее загруженным.

Процедура

Вы должны иметь возможность установить apt-cacher на машине, на которой много свободного места на жестком диске (она вам понадобится). Вы можете настроить это, используя Руководство по серверу Apt-cacher , но давайте сделаем быстрое резюме.

  1. Установить apt-cacher

    sudo apt-get установить apt-cacher apache2

  2. Редактировать /etc/default/apt-cacher и установить значение autostart в 1 поэтому ваш кеш запускается при включении машины.
  3. Перезапустите apache sudo /etc/init.d/apache2 restart
  4. Проверьте свой кэш, используя http://ip-of.your.cache:3142/apt-cacher.
  5. Вы должны разрешить хосту использовать кеш, поэтому отредактируйте /etc/apt-cacher/apt-cacher.conf и найдите строку allowed_hosts. Вы можете установить подсети, такие как 192.168.0.0/24 или просто * для всех хостов
  6. Ищите быстрый и надежный сервер вокруг . Вы можете использовать apt-spy для этого (эта команда может занять несколько часов, так как она также проверяет скорость каждого сервера).
  7. В ваших клиентах у вас есть две опции:

    • установите sources.list следующим образом:

    deb http: // ip- of.your.cache: 3142 / the.server.you.like / ubuntu / lucid главная ограниченная вселенная мультивселенная

    Измените ip-of.your.cache для ip вашего кеша и the.server.you.like для хоста имя сервера, который вы будете использовать. Вы можете использовать несколько строк.

    • Или установите apt для использования прокси: отредактируйте /etc/apt/apt.conf.d/01proxy и добавьте строку:

    Acquire :: http :: Proxy " http: // ip-of .your.cache: 3142 ";

0
ответ дан 30 March 2014 в 00:02

Вы можете попробовать настроить свое собственное зеркало Ubuntu. Таким образом, обновления будут локальными.

apt-mirror требуется высокоскоростное подключение к Интернету и много дискового пространства

Настроить собственное зеркало Ubuntu очень просто, используя apt-mirror.

1) Зайдите в репозиторий apt-mirror. Создайте резервную копию файла sources.list следующим образом:

sudo cp /etc/apt/sources.list /etc/apt/sources.list.old

2) Отредактируйте файл sources.list следующим образом:

gksudo gedit /etc/apt/sources.list

3) И вставьте следующее в новую строку:

deb http://apt-mirror.sourceforge.net/ apt-mirror

4) Давайте обновим индекс пакета

sudo apt-get update

5) И установим apt-mirror

sudo apt-get install apt-mirror

6) Apt-mirror теперь настроен Итак, давайте расскажем, какие серверы для зеркалирования:

sudo cp /etc/apt/mirror.list /etc/apt/mirror.list.old
gksudo gedit /etc/apt/mirror.list

Конфигурация по умолчанию поместит ваши скачанные файлы в папку / var / spool / apt-mirror. Вот как выглядит файл mirror.list:

############# config ##################
#
set base_path /media/silo/repo
#
# if you change the base path you must create the directories below with write privlages
#
# set mirror_path $base_path/mirror
# set skel_path $base_path/skel
# set var_path $base_path/var
# set cleanscript $var_path/clean.sh
# set defaultarch <running host architecture>
set nthreads 20
set tilde 0
#
############# end config ##############
deb http://archive.ubuntu.com/ubuntu lucid main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu lucid -updates main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu lucid -backports main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu lucid -security main restricted universe multiverse
clean http://archive.ubuntu.com/ubuntu

он отражает только двоичные пакеты, но если вы хотите исходные пакеты, вы должны вставить соответствующие строки. Они обычно принимают вид:

deb-src http://gh.archive.ubuntu.com/ubuntu/ lucid main restricted

7) Теперь запустите apt-mirror. Это займет много времени. Не волнуйтесь, если вы не можете загрузить все файлы за один раз, apt-mirror может возобновить загрузку (убить его комбинацией клавиш Ctrl + C и перезапустить его когда хочешь продолжить). Хорошо, запустите apt-mirror примерно так:

sudo apt-mirror /etc/apt/mirror.list

Также посмотрите Как создать локальное зеркало Debian / Ubuntu с помощью apt-mirror

Source : Используйте Apt-mirror для создания собственного зеркала Ubuntu

0
ответ дан 30 March 2014 в 00:02

Лично я думаю, что лучший способ выбрать лучшие зеркала репозиториев Ubuntu состоит в том, чтобы использовать метод GUI:

download server

Теперь, для улучшения ситуации описало в вопросе, необходимо установить некоторые правила так или иначе. Эти правила должны для действия на mirrors.ubuntu.com. Я могу предложить некоторые правила следующим образом:

  • составьте список лучших/предпочтительных зеркал; существует много зеркал, как Вы видите здесь, здесь или здесь
  • при нахождении хорошего зеркала добавьте его к списку
  • если зеркало снизилось или повреждено иногда, это означает, что это не хорошее зеркало, и необходимо удалить его из списка
  • можно использовать netselect, apt-spy или apt-fast
  • и другие, в зависимости от Ваших требований.

Затем, чтобы видеть, как можно работать вокруг, я могу дать Вам метод, описанный шаг за шагом с тремя примерами сценариев удара. Первый сценарий использует зеркала из страны, в которой Вы находитесь в данный момент вместо mirrors.ubuntu.com/mirrors.txt (для каждой страны существует текстовый файл со связанными зеркалами; см. http://mirrors.ubuntu.com/):

  • В выполненном терминале mkdir -p bin - эта команда сделает a bin каталог в Вашем home папка, если у Вас уже нет его.
  • После выполненный gedit ~/bin/change_sources.sh - это создаст новый файл change_sources.sh в gedit.
  • Скопируйте и вставьте один из следующих сценариев в новом созданном файле:
#!/bin/bash

export DISPLAY=:0

if ! [ "`ping -c 1 google.com`" ]; then
    notify-send "No internet connection"
    exit 0  
fi

ip=$(curl -s 'http://ipecho.net/plain')
country=$(curl -s 'http://geoiplookup.net/geoapi.php?output=countrycode' \
    | awk '{ print toupper($2) }')
release=$(lsb_release -sc)

file="/etc/apt/sources.list"
old_file="/etc/apt/sources.list.old"

line=$(head -n 1 $file)
new_line="## Ubuntu Repos for $ip"

if [ "$line" == "$new_line" ] ; then
    exit 0
fi

cp -f $file $old_file

printf "$new_line
deb mirror://mirrors.ubuntu.com/$country.txt $release main restricted universe multiverse
deb mirror://mirrors.ubuntu.com/$country.txt $release-updates main restricted universe multiverse
deb mirror://mirrors.ubuntu.com/$country.txt $release-backports main restricted universe multiverse
deb mirror://mirrors.ubuntu.com/$country.txt $release-security main restricted universe multiverse
" > $file

notify-send "$file has been changed" "The old file has been put in $old_file"

exit 0

или, что-то подобное тому, что может быть найдено по http://repogen.simplylinux.ch/:

#!/bin/bash

export DISPLAY=:0

if ! [ "`ping -c 1 google.com`" ]; then
    notify-send "No internet connection"
    exit 0  
fi

ip=$(curl -s 'http://ipecho.net/plain')
country=$(curl -s 'http://geoiplookup.net/geoapi.php?output=countrycode' \
    | awk '{ print tolower($2) }')
release=$(lsb_release -sc)

file="/etc/apt/sources.list"
old_file="/etc/apt/sources.list.old"

line=$(head -n 1 $file)
new_line="## Ubuntu Main Repos for $ip"

if [ "$line" == "$new_line" ] ; then
    exit 0
fi

cp -f $file $old_file

printf "$new_line
deb http://$country.archive.ubuntu.com/ubuntu/ $release main restricted universe  multiverse
deb-src http://$country.archive.ubuntu.com/ubuntu/ $release main restricted universe multiverse

## Ubuntu Update Repos for $ip
deb http://$country.archive.ubuntu.com/ubuntu/ $release-security main restricted universe multiverse
deb http://$country.archive.ubuntu.com/ubuntu/ $release-updates main restricted universe multiverse
deb-src http://$country.archive.ubuntu.com/ubuntu/ $release-security main restricted universe multiverse
deb-src http://$country.archive.ubuntu.com/ubuntu/ $release-updates main restricted universe multiverse
" > $file

notify-send "$file has been changed" "The old file has been put in $old_file"

exit 0

или, использование сценария netselect (загрузите отсюда, установите инструкции здесь) как izx объяснил verry хороший в этом ответе:

#!/bin/bash

export DISPLAY=:0

if ! [ "`ping -c 1 google.com`" ]; then
    notify-send "No internet connection"
    exit 0  
fi

url=$(netselect \
    `wget -q -O- https://launchpad.net/ubuntu/+archivemirrors \
        | grep -P -B8 "statusUP|statusSIX" \
        | grep -o -P "(f|ht)tp.*\"" \
        | tr '"\n' '  '` \
    | awk '{print $2}')
release=$(lsb_release -sc)

if [ "$url" == "" ] ; then
    exit 0
fi

file="/etc/apt/sources.list"
old_file="/etc/apt/sources.list.old"

cp -f $file $old_file

printf "## Ubuntu Best Repos
deb http://extras.ubuntu.com/ubuntu $release main
deb-src http://extras.ubuntu.com/ubuntu $release main
deb $url $release main universe restricted multiverse
deb http://security.ubuntu.com/ubuntu/ $release-security restricted universe main multiverse
deb $url $release-updates restricted universe main multiverse
" > $file

notify-send "$file has been changed" "The old file has been put in $old_file"

exit 0
  • Сохраните файл и закройте его.
  • Возвратитесь в терминал и работайте: chmod +x ~/bin/change_sources.sh - предоставить доступ на выполнение для сценария.
  • Только для теста, для запущения нового скрипта, типа в терминале ~/bin/change_sources.sh. Это даст Вам ошибку, потому что Вы не имеете права отредактировать /etc/apt/sources.list. Так, используйте sudo ~/bin/change_sources.sh
  • Отредактируйте crontab использование файла пользователя root sudo crontab -e управляйте и добавьте следующую строку:
@hourly /home/$USER/bin/change_sources.sh  
#change $USER with your user name
  • Я установил задание крона в течение каждого часа, но можно измениться, как Вы желаете или как Вы думаете, лучше. См. http://en.wikipedia.org/wiki/Cron в этом смысле.
  • Сохраните файл и проверьте новую crontab запись с sudo crontab -l.

Примечание: Для возвращения изменений, внесенных этим сценарием, удалите задание крона и следуйте за признаками из изображения выше или используйте следующую команду в терминале:

cp -f /etc/apt/sources.list.bak /etc/apt/sources.list

С этого времени файл будет динамично изменен после того, как он найдет изменение IP-адреса.

Это не может быть лучшее решение, но, по-моему, как хорошее решение можно дать таким образом в сценариях выше.

10
ответ дан 30 March 2014 в 00:02

Другие вопросы по тегам:

Похожие вопросы: