Como crear un repositorio local de Debian

El proceso es realmente sencillo y útil si tienes más de una máquina. La finalidad es evitar descargar los paquetes de nuevo si ya lo hiciste una vez, por eso habrá un equipo que haga servidor y desde el cual se actualizará el repositorio que creemos. El primer proceso es instalar la herramienta apt-move, para ello simplemente realizar un :

# apt-get install apt-move

ya sea desde el usuario root o través de sudo. El funcionamiento es fácil de entender, esta herramienta va a crear un mirror a partir de los paquetes ( en nuestro caso ) que tome de /var/cache/apt/archives y los introduce en una estructura con la misma jerarquía que un mirror de debian. En este mirror tendremos los paquetes que se vayan actualizando desde la equipo que actua como repositorio y junto con los que instalemos nuevos. Una vez instalado apt-move, procedemos a configurar el archivo que se encuentra en /etc/apt-move.conf, es muy sencillo y bastante intuitivo.

Configuración de apt-move.conf

APTSITES=”ftp.rediris.es ” (Es muy importante dejar el espacio despues del nombre o dará fallos, se pueden añadir más nombres de servidores.
LOCALDIR=/mnt/repositorio (Donde creamos el repositorio, es buena idea tener una particion distinta).
FILECACHE=/var/cache/apt/archives ( Lógico, es de donde obtenemos los paquetes)
DELETE=yes ( Elimina la versiones más antiguas de los paquetes del repositorio )

Ahora es necesario tener un servidor, ya sea http o ftp, o de cualquier otro tipo que nos dé acceso al mirror que acabamos de crear. En mi caso tengo instalado Apache, con lo cual tendré que crear un enlace simbólico al repositorio dentro del directorio accesible por Apache, que por defecto es /var/www/.
Con lo cual, ahora mirror ( el enlace ) ya es accesible via http. Ya quedan pocos pasos para tener listo nuestro mirror local, el siguiente paso es actualizar nuestro sistema.

# apt-get update; apt-get dist-upgrade; apt-move update

Si todo ha ido bien, nuestro repositorio se habrá creado de forma correcta, podeis entrar para comprobar la jerarquía de un mirror de Debian, es igual que el de cualquier ftp de Debian que podais haber entrado.

Configurando el source.list

Ahora solo hay que configurar el source.list de los equipos necesarios, simplemente añadir la siguiente linea al archivo:

deb http://10.10.10.10/mirror/ testing main contrib non-fre

Evidentemente la IP depende de cada uno, yo por llevar la contraria monté una red de clase A , pero ese es otro tema, mirror es el nombre del enlace simbólico que creamos en el directorio /var/www/, lo siguiente depende de la rama con la que esteis trabajando, y de las secciones que tengais. LLegado esto, simplemente queda hacer un apt-get update en el equipo recien configurado para que añada la lista de paquetes de nuestro mirror local, el funcionamiento es simple, si un paquete no está en nuestro repositorio busca en los siguientes que tengamos, por eso colocar el nuestro el primero del source.list. Enlaces que me han ayudado (no puedo evitar hablar como si hubiesen más lectores. Links: WikiDebian y BulmaLug . En fin, si se me olvida se que lo tengo aquí, pero por si acaso tengo que investigar como hacer un backup de mi blog. Recuerdos a BaTuz el único nunca mejor dicho, que me lee, a ver si tu también te pones a escribir algo.

6 comentarios para “Como crear un repositorio local de Debian”

  1. Susana Isela Dice:

    Hola me gustaria saber si sabes como hacer esto de un repositor local pero apartir de los cd’s de debian , lo que busco es evitar insertar cdis cada que instalo algo , lo he echo con imagenes iso pero asi no me gusta de antemano gracias

  2. Al Bundy Dice:

    Primero que todo pido disculpas por la parrafada que he puesto, lo he copiado de una pagina ajena, NO lo he escrito yo pero es en definitiva un repositorio local en condiciones, seria un substituto para el articulo que has puesto arriba ya que no se ajusta al titulo:

    MONTANDO UN REPOSITORIO DEBIAN DESDE LOS CDROM/DVDS

    Es una labor muy sencilla, solo necesitamos una maquina en nuestra red con un servidor web apache funcionando correctamente, y una partición que al menos tenga 15Gb de espacio libre (recordemos que son 3 DVDs, cada uno de 4.4Gb) y obviamente los DVDs de Etch. Eso si es una labor de paciencia (sobre todo si tenemos hardware viejo para el servidor) por que el proceso de la copia de 3 DVDs y el escaneo final de los paquetes es demorado!.

    Describiré los paths que use en mi cofiguración, debéis acomodarte a los vuestros.

    Directorio donde copiare los paquetes (al menos 15Gb libres)
    /mnt/hdc1/
    Directorio donde accedo a la unidad de DVD
    /cdrom
    Directorio de el contenido web de apache
    /var/www/

    Empezamos creando un directorio para los paquetes
    mkdir /mnt/hdc1/myrepo

    Me paso a raíz
    cd /

    Monto el DVD1
    mount /dev/cdrom

    copio paquetes del primer DVD
    cp -R /cdrom/dists/ /mnt/hdc1/myrepo/
    cp -R /cdrom/pool/ /mnt/hdc1/myrepo/

    Desmonto el DVD1
    umount /dev/cdrom

    Monto el DVD2
    mount /dev/cdrom

    copio paquetes del segundo DVD
    cp -R /cdrom/dists/ /mnt/hdc1/myrepo/
    cp -R /cdrom/pool/ /mnt/hdc1/myrepo/

    Desmonto el DVD2
    umount /dev/cdrom

    Monto el DVD3
    mount /dev/cdrom

    copio paquetes del tercer DVD
    cp -R /cdrom/dists/ /mnt/hdc1/myrepo/
    cp -R /cdrom/pool/ /mnt/hdc1/myrepo/

    Desmonto el DVD3
    umount /dev/cdrom

    Borro estos archivos
    rm -rf dists/etch/main/debian-installer/
    rm dists/etch/Release

    Me paso al directorio de los paquetes
    cd /mnt/hdc1/myrepo/

    Escaneo y comprimo paquetes (main)
    dpkg-scanpackages pool/main/ /dev/null > dists/etch/main/binary-i386/Packages
    gzip dists/etch/main/binary-i386/Packages

    Escaneo y comprimo paquetes (dists)
    dpkg-scanpackages pool/contrib/ /dev/null > dists/etch/contrib/binary-i386/Packages
    gzip dists/etch/contrib/binary-i386/Packages

    Hago un link simbólico a mi servidor web (Este paso se puede obiar si estamos trabajando directo en la carpeta del servidor web o configuramos a apache para que acceda directo a nuestro directorio)
    ln -s /mnt/hdc1/myrepo/ /var/www/debian/

    listo!

    Si todo es correcto podremos acceder a nuestro servidor vía web, y confirmar que todo funciona.

    En los clientes solo es editar el archivo /etc/apt/sources.list y poner la url a nuestro servidor.

    deb http://192.168.0.1/debian/ etch main contrib

    Ejecutamos el comando

    apt-get update

    Y vola!

    Recomiendo tener un servidor local. En mi caso, que me la paso solo trasteando con cacharros e instalaciones constantes es mas rápido, solo uso el CDROM de 140 megas de Debian Etch, instalo la base y en el repositorio le pongo la url de mi repositorio local y listo todo lo descargo desde mi red local, aparte de liberar de mi minuscula carga a los servidores oficiales :D .
    Que pasara el día que publiquen una actualización? Sencillo, descargo/copio/pidoprestados/compro los DVDs, los vuelo a copiar y a ejecutar los dpkg-scanpackages.

  3. Salvador Orozco Dice:

    ¡Perfecto! Este pequeño tutorial de es gran ayuda.

    Tenía un problema y fue resuelto con la creación de repositorios desde el CD.

    Muchas gracias por compartir tus conocimientos de esta manera.

    Saludos desde Morelia Mich.

  4. Deibis Dice:

    Quiero comentarte que tu guia esta muy buena… sin embargo tengo un problemita al usar el dpkg -scanpackages y el resultado es el siguiente:

    dpkg: acciones en conflicto -c y -s

    Si me puedes ayudar te lo agradeceria…

    Att.

  5. Pedro Dice:

    Muchas gracias, estuvo muy buena tu explicacion

  6. Juan Dice:

    Hola todos, tengo un problema, instale un servidor de repositorios, como lo comentan, pero tengo un problema al querer actualizar una estacion con el servidor de repositorios mediante el Gestor de Paquetes Synaptic me manda el siguiente mensaje “W: Fallo al obtener http://192.168.1.223/mirror/pool/main/g/gdl/libgdl-1-common_0.7.11-1_all.deb Not Found” (son varios errores haciendo referencia a muchos paquetes) siendo que estos paquetes si se encuentran en la ruta descrita por el error, lo que yo no quiero es estar actualizando las estaciones aunque tengo buen ancho de banda por medio de Internet, porque en realidad es un poco lento y requiero hacerlo seguido para instalar un sistema de cobranza con uno de mis clientes (en realidad lo que necesito instalar es GAMBAS 2.8. Si alguien me pudiera dar un tip lo agradeceria infinitamente.

    Saludos

Escribe un comentario