TIPS – Repositorios personalizados (myrepo)

En este artículo mostraré una forma alternativa de preparar un repositorio personalizado para Debian y derivadas que contenga exclusivamente aquellos paquetes que nos interesan (con sus dependencias), lo cual puede ser útil por ejemplo para copiarlos en una memoria USB desde un equipo con acceso pleno a un repositorio con el propósito de utilizarlos en otro equipo que use el mismo sistema operativo, sin tener que copiar obligatoriamente el repositorio completo.

En este caso, no utilizaremos las herramientas tradicionales como apt-mirror, reprepo etc; sino un sencillo script con pocas dependencias, que denominaremos myrepo.

Sin más preámbulos, he aquí el script:

A continuación muestro un ejemplo de uso del script para obtener los paquetes necesarios para instalar mc en Debian Jessie (amd64):

Algo que conviene mencionar, es que el script utiliza los orígenes que el sistema donde se corre tenga declarados, por ejemplo, en este caso, se utilizó el origen de mi repositorio dotdeb para obtener una dependencia más actualizada.

Si el script se invoca múltiples veces manteniendo la ruta /var/tmp/mirepo/, el resultado es que puede irse construyendo gradualmente un repositorio en dicho directorio. Una manera más cómoda de mantener la ruta puede ser modificando la variable REPOPATH en el script, o mejor aun, exportándola antes de ejecutar el script, por ejemplo de la siguiente forma:

De cualquier manera, en una sola ejecución pueden especificarse muchos paquetes y no uno solo, si así se desea.

Para utilizar el repositorio creado, podemos entonces copiar el directorio mirepo en el equipo de destino, digamos en /home/miusuario/ y crear un archivo de origen como por ejemplo /etc/apt/sources.list.d/mirepo.list con el siguiente contenido:

Nótese que en el caso de este simple script, no se ha realizado la firma de los paquetes, de ahi que sea necesario agregar el origen como trusted. Queda entonces actualizar el origen de los paquetes, para lo cual puede ejecutarse uno de los siguientes comandos:

apt-get update
aptitude update

Entonces podrán instalarse los paquetes normalmente.

Naturalmente, este script es demasiado simple para permitir cosas avanzadas como preparar repositorios para otra arquitectura o sistema operativo; para esto mejor utilizar otras herramientas.

Notas:

Artículo y script actualizados el 2017-12-14.

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en una estrella para puntuar!

Promedio de puntuación 1 / 5. Recuento de votos: 1

Hasta ahora, ¡no hay votos!. Sé el primero en puntuar este contenido.

Sobre Hugo Florentino 11 artículos
Administrador de redes y sistemas. Usuario regular de GNU/Linux desde Octubre de 2008. Miembro fundador del Grupo de Usuarios de Tecnologías Libres (GUTL).

5 comentarios

  1. Google Chrome 63.0.3239.132 Google Chrome 63.0.3239.132 Windows 10 x64 Edition Windows 10 x64 Edition
    Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36

    Te la comiste Chama….!
    Voy a ver si lo pruebo con un repo local(Debian9) que copie de mi socio Fumero de Partagas, que lo tengo, pero nada del source.list con lineas correctas..!
    Esto de los repos se vuelve un ¨dolor testicular¨ cuando tienes que zancajear los repos con algún alma caritativa, y despues que los tienes, ya copiados, que logres que te sirvan…ño…!

    No se me olvida la charla sobre las licenias y sobre todo la WTFL…ja ja ja..

    Cuidate y te veré en el Flisol2018 para charlar sobre este asunto de ¨myrepo¨.
    Saludos, Felipe, ex-informático del Puerto de la Habana.

  2. Firefox 58.0 Firefox 58.0 Windows 7 x64 Edition Windows 7 x64 Edition
    Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0

    Bueno, el script utiliza la propia funcionalidad de apt, de modo que si en la maquina donde piensas generar el repositorio no tienes bien declarado tu sources.list o al menos otro .list bajo /etc/apt/sources.list.d/, me temo que no te servirá de mucho.

  3. Firefox 59.0 Firefox 59.0 Windows 10 x64 Edition Windows 10 x64 Edition
    Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0

    ¿Cómo sería para incorporar paquetes que no esten en los repos?, ejemplo tengo algunos archivos .deb que quisiera incorporar al repo, por ejemplo el webmin, entre otros

  4. Firefox 59.0 Firefox 59.0 Windows 7 x64 Edition Windows 7 x64 Edition
    Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0

    El script es bien sencillo, podría modificarlo para incluir ese caso de uso, pero no creo que merezca la pena. De hecho estaba valorando la idea de desarrollar de manera experimental una aplicación autocontenida en el lenguaje Go, en la cual podria poner entre otras, la funcionalidad de actualizar el repositorio, eliminar paquetes con sus dependencias, lanzar un servidor web local, etc.

    De momento, podrías hacer lo siguiente: agrega los paquetes al directorio binary/ de tu repo personalizado, y luego desde el directorio del repo ejecuta estos comandos:

    dpkg-scanpackages «binary» > «Packages»
    gzip -9c Packages > Packages.gz

    De esta manera al menos podrás usar el repositorio con los paquetes que hayas agregado manualmente, siempre y cuando tengas también las dependencias requeridas.

  5. Firefox 98.0 Firefox 98.0 Ubuntu x64 Ubuntu x64
    Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:98.0) Gecko/20100101 Firefox/98.0

    Buen post, Alguien pudiera ayudarme,
    Necesito ayuda, estoy descargando un espejo de mirror con apt-mirror y faltando 11 G se cierra y pone.
    Run /var/clean.sh for this purpose
    /var/postmirror.sh
    bin/sh: 0: Can’t open /var/postmirror.sh
    Post Mirror script has completed. See above output for any possible errors.

Dejar una contestacion

Tu dirección de correo electrónico no será publicada.