¿Hay repositorios alternativos a ports.ubuntu.com para ARM?

Respuestas:

23

Sí hay. Aunque no muchos.

Escribí el siguiente script que analizará todos los espejos de la lista de espejos de Launchpad y verificará si contienen la ruta /dists/$DIST/$REPO/binary-$ARCH/donde

  • $DISTes su distribución Ubuntu, por ejemplo, precise, saucy, trusty, ...
  • $REPOes el repositorio que está buscando, es decir, main, restricted, universeo multiverse.
  • $ARCHes la arquitectura que busca, por ejemplo, armhf.

Por el bien de un ejemplo, déjame asumir que tienes Ubuntu 13.10 (Saucy). Entonces es posible que desee buscar en los espejos la ruta /dists/saucy/main/binary-armhf/para descubrir los espejos que ofrecen el mainrepositorio para la armhfarquitectura. Si un espejo contiene esta ruta, significa que debe tener los paquetes binarios para la armhfarquitectura del mainrepositorio de Saucy Salamander, y el script se generará FOUND:junto con la URL del espejo.

Tenga en cuenta: la presencia de esta ruta en un espejo no es en realidad una garantía, sino solo una indicación de que contiene los paquetes necesarios; sin embargo, si un espejo contiene esa ruta pero no los paquetes, al menos podemos decir que hay algo sospechoso con ese espejo.

También tenga en cuenta que el script requiere curl. Instálelo si no lo tiene ( sudo apt-get install curl).

Por lo tanto, con este script, puede descubrir rápidamente qué espejos de la lista de espejos de Launchpad ofrecen lo que necesita. Tenga en cuenta que la secuencia de comandos puede ejecutarse durante bastante tiempo ya que contacta a todos y cada uno de los servidores de esa lista. Estos servidores se distribuyen por todo el mundo y algunos de ellos pueden ser lentos o inalcanzables (de modo que curlpueden detenerse hasta que se agote el tiempo de espera del intento de conexión). Puede mejorarse fácilmente para escanear solo ciertos espejos (por ejemplo, solo en su país), pero es un buen punto de partida.

#!/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

Guardé el script como find_mirrors, lo hice ejecutable ( chmod 755 find_mirrors) y lo ejecuté de la siguiente manera:

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

Me llevó alrededor de 10-15 minutos. Me sorprendió encontrar solo un espejo para la armhfarquitectura de Saucy en la lista de espejos de Launchpad, a saber, el de TU Chemnitz (esto está basado en Alemania; aún puede ser más rápido para usted que ports.ubuntu.com que parece estar basado en Gran Bretaña.) Parece que la respuesta a su pregunta es más como "Sí, hay un espejo alternativo para usted ..." ;-)

La buena noticia es que revisé manualmente este espejo y de hecho es un espejo completo de ports.ubuntu.com , con todos los paquetes para todas las versiones vivas de Ubuntu. Entonces, ¡pruébalo!

Tenga en cuenta también que puede tener más suerte con otra versión que no sea Saucy.

Alternativa (no recomendada)

Menciono esto con el propósito de completar, pero no lo aconsejo. En lugar de buscar en la lista de espejos de Launchpad , por supuesto, también puede simplemente buscar espejos en Google.

Una forma de hacer esto sería simplemente buscar en Google la cadena */dists/saucy/main/binary-armhf/*(distribución de trajes, repositorio y arquitectura según sus necesidades como antes). Esto encontrará muchos espejos alternativos, pero la mayoría no están registrados oficialmente en Launchpad. Por lo tanto, no hay controles de calidad por parte del equipo espejo de Ubuntu; pueden ser lentos, no actualizarse regularmente o contener solo un subconjunto de los paquetes requeridos por un sistema Ubuntu completo, o incluso algunos paquetes modificados. Cuando lo piensa, si alguien quisiera hacer que su espejo esté disponible públicamente, probablemente lo habría registrado en Launchpad, y luego el script anterior lo habría encontrado. Así que google for mirrors bajo su propio riesgo. Si me preguntas, no lo hagas.

Malte Skoruppa
fuente