jueves, 30 de agosto de 2012

Como crear un repositorio local (debmirror)

Muchas personas a veces se plantean, por lo general aquellos que estan comenzando a usar linux, el como crear un repositorio local en su FTP para no tener que descargar los paquetes siempre que necesitan instalar o reinstalar un servicio.

Para instalar ejecutar el comando como root:

server# apt-get install -y debmirror

Despues de instalar podemos ejecutarlo y nos daldría una entrada asi:

server# debmirror
mirrordir not specified
Usage: /usr/bin/debmirror [--progress] [--verbose] [--debug] [--dry-run] [--help]
          [--host=remotehost] [--root=directory]
          [--method=ftp|hftp|http|rsync] [--passive]
          [--user=remoteusername] [--passwd=remoteuserpassword]
          [--proxy=http://user:pass@url:port/]
          [--dist=foo[,bar,..] ...] [--omit-suite-symlinks]
          [--section=foo[,bar,..] ...] [--arch=foo[,bar,..] ...]
          [--rsync-extra=foo[,bar,..] ...]
          [--di-dist=foo[,bar,..] ...] [--di-arch=foo[,bar,..] ...]
          [--source|--nosource] [--i18n] [--getcontents] [--md5sums]
          [--ignore-missing-release] [--ignore-release-gpg]
          [--ignore=regex] [--exclude=regex] [--include=regex]
          [--exclude-deb-section=regex] [--limit-priority=regex]
          [--timeout=seconds] [--max-batch=number]
          [--rsync-batch=number] [--rsync-options=options]
          [--postcleanup|--cleanup|--nocleanup] [--skippackages]
          [--diff=use|mirror|none] [--gzip-options=options]
          [--state-cache-days=number]
          [--ignore-small-errors] [--allow-dist-rename]
         

For details, see man page.


Esas son todas las opciones que le podemos poner, por supuesto que no las tenemos que poner todas, aqui pondré un script con lo principal para que descargue, en mi caso que uso proxy tengo que configurarle esta variable, si no lo vamos a usar con eliminarlo tenemos.

También podemos poner este script en el CRON asi todos los dias por la noche se ejecute para buscar nuevas actualizaciones.

Creamos un fichero de configuración, se puede poner donde mas nos guste, yo lo pondre en /usr/local/bin para que este dentro de las variables de entorno y poder llamarlo desde cualquier lado.

server# touch /usr/local/bin/proxmox.sh

Despues de crearlo le ponemos todo el contenido siguiente dentro:

#!/bin/sh

#Debo recordar que guarde una copia de este script en if-up
#por si se va la corriente

exec debmirror \
    --progress \
    --verbose \
    --nosource \
    --host=download.proxmox.com \
    --root=debian \
    --dist=squeeze \
    --section=pve \
    --arch=amd64 \
    --timeout=600 \
    --method=http \
    --postcleanup \
    --ignore-release-gpg \
    --ignore-small-errors \
    --diff=none --i18n \
    --proxy=http://user:pass@proxy.misitio.com:puerto/ \
    /home/ftp/proxmox > /var/log/proxmox.log 2>&1& exit 0


El script siempre que se ejecute dejara un log que despues podremos visualizar para saber si la descarga se ejecuto de forma satisfactoria.

Despues de crearlo debemos darle los permisos de ejecucion ya que este se crea por defecto sin ellos:

server# chmod +x /usr/local/bin/proxmox.sh

Ya con eso podemos ejecutar el script siempre que querramos para que se descargue hacia nuestra pc.

Si lo queremos incluir dentro del cron para que todos los días se ejecute por la madrugada y descargue ejecutamos en consola:

server# crontab -e

E incluimos la siguiente línea al final:

0 0 * * * proxmox.sh

Esto hará que todos los dias a las 12 de la noche nuestro script se ejecute y busque actualizaciones en el servidor.

En caso de querer hacerle una copia a otro arbol, digamos debian, debian-security, debian-multimedia, debian-backports o a una de las distribuciones de ubuntu, solo necesitamos modificar el script con los parametros correspondientes y este hará el resto.

Saludos

No hay comentarios: