Como crear un repositorio local de Ubuntu

Cuando tienes una red de ordenadores todos con la misma distro, resulta muy molesto tener que estar bajando las actualizaciones para todos de internet, o cualquier paquete, cuando lo más fácil sería bajarlo para una y que desde ahí se propague al resto, y no tener que estar saturando los servidores de Ubuntu, ni perdiendo el tiempo en bajar el mismo paquete x veces, así que tienes dos opciones o crearte un repositorio con apt-cacher, así bajas el paquete una sola vez para un PC y ya los demás lo leen desde ese PC, o montarte un repositorio local con apt-mirror, esto es más pesado pero tienes todos los paquetes y si creas un cron se actualizan a diario, la primera vez tienes que bajarte unos 52 Gb pero ya las siguientes sólo las actualizaciones.

Vamos a realizar la explicación de cómo crearlo de la forma más fácil posible:

1)Instalamos apt-mirror en Hardy Heron, también necesitaremos tener apache corriendo en el PC, mediante apt-get:

sudo apt-get install apt-mirror

Si no disponemos de apache instalado haremos sudo apt-get install apache2.

2)El archivo de configuración, que está en /etc/apt/mirror.list debe quedar:
############# config ##################
#
# set base_path /var/spool/apt-mirror
#
# if you change the base path you must create the directories below with write privlages
#
# set mirror_path $base_path/mirror
# set skel_path $base_path/skel
# set var_path $base_path/var
# set cleanscript $var_path/clean.sh
# set defaultarch
set nthreads 20
set tilde 0
#
############# end config ##############
deb http://archive.ubuntu.com/ubuntu hardy main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu hardy -updates main restricted universe multiverse
#deb http://archive.ubuntu.com/ubuntu hardy -backports main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu hardy -security main restricted universe multiverse
#deb http://archive.ubuntu.com/ubuntu hardy -proposed main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu hardy main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu hardy -updates main restricted universe multiverse
#deb-src http://archive.ubuntu.com/ubuntu hardy -backports main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu hardy -security main restricted universe multiverse
#deb-src http://archive.ubuntu.com/ubuntu hardy -proposed main restricted universe multiverse
clean http://archive.ubuntu.com/ubuntu
Puedes incluir todos los repositorios que quieras de tu sources.list en mirror.list.

3)Ya que está configurado nuestro mirror.list pasamos a descargarnos los repositorios, para ello ejecutaremos apt-mirror: sudo apt-mirror, esto dura bastante tiempo porque hay que bajar 52Gb, y hay que tener libre ese espacio en nuestro disco duro.

4)Después de finalizar el proceso procederemos a eliminar los paquetes que sobran, para ello ejecutamos /bin/bash /var/spool/apt-mirror/var/clean.sh, y tendremos unos cuantos megas libres en paquetes obsoletos que han sido eliminados.

5)Ahora cada vez que queramos actualizar el repositorio ejecutamos sudo apt-mirror, si queremos tenerlo actualizado diariamente editamos el archivo etc/cron.d/apt-mirror, y lo dejamos como este:

#
# Regular cron jobs for the apt-mirror package
#
0 4 * * * apt-mirror /usr/bin/apt-mirror > /var/spool/apt-mirror/var/cron.log

Esto ejecutará la actualización de nuestro repositorio todos los días a las 4 de la mañana.
Como funciona el CRON, esta es la descripción de las columnas:
# m h dom mon dow /commando/a/ejecutar

# : espacio vacío (no poner nada)
m : minuto (0 – 59)
h : hora (0 – 23)
dom : día del mes (1 – 31)
mon : mes (1 – 12)
dow : día de la semana (0 – 6) (dom=0)

6)Ahora sólo resta hacer el repositorio disponible a través de apache, para ello ejecutamos:
ln -s /var/spool/apt-mirror/mirror/archive.ubuntu.com/ubuntu /var/www/, y ya estará disponible nuestro repositorio.

7)Sólo resta configurar las máquinas clientes de ese repositorio, editamos /etc/apt/sources.list, y ponemos en todas las entradas la dirección de la maquina que sirve como repositorio, aquí uno de ejemplo:

deb http://localhost/ubuntu/ hardy main restricted universe multiverse
deb-src http://localhost/ubuntu/ hardy main restricted universe multiverse
deb http://localhost/ubuntu/ hardy-updates main restricted universe multiverse
deb-src http://localhost/ubuntu/ hardy-updates main restricted universe multiverse
deb http://localhost/ubuntu/ hardy-security main restricted universe multiverse
deb-src http://localhost/ubuntu/ hardy-security main restricted universe multiverse

Listo ya podemos empezar a utilizar nuestro repositorio.