A la hora de descargar paquetes desde los repositorios de nuestra distribución GNU/Linux, es importante configurar los mirrors más veloces a fin de que la descarga se realice en el menor tiempo posible. Usualmente se recomienda seleccionar para este fin los mirrors más cercanos a nuestra ubicación, aunque en la práctica esto no siempre es lo más adecuado, puesto que influye más la velocidad de respuesta del mismo servidor donde se aloja el mirror.
En el caso de Arch Linux, en la página de Mirror Status los desarrolladores han colgado una tabla con todos los mirrors conocidos y que se actualiza automáticamente mostrando el estado de los mismos y su velocidad de respuesta. Si quisiéramos podríamos tomar de ahí aquéllos que nos agraden e introducirlos manualmente en nuestro mirrorlist, aunque para ayudarnos a hacer esta tarea más fácil existe Reflector.
Reflector es un script que se encarga de consultar los datos proporcionados por Mirror Status y nos permite trabajar con ellos de diferentes formas mediante comandos en la consola. Ahora vamos a ver cómo utilizarlo para que nos configure automáticamente los mirrors más veloces antes de cada actualización.
Instrucciones
Vamos a comenzar instalando el paquete de Reflector desde los repositorios:
# pacman -S reflector
Para ver todas las opciones disponibles podemos echar un vistazo a su manual de ayuda:
$ reflector --help
Un uso básico sería este:
# reflector --sort rate -l 5 --save /etc/pacman.d/mirrorlist
Explicación:
- –sort: Le indica a Reflector qué parámetro debe usar para ordenar los mirrors. Las opciones disponibles son rate (velocidad de descarga), score (puntuación en Mirror Status), country (país de ubicación), age (antigüedad de la última sincronización) y delay (tiempo de retraso). En este caso le estamos diciendo que nos los ordene según su mejor velocidad de descarga.
- -l: Limita el número de resultados a la cantidad de mirrors que le indiquemos, tomando en cuenta su fecha de última sincronización. Aquí le decimos que nos proporcione los 5 mirrors más recientes.
- –save: Establece el archivo en donde imprimirá esos 5 mirrors más veloces y más recientes que encontró. El archivo donde los necesitamos es obviamente nuestro mirrorlist. Es muy importante hacer antes un respaldo del mirrorlist original. Durante la instalación, Arch Linux crea uno automáticamente en /etc/pacman.d/mirrorlist.original, pero no está de más asegurarse de que esté ahí o crear uno si no existe.
De esta manera, para descargar desde los mejores mirrors bastaría con hacer un respaldo de nuestro mirrorlist original y después llamar a Reflector con el comando ya mencionado. Sin embargo, evidentemente se trata de un comando muy largo que seguramente nos sea difícil de recordar o nos de pereza escribir. Una buena alternativa sería entonces crear un alias para invocarlo con un comando más sencillo.
En una instalación común con Bash solo tenemos que abrir el archivo ~/.bashrc con un editor de texto y meter al final una línea como esta:
alias nombre_del_alias='comandos a ejecutar'
Aplicar los cambios:
$ . .bashrc
Y con eso ya podremos ejecutar las órdenes que queramos con un comando personalizado. Por ejemplo, para Reflector yo uso esto:
alias update='sudo reflector --sort rate -l 5 --save /etc/pacman.d/mirrorlist && yaourt -Syyu --aur --devel'
Gracias a ese alias, cuando quiero actualizar el sistema lo único que tengo que hacer es escribir update en la terminal, lo que hace que Reflector imprima en el mirrorlist los 5 mirrors más veloces y más recientemente sincronizados, y seguidamente se ejecute Yaourt para efectuar una actualización completa tanto de los paquetes de los repositorios oficiales como los de AUR y devel.
Ahora resta a cada quien personalizar el alias acorde a sus necesidades. Tal vez quieran usar el mismo que yo o prefieran crear uno solo para Reflector, o sustituir a Yaourt por Packer o simplemente Pacman. Las posibilidades son infinitas.
Para terminar, cabe señalar que usar Reflector antes de cada actualización hará que inicialmente demore un poco más de lo normal en lo que realiza la consulta a Mirror Status, aunque se compensará con la mayor velocidad que proveerá al descargar los paquetes.
12 comentarios, deja el tuyo
Yo hace varios meses tengo problemas con los mirrors. A pesar de usar reflector, cada una o dos semanas, me da error con ellos al actualizar; como si estuviesen caídos y eso que uso generalmente los europeos (antes usaba los brasileros). Así que los tengo que cambiar continuamente.
Cuando tenga tiempo me voy a dedicar a averiguar cual es el problema.
Buen post, saludos.
Me pasaba lo mismo, precisamente fue por eso que hice el alias para llamar a Reflector antes de cada actualización, ya que de lo contrario, si un mirror me funcionaba bien en una actualización, para la siguiente era posible que ya no estuviera respondiendo.
Yo he experimentado problemas con las decargas no sólo en Ubuntu, sino con la instalación de Arch, Debian, Suse…en dónde, repentinamente, la velocidad de descarga, principalmente de archivos mayores como kernel, libreoffice o linux firmware, baja de 640 Kb/s a 22 Kb/s, y se hace una eternidad, pero…hay un bug, ¡Dios lo bendiga!, que me permite acelerar la descarga:
Cuándo ocurre esa desavenencia, lo que suelo hacer es lanzar el navegador Firefox, y la descarga sube a 1200 Kb/s durante unos 10 segundos y comienza a bajar nuevamente, por lo que lo sigo abriendo y cerrando, o abriendo y cerrando páginas, cuánto más tiempo tarden en cargar más largo será el impulso, hasta finalizar la descarga de archivos.
El hecho de que suba a 1200 kb/s creo que se debe al contrato adsl hasta 10 Mb aunque habitualmente sólo llegan 5, si acaso.
Espero que a alguien le ayude, ¡ah!, y también se puede utilizar durante la instalación, anoche estuve instalando Chromixium en VirtualBox para testearlo y luego instalarlo en un portatil de alguien que necesita migrar de Güindous, aunque al final le instale Antix, y lanzando el Chrome se aceleró enormemente el tiempo de descarga.
Saludos.
Menciono como detalle de que Bridge Linux -basada en Arch- incorpora Reflector por defecto, así el proceso era solamente aplicar «sudo pacman -Syyu» y Reflector trabajaba de manera automática.
¿De casualidad sabes qué parámetros utiliza el Reflector de esa distro?
El siguiente paste es parte del script post-instalación de Bridge Linux: http://paste.desdelinux.net/5059
Más info acá:
http://millertechnologies.net/forum/index.php?topic=829.msg4300#msg4300
Ya veo, lo tienen configurado para tomar los mirrors sincronizados en las últimas 10 horas y usan el parámetro -f en vez de –sort rate para listar los 5 mirrors más rápidos. La verdad nunca he entendido por qué Reflector tiene esas opciones duplicadas; así como tiene también –sort country y –country. Sería cuestión de investigar qué ventajas tiene una sobre la otra. Gracias por el aporte. 🙂
Hello!
You could also try https://aur.archlinux.org/packages/?O=0&SeB=nd&K=rate+arch+mirrors+&outdated=&SB=n&SO=a&PP=50&do_Search=Go
just to compare with Reflector.
Maravillosa entrada. Gracias por el dato, ni siquiera había reparado en que alias podría servir en este sentido. Lo voy a aplicar en mis dos computadoras con Arch.
Un inconveniente es que los mirrors más rápidos no siempre estan sincronizados con los últimos paquetes.
En varias ocaciones he revisado que en la página principal de Arch muestra la actualización de X paquete pero ni con -Syyu me aparece tal actualización. Por ello prefiero «–sort score» sobre «–sort rate».
Tambien podemos utilizar un script desde aur lo podemos descargar «armrr-git»
Hola, yo despues de hacer esto yaourt me lanza el siguiente error:
AUR error : Invalid query arguments
error: base de datos no encontrada: aur
He modificado el bashrc dejandolo de origen, he desinstalado reflector, he puesto el mirrorlist de origen y he reinstalado yaourt, pero no encuentra la base de datos aur, en pacman.conf si esta el repo archlinuxfr, pero no se por donde tirar
Un saludo