jueves, 5 de enero de 2017

Instrucciones para instalar apt-fast en Raspberry Pi y Armbian

 Muchas veces se experimenta que las actualizaciones de los paquetes debian desde los repositorios son bastante lentos, especialmente cuando el RPi está conectado por WiFi. Esto se puede mejorar bastante al usar el comando apt-fast que permite la actualización en paralelo en vez de secuencial como lo hace por defecto el comando apt-get.

1) Clonar repositorio desde GIT e instalar

$ sudo apt-get install git aria2
$ cd ~/Download
$ git clone https://github.com/ilikenwf/apt-fast.git
$ cd apt-fast
$ sudo make

Esto instala el script, las ayudas de autocompletar y páginas de manual (man apt-fast).

2) Determinar posibles repositorios alternativos (mirrors)

Desde la lista de mirrors disponibles en http://www.raspbian.org/RaspbianMirrors se deben elegir los mas cercanos, probando con la herramienta netselect la conectividad. En el caso de Armbian, la lista de paquetes se obtiene directamente desde https://www.debian.org/mirror/list
Esta se instala como
$ sudo apt-get install netselect

Luego de instalada, se pueden probar los mejores 5 con el comando:
$ sudo netselect -I -s 5 -vv <lista de mirrors separados por espacios>

Ejemplo para RPi:
$ sudo netselect -I -s 5 -vv http://mirror.uchile.cl/raspbian/ \
   http://mirrors.coopvgg.com.ar/raspbian/raspbian/ \
   http://raspbian.c3sl.ufpr.br/raspbian/ \
   http://mirror.nbtelecom.com.br/raspberryPI/raspbian/ \
   http://raspbian.mirrors.lucidnetworks.net/raspbian/ \
   http://mirror.umd.edu/raspbian/raspbian \
   http://mirrordirector.raspbian.org/raspbian

Running netselect to choose 5 out of 7 addresses.       
.............................................................
http://raspbian.mirrors.lucidnetworks.net/raspbian/   9999 ms  30 hops    0% ok
http://mirror.uchile.cl/raspbian/       11 ms   8 hops  100% ok (10/10) [   19]
http://raspbian.c3sl.ufpr.br/raspbian/    247 ms  20 hops  100% ok (10/10) [  741]
http://mirrors.coopvgg.com.ar/raspbian/raspbian/   9999 ms  30 hops    0% ok
http://mirrordirector.raspbian.org/raspbian    219 ms  22 hops  100% ok (10/10) [  700]
http://mirror.nbtelecom.com.br/raspberryPI/raspbian/    150 ms  13 hops  100% ok (10/10) [  345]
http://mirror.umd.edu/raspbian/raspbian    137 ms  16 hops  100% ok (10/10) [  356]
   19 http://mirror.uchile.cl/raspbian/
  345 http://mirror.nbtelecom.com.br/raspberryPI/raspbian/
  356 http://mirror.umd.edu/raspbian/raspbian
  700 http://mirrordirector.raspbian.org/raspbian
  741 http://raspbian.c3sl.ufpr.br/raspbian/

Ejemplo con Debian (Armbian):
$ sudo netselect -I -s 5 -vv http://httpredir.debian.org/debian http://mirrors.tecnoera.com/debian/ \
   http://ftp.us.debian.org/debian/ \
   http://debian.mirror.constant.com/debian/ \
   http://mirrors.kernel.org/debian/ \
   http://mirrors-usa.go-parts.com/debian/

Running netselect to choose 5 out of 12 addresses.
..................................................................................................................
http://debian.mirror.constant.com/debian/    161 ms  16 hops  100% ok (10/10) [  418]
http://198.145.20.143/debian/          195 ms  26 hops   90% ok ( 9/10) [  781]
http://149.20.37.36/debian/            179 ms  22 hops  100% ok (10/10) [  572]
http://mirrors.tecnoera.com/debian/     14 ms  11 hops  100% ok (10/10) [   29]
http://5.153.231.35/debian             217 ms  26 hops   87% ok ( 7/ 8) [  892]
http://128.31.0.66/debian              143 ms  19 hops   66% ok ( 2/ 3) [  623]
http://208.80.154.15/debian/           158 ms  20 hops  100% ok (10/10) [  474]
http://128.30.2.26/debian/             151 ms  19 hops   66% ok ( 2/ 3) [  658]
http://64.50.236.52/debian/            154 ms  15 hops  100% ok (10/10) [  385]
http://128.61.240.89/debian/           164 ms  17 hops  100% ok (10/10) [  442]
http://64.50.233.100/debian/           138 ms  16 hops  100% ok (10/10) [  358]
http://mirrors-usa.go-parts.com/debian/   9999 ms  30 hops    0% ok
   29 http://mirrors.tecnoera.com/debian/
  358 http://ftp.us.debian.org/debian/
  385 http://ftp.us.debian.org/debian/
  418 http://debian.mirror.constant.com/debian/
  442 http://ftp.us.debian.org/debian/

3) Configurar repositorios alternativos (mirrors)

Se debe editar el archivo /etc/apt-fast.conf con el comando:
$ sudo nano /etc/apt-fast.conf
en este se debe buscar la sección MIRRORS= editando el contenido a la lista de repositorios alternativos, separándolos con comas y espacios.
Ejemplo RPi:
MIRRORS=( ' http://mirror.uchile.cl/raspbian/,
   http://mirror.umd.edu/raspbian/raspbian, 
   http://mirrordirector.raspbian.org/raspbian' )
Ejemplo Debian (Armbian):
MIRRORS=( 'http://mirrors.tecnoera.com/debian/, 
   http://ftp.us.debian.org/debian/,
   http://debian.mirror.constant.com/debian/, 
   http://httpredir.debian.org/debian' )

Además aprovechar de editar la línea DOWNLOADBEFORE= cambiándola al valor TRUE en caso que no los esté. Con esto se evita el molesto dialogo preguntando si baja los paquetes automáticamente en paralelo.
DOWNLOADBEFORE=true

4) probar funcionamiento

$ sudo apt-fast update
$ sudo apt-fast upgrade