Arch Linux admin el 24 Sep 2007
Cómo crear un mirror local de Arch Linux
<Actualización>
Este post fué publicado originalmente el 18 de Junio de 2007 y ha sido actualizado en fecha 24 de Septiembre de 2007 para que funcione con la nueva organización de repositorios de Arch Linux (se eliminó current y su contenido se distribuyó entre extra y un nuevo repo llamado core, que incluye sólo la base necesaria para que la distribución funcione)
</Actualización>
El siguiente script sincroniza (mediante rsync) un repositorio de Arch con un directorio en local en nuestro PC. Compartiendo este directorio mediante NFS, Samba, FTP o lo que sea, podremos actualizar todas las máquinas de nuestra LAN sin que cada una de ellas deba bajarse las actualizaciones de Internet.
El ejemplo siguente almacena en /repositorio el contenido de core, extra y community para arquitectura i686. En total no llega a 7GB. Si queremos también unstable y testing debemos eliminar las lineas que los excluyen. Lo mismo para las ISOs o para los repositorios de x86_64:
#!/bin/bash # Sincroniza el repositorio de Arch del servidor 'distro.ibiblio.org' # con el directorio /repositorio # Definición de los parámetros usados: # # a, --archive --> archive mode; same as -rlptgoD (no -H) # v, --verbose --> increase verbosity # Definimos el servidor y el directorio local SERVER=distro.ibiblio.org::distros/archlinux/ LOCAL_DIR=/repositorio/ rsync -av \ --delete-after \ --exclude=0.8 \ --exclude=current \ --exclude=iso \ --exclude=x86_64 \ --exclude=images \ --exclude=other \ --exclude=release \ --exclude=unstable \ --exclude=testing \ $SERVER $LOCAL_DIR
Esto puede cambiar según el repositorio fuente usado. En el que uso como ejemplo no se almacenan versiones anteriores a la 0.8, por lo que no hace falta excluirlas.
El parámetro –delete-after es muy importante, sirve para eliminar los paquetes del destino (nuestro PC) cuando ya no están en el origen (por ejemplo, eliminar foo-1.tar.gz si hay disponible foo-2.tar.gz). El resto de parámetros creo que ya están bien explicados en el propio script, para más información: man rsync
El siguente paso es decirle a pacman que no busque los paquetes en Internet sino en /repositorio. Esto es realmente fácil, sólo hay que modificar el fichero /etc/pacman.conf de la siguiente forma:
[core] Server = file:///repositorio/core/os/i686 [extra] Server = file:///repositorio/extra/os/i686 [community] Server = file:///repositorio/community/os/i686
Ahora el siguiente paso es usar cron para automatizar la sincronización, pero esto os lo dejo a vosotros. Para cualquier duda, hay mucha más información en http://wiki.archlinux.org/index.php/Local_Mirror