Существуют ли альтернативные хранилища для ports.ubuntu.com для ARM?

14

Я использую на хромбук Samsung (с чипом ARM). ports.ubuntu.com - довольно медленное зеркало для меня. Есть ли другие зеркала, которые несут пакеты ARM?

https://wiki.ubuntu.com/UbuntuDevelopment/PackageArchive#Ports, похоже, указывают на то, что их нет, или, по крайней мере, очень мало - есть ли они?

джа
источник

Ответы:

23

Да это так. Хотя не много.

Я написал следующий скрипт, который будет анализировать все зеркала из списка зеркал Launchpad и проверять, содержат ли они путь, по /dists/$DIST/$REPO/binary-$ARCH/которому

  • $DISTэто ваше распределение Ubuntu, например, precise, saucy, trusty, ...
  • $REPOэто хранилище , что вы ищете, то есть main, restricted, universeили multiverse.
  • $ARCHэто архитектура, которую вы ищете, например armhf.

Для примера позвольте мне предположить, что у вас Ubuntu 13.10 (Saucy). Затем вы можете искать в зеркалах путь, /dists/saucy/main/binary-armhf/чтобы найти зеркала, которые предлагают mainхранилище для armhfархитектуры. Если зеркало содержит этот путь, это означает, что у него должны быть бинарные пакеты для armhfархитектуры mainрепозитория для Saucy Salamander, и сценарий будет выводиться FOUND:вместе с URL-адресом зеркала.

Обратите внимание: наличие этого пути на зеркале на самом деле не гарантия, а всего лишь указание на то, что он содержит необходимые пакеты; однако, если зеркало содержит этот путь, но не пакеты, по крайней мере, мы можем сказать, что с этим зеркалом есть что-то подозрительное.

Также обратите внимание, что скрипт требует curl. Установите его, если у вас его нет ( sudo apt-get install curl).

Таким образом, используя этот скрипт, вы можете быстро узнать, какие зеркала из списка зеркал Launchpad предлагают то, что вам нужно. Обратите внимание, что скрипт может запускаться довольно долго, поскольку он связывается со всеми серверами в этом списке. Эти серверы распределены по всему миру, и некоторые из них могут быть медленными или недоступными (такими, которые curlмогут зависнуть до истечения времени ожидания попытки подключения). Это может быть легко улучшено для сканирования только определенных зеркал (например, только в вашей стране), но это хорошая отправная точка.

#!/bin/bash

# URL of the Launchpad mirror list
MIRROR_LIST=https://launchpad.net/ubuntu/+archivemirrors

# Set to the architecture you're looking for (e.g., amd64, i386, arm64, armhf, armel, powerpc, ...).
# See https://wiki.ubuntu.com/UbuntuDevelopment/PackageArchive#Architectures
ARCH=$1
# Set to the Ubuntu distribution you need (e.g., precise, saucy, trusty, ...)
# See https://wiki.ubuntu.com/DevelopmentCodeNames
DIST=$2
# Set to the repository you're looking for (main, restricted, universe, multiverse)
# See https://help.ubuntu.com/community/Repositories/Ubuntu
REPO=$3

# First, we retrieve the Launchpad mirror list, and massage it to obtain a newline-separated list of HTTP mirrors
for url in $(curl -s $MIRROR_LIST | grep -Po 'http://.*(?=">http</a>)'); do
  # If you like some output while the script is running (feel free to comment out the following line)
  echo "Processing $url..."
  # retrieve the header for the URL $url/dists/$DIST/$REPO/binary-$ARCH/; check if status code is of the form 2.. or 3..
  curl -s --head $url/dists/$DIST/$REPO/binary-$ARCH/ | head -n 1 | grep -q "HTTP/1.[01] [23].."
  # if successful, output the URL
  [ $? -eq "0" ] && echo "FOUND: $url"
done

Я сохранил скрипт как find_mirrors, сделал его исполняемым ( chmod 755 find_mirrors) и выполнил его следующим образом:

$ ./find_mirrors armhf saucy main | grep FOUND
FOUND: http://ftp.tu-chemnitz.de/pub/linux/ubuntu-ports/

Это заняло у меня минут 10-15. Я был удивлен, обнаружив в зеркале armhfLaunchpad только одно зеркало для архитектуры Saucy, а именно то, что находится в TU Chemnitz (это базируется в Германии; оно все еще может быть быстрее для вас, чем ports.ubuntu.com, который, кажется, основан на в Великобритании.) Так что, кажется, ответ на ваш вопрос больше похож на «Да, есть одно альтернативное зеркало для вас ...» ;-)

Хорошей новостью является то, что я вручную проверил это зеркало, и оно действительно является полным зеркалом ports.ubuntu.com со всеми пакетами для всех живых выпусков Ubuntu. Итак, попробуйте!

Обратите внимание, что вам может повезти больше с другим выпуском, чем с Saucy.

Альтернатива (не рекомендуется)

Я упоминаю это с целью полноты, но я не советую это. Вместо того, чтобы смотреть в список зеркал Launchpad , вы, конечно, можете просто поискать зеркала в Google.

Один из способов сделать это - просто поискать строку в гугле */dists/saucy/main/binary-armhf/*(подгонять дистрибутив, репозиторий и архитектуру под свои нужды, как и раньше). Это найдет много альтернативных зеркал, но большинство из них официально не зарегистрированы на Launchpad. Следовательно, нет никаких проверок качества командой зеркал Ubuntu; они могут быть медленными, не регулярно обновляться или содержать только подмножество пакетов, необходимых для полной системы Ubuntu, или даже некоторые модифицированные пакеты. Когда вы думаете об этом, если бы кто-то хотел сделать свое зеркало общедоступным, он, вероятно, зарегистрировал бы его на Launchpad, и тогда вышеприведенный скрипт нашел бы его. Так что гуглите на зеркала на свой страх и риск. Если вы спросите меня, не делайте этого.

Malte Skoruppa
источник