Si eres parte de los usuarios que normalmente tienen una buena conexión a Internet y actualiza directamente de los repositorios de Arch Linux, este artÃculo no es para ti, sino para aquellos que tienen limitantes en cuanto a ancho de banda.
Como ejemplo pongo mi caso. La conexión a Internet en horario laboral es mucho más lenta que en las noches (cuando todos duermen) como es lógico. Lo que hago es ir a El Palacio Central de Computación, donde hay mejor ancho de banda y se actualizan varios repositorios, y copio el mirror de Arch.
De esta forma, ya solo tengo que actualizar en las noches los paquetes que van entrando poco a poco, que es mucho mejor que bajar 45GB de golpe. pero claro ¿Cómo actualizo?
Pues básicamente hay dos formas muy fáciles de hacerlo, ambas publicadas en la Wiki de Arch Linux.
Usando Rsync
Si tenemos dominio de Rsync, podemos crearnos nuestro propio script que incluya o excluya determinados paquetes a la hora de copiar un mirror de Arch Linux. Si lo quieres más fácil, solo tienes que usar este script:
#!/bin/bash
#################################################################################################
### It is generally frowned upon to create a local mirror due the bandwidth that is required.
### One of the alternatives will likely fulfill your needs.
### REMEMBER:
### * Bandwidth is not free for the mirrors. They must pay for all the data they serve you
### => This still applies although you pay your ISP
### => There are many packages that will be downloaded that you will likely never use
### => Mirror operators will much prefer you to download only the packages you need
### * Really please look at the alternatives on this page:
### https://wiki.archlinux.org/index.php?title=Local_Mirror
### If you are ABSOLUTELY CERTAIN that a local mirror is the only sensible solution, then this
### script will get you on your way to creating it.
#################################################################################################
# Configuration
SOURCE='rsync://mirror.example.com/archlinux'
DEST='/home/usuario/archlinux'
BW_LIMIT='500'
REPOS='core extra'
RSYNC_OPTS="-rtlHq --delete-after --delay-updates --copy-links --safe-links --max-delete=1000 --bwlimit=${BW_LIMIT} --delete-excluded --exclude=.* --log-file=/home/usuario/archlinux/archlinux.log"
LCK_FLE='/var/run/repo-sync.lck'
# Make sure only 1 instance runs
if [ -e "$LCK_FLE" ] ; then
OTHER_PID=`/bin/cat $LCK_FLE`
echo "Another instance already running: $OTHER_PID"
exit 1
fi
echo $$ > "$LCK_FLE"
for REPO in $REPOS ; do
echo "Syncing $REPO"
/usr/bin/rsync $RSYNC_OPTS ${SOURCE}/${REPO} ${DEST}
done
# Cleanup
/bin/rm -f "$LCK_FLE"
exit 0
Acá lo único que tenemos que modificar son las variables:
SOURCE='rsync://mirror.example.com/archlinux' DEST='/home/usuario/archlinux'
Pues tenemos que poner de cual mirror queremos conectarnos y en que carpeta se va a copiar.
Usando LFTP
Si no podemos usar Rsync, ya sea porque el HP del Administrador de nuestro ISP lo tenga bloqueado, o por otro motivo, siempre está la segunda opción, en este caso lftp.
En la Wiki de Arch tenemos este script:
#!/usr/bin/lftp -f lcd /local/path/to/your/mirror open ftp.archlinux.org (or whatever your favorite mirror is) # Use 'cd' to change into the proper directory on the mirror, if necessary. mirror -cve -x '.*i686.*' core & mirror -cve -x '.*i686.*' extra & mirror -cve -x '.*i686.*' community & mirror -cve -x '.*i686.*' multilib & lcd pool cd pool mirror -cve -x '.*i686.*' community & mirror -cve -x '.*i686.*' packages &
Aunque particularmente cuando uso LFTP, tengo otra variante. Lo que hago es poner en un archivo.txt lo siguiente:
lftp -e "mirror --delete --only-newer /archlinux/extra/os/x86_64/ /home/usuario/archlinux/extra/os/x86_64/" http://mirror.us.leaseweb.net/ lftp -e "mirror --delete --only-newer /archlinux/community/os/x86_64/ /home/usuario/archlinux/community/os/x86_64/" http://mirror.us.leaseweb.net/ lftp -e "mirror --delete --only-newer /archlinux/multilib-staging/os/x86_64/ /home/usuario/archlinux/multilib-staging/os/x86_64/" http://mirror.us.leaseweb.net/ lftp -e "mirror --delete --only-newer /archlinux/core/os/x86_64/ /home/usuario/archlinux/core/os/x86_64/" http://mirror.us.leaseweb.net/ lftp -e "mirror --delete --only-newer /archlinux/extra/os/i686/ /home/usuario/archlinux/extra/os/i686/" http://mirror.us.leaseweb.net/ lftp -e "mirror --delete --only-newer /archlinux/community/os/i686/ /home/usuario/archlinux/community/os/i686/" http://mirror.us.leaseweb.net/ lftp -e "mirror --delete --only-newer /archlinux/multilib-staging/os/i686/ /home/usuario/archlinux/multilib-staging/os/i686/" http://mirror.us.leaseweb.net/ lftp -e "mirror --delete --only-newer /archlinux/core/os/i686/ /home/usuario/archlinux/core/os/i686/" http://mirror.us.leaseweb.net/
Y ejecuto:
lftp -f /ruta/archivo.txt
Y asà es como actualizo mis repositorios locales…