Obtener dinero con AdFly

martes, 25 de enero de 2011

Repositorio local Debian

Algunas veces que actualizamos los paquetes en Debian nos tardamos un poco menos que una eternidad, por el ancho de banda, porque en otra PC de la red están bajando videos y se congestiona la red, o inclusive algunas veces no podemos descargar nada porque no tenemos Internet. Entonces necesitamos un repositorio de paquetes local, para no tener que depender de estos factores. Con el comando debmirror se puede descargar un repositorio de paquetes Debian completo:

(Actualizado, el anterior enlace ya no funciona):
https://www.mankier.com/1/debmirror

Para descargar este paquete usamos:

SHELL
# aptitude install debmirror

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 LENNY
# # # # # # # # # # # # # # # # # # # #
#
#
# 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=ftp'
# root es el directorio root en el repositorio remoto
root='--root=/debian'
# dist es la distribución a descargar: lenny, squeeze, wheezy,
# etc.
dist='-d wheezy,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'
# modif son opciones extras para la descarga
# 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'
modif='-v -p --cleanup --passive'

# 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 LENNY
# # # # # # # # # # # # # # # # # # #
#
#
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 lenny/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á.
# 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

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 wheezy main contrib non-free
deb http://localhost/debian-security wheezy/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

Ahora, llega la hora de firmar el repositorio, lo cual explico en el siguiente Post:

No hay comentarios:

Publicar un comentario