Crea tu repositorio local de Arch Linux

repositorio

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…


Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.

  1.   Curefox dijo

    Muy util y practico.

  2.   Cocolio dijo

    Muy bueno la verdad, siempre me he preguntado cómo se realizaba esta tarea pero nunca me digné en averiguar cómo se hacía, ojalá y publiques cómo apuntar el actualizador de repositorios al disco loca, gracias.

    1.    Julio Cesar dijo

      pacman.conf

      [arch]
      Siglevel = PackageRequired
      Server = file:///mnt/repo/arch

    2.    elav dijo

      Uff, sabía que se me quedaba algo.

  3.   Carlos dijo

    Hace un tiempo también me vi en la necesidad de realizar esto porque tenia que reinstalar todo mi sistema Archlinux y no queria descargar todo gnome y aplicaciones de nuevo ya que tengo conexion limitada. No se si se puede dejar otro sitio aqui pero por si a alguien le interesa http://www.kr105.shekalug.org/2011/10/16/crear-un-repositorio-local-en-archlinux/ 🙂

  4.   just-another-dl-user dijo

    ¿Cuantos GB pesa el repositorio completo de ArchLinux ?

    1.    ldd dijo

      algo por los 40GB, lo que quisiera saber es solo podemos copiar los paquetes para 64bits y descartar i686

  5.   Azazel dijo

    Arch… (suspiro) Algun día cuando tenga mi propia compu provare instalarlo.

  6.   eliotime3000 dijo

    Me gustaría que hubiese una versión LTS de Arch, y usar el AUR como backport.

    1.    freebsddick dijo

      pues no se .. quizas en el planerta de los simios sea posible

      1.    eliotime3000 dijo

        Como me di cuenta que no hay, entonces, me dedicaré a sacarle el jugo a Slackware y a aprender más acerca de OpenBSD.

    2.    cookie dijo

      Jaja eso sería todo lo contrario a lo que representa Arch.

  7.   gustawho dijo

    En mi caso, por lo general, siempre encuentro el paquete que busco, ya sea en el repo oficial, o en AUR, aunque cuando no es así, mi repo personal nunca me falla.

    Al parecer, Elav se ha contagiado del virus Arch+versionitis 😛

    1.    gustawho dijo

      Wow, así que el browser de Steam usa WebKit 😮
      *Jugando Portal desde mi Arch*

  8.   xino93 dijo

    elav ya que estan posteando arto de arch podrias hacer un post para dejar bonito KDE, ojala y fuera sin paquetes de AUR…

    1.    elav dijo

      Para poner bonito a KDE no se necesitan los AUR, solo kde-look.org y devianart.com para encontrar buenos temas para Plasma, Aurorae, QtCurve, Iconos… y demás. De todos modos, lo anoto en mi ToDo.

  9.   Tito dijo

    Hola. Llevo un mes visitando este blog, y este es mi primer comentario.

    Para Debian y los repositorios del estilo, como Ubuntu, etc, existe un paquete: debmirror. Una vez instalado, hay que configurarlo indicando los repositorios, arquitectura, etc que se quieran sincronizar. Debmirror es un script en perl que utiliza rsync.

    Hace años fui profesor de un módulo de informática, en el que entre otras cosas tenía que enseñar a instalar un sistema operativo. Mi elección Debian. Usábamos el CD netinst. Como había que descargar todos los paquetes por cada alumno, eran 20, y la conexión a internet era mala, aquello no iba bien. En un primer momento utilicé un proxy, pero no mejoró mucho. Así que decidí instalar un pequeño servidor donde instalé los repositorios que utilizaba. De esta manera la instalación iba fluida, incluso picos de 100 Mbit/s, lo que daba la red. Los alumnos tenían que indicar que los repositorios estaban en el servidor del aula y accedían a él por FTP. Los repositorios de Debian Lenny ocupaban algo más de 20 GB y los sincronizaba dos veces a la semana, lunes y jueves a las 2:00 AM.

    Saúdos,

  10.   Leo dijo

    Muy buena guia. Es cierto que al principio Arch parece complicado en demasia pero gracias a guias como estas no hay nada imposible.

  11.   gato_sk8 dijo

    gracias

  12.   Jordi dijo

    Hola .. mi problema tambien es la velocidad de internet ..pero uso ubuntu ..puedo hacer lo mismo pero para ubuntu?
    Gracias

  13.   bosito7 dijo

    Gracias Elav nosotros por aca tambien estamos quemaos con el rsync, gracias por mostrarnos una alternativa, salu2 desde santiago