(Actualizado, el anterior enlace ya no funciona):
https://www.mankier.com/1/debmirror
Para descargar este paquete usamos:
SHELL
# aptitude install debmirror debian-keyring
# aptitude install debmirror debian-keyring
Las opciones que usa debmirror, se las explico aquí:
--host: Indica el host desde donde se descargarán los paquetes.
--method: Indica el método de descarga
--root: El nombre de carpeta raíz.
-d: Distribuciones a descargar.
--arch: Indica las arquitecturas de los paquetes a descargar.
--section: Las secciones a descargar.
--source: Descarga los archivos fuente. Si no quieren descargar los archivos fuentes, cambian esta opción por --nosource.
-v: Imprime el progreso de las descargas de los paquetes.
-p: Imprime las barra de progreso de descarga de los paquetes.
--cleanup: Limpia cualquier archivo o directorio en el repositorio local, desconocido para el repositorio remoto.
--passive: Descargar de forma pasiva cuando descarga con FTP.
--method: Método de descarga, podría ser RSync.
--rsync-options: Opciones si se descarga con RSync.
A continuación les muestro un script usando debmirror, en el cual se descargan 2 repositorios, el principal y el repositorio de seguridad. Lo llamaremos repositorio.sh:
#!/bin/bash
# Réplica del repositorio Debian.
echo -e "Inicio de la actualización:\n`date`\n"
# # # # # # # # # # # # # # # # # # # #
# Definición de variables para el espejo BUSTER
# # # # # # # # # # # # # # # # # # # #
#
#
# espejo es el directorio local donde se descargarán los paquetes
espejo="/repositorio_local/debian"
# host es el repositorio remoto
host='--host=ftp.br.debian.org'
# method es el método de descarga
method='--method=http'
# root es el directorio root en el repositorio remoto
root='--root=/debian'
# dist es la distribución a descargar: lenny, squeeze, wheezy,
# etc.
# etc.
dist='-d stable'
# arch es la arquitectura de los paquetes: i386, amd64, etc.
arch="--arch=i386,all"
# section son las secciones a descargar
section="--section=main,contrib,non-free"
# source indica si se descargan las fuentes, con la opcion --source
# para descargar y --nosource para no descargarlos.
source="--nosource"
# modif son opciones extras para la descarga
# Para no verificar las claves de los repositorios remotos
# utiliza modif así:
# modif='-v -p --cleanup --ignore-release-gpg --passive'
# Para no verificar las claves de los repositorios remotos
# utiliza modif así:
# modif='-v -p --cleanup --ignore-release-gpg --passive'
# modif son opciones extras para la descarga
# Para descargar con RSync, hacerlo de la siguiente forma:
modif='-v -p --cleanup --passive --ignore-release-gpg --ignore-missing-release --no-check-gpg --ignore-small-errors'# Para descargar con RSync, hacerlo de la siguiente forma:
# modif='-v -p --cleanup --getcontents \
#--rsync-options="-aIL --partial --no-motd \
#--chmod=u=rw,go=r,D+x" --method=rsync'
# reflejos es la función general para descargar cualquier repositorio con
# las variables que le pasemos
function reflejos
{
eval "debmirror $espejo $host $method $root $dist $arch $section $source $modif"
}
# # # # # # # # # # # # # # # # # # #
# Genera espejo para BUSTER
# # # # # # # # # # # # # # # # # # #
#
#
reflejos
# # # # # # # # # # # # # # # # # # #
# Definición de variables para el espejo SECURITY
# # # # # # # # # # # # # # # # # # #
#
#
espejo='/repositorio_local/debian-security'
host='--host=security.debian.org'
root='--root=/debian-security'
dist='-d stable/updates'
# # # # # # # # # # # # # # # # # # #
# Genera espejo para SECURITY
# # # # # # # # # # # # # # # # # # #
#
#
reflejos
# Decomenta estas dos líneas si sabes en qué disco o partición está tu
# repositorio local, cambiando /dev/hda6 por el disco o partición
# donde está.
# donde está.
# observa=`df -h /dev/hda6`
# echo -e "Estado del disco:\n$observa\n\n"
echo -e "Fin de la actualización:`date`\n\n"
#
#
# FIN
Ejecutamos el script en una cónsola:
SHELL
$ bash repositorio.sh
$ bash repositorio.sh
Y esperamos a que se descargue el repositorio. Se tardará varias horas, dependiendo de la conexión a Internet.
Agregamos a /etc/apt/source.lst los repositorios locales:
deb http://localhost/debian buster main contrib non-free
deb http://localhost/debian-security buster/updates main contrib non-free
deb http://localhost/debian-security buster/updates main contrib non-free
Cambiando los valores de las variables del script repositorio.sh podemos hacer un repositorio Ubuntu también, de la misma forma, pero cambiando los parámetros. Se los dejo de tarea. Aquí tienen un ejemplo para 12.04:
debmirror \
--host=us.archive.ubuntu.com \
--root=/ubuntu \
--cleanup --nosource \
--progress \
--md5sums --passive \
--arch=i386,amd64,all \
--dist=precise,precise-updates,precise-security,precise-backports \
--section=main,restricted,universe,multiverse \
--method=rsync \
--rsync-options "-rplthi --delete-after --stats --partial" \
/home/repositorios/ubuntu12.04
exit
debmirror \
--host=us.archive.ubuntu.com \
--root=/ubuntu \
--cleanup --nosource \
--progress \
--md5sums --passive \
--arch=i386,amd64,all \
--dist=precise,precise-updates,precise-security,precise-backports \
--section=main,restricted,universe,multiverse \
--method=rsync \
--rsync-options "-rplthi --delete-after --stats --partial" \
/home/repositorios/ubuntu12.04
exit
Si al momento de hacer el debmirror para traer el repositorio, hay alguna firma gpg que está fallando, hacer lo siguiente en el servidor (Reemplazar KEY por el número de key del Debian a hacer el clone de repositorio):
# gpg --keyserver pgpkeys.mit.edu --recv-key KEY
# gpg -a --export KEY | sudo apt-key add -
# gpg --no-default-keyring -a --keyring /usr/share/keyrings/debian-archive-keyring.gpg --export KEY | gpg --no-default-keyring --keyring ~/.gnupg/trustedkeys.gpg --import -
Ahora, llega la hora de firmar el repositorio, lo cual explico en el siguiente Post: