Muy bien, después de intentar buscar las dependencias de varias piezas de software por enésima vez y replicar el trabajo que varias personas hacen para todas las diferentes distribuciones de Linux, me gustaría saber si hay una mejor manera de agrupar varias piezas de software. en un archivo .rpm o .deb para facilitar la distribución.
Mi configuración actual para hacer esto es un monstruo frankenstein de varias herramientas, pero principalmente Vagrant y libguestfs (construido desde el código fuente que se ejecuta en Fedora porque ninguna de las distribuciones en realidad lo incluye con virt-diff ). Estos son los pasos que sigo actualmente:
.vmdk y llámelo base-image ..vmdk y llámelo non-base-image .virt-diff para diferenciar las dos imágenes y volcar esos datos en un archivo llamado diff .diff en otro formato que contenga la información que necesito y ninguna de las cosas que no me gustan en /var .guestfish con un montón de comandos de copy-out .guestfish .diff porque guestfish no puede hacerlo.Me gustaría saber si hay una mejor manera de hacer esto. Pensarías que lo habría, pero no lo he descubierto.
Definitivamente consideraría algo como:
UN)
o B)
primeros dos pasos como se indica arriba, luego empaque los rpms en un archivo construya un paquete que contenga todo lo anterior y comience la instalación real de los rpms (en la línea de rpm -Uvh /tmp/repo/*) como una secuencia de comandos tardía (en la fase de limpieza, tal vez). No sé si esto se puede hacer evitando bloqueos en la base de datos rpm.
Creo que alcanzó el punto de complejidad, de hecho, un monstruo frankenstein, donde debería dejar de temer hacer paquetes adecuados con dependencias. Hicimos esto en mi trabajo anterior, teníamos un conjunto de paquetes rpm fabricados, y fue muy fácil y directo, incluyendo:
Nunca tuvimos que hacer nada de lo que acabas de describir. Y para el cliente, ¡instalar incluso un conjunto de paquetes fue muy fácil!
Puede seguir un manual de referencia sobre cómo crear un paquete RPM para obtener más información.
EDITAR: si necesita un solo paquete de instalación, cree este paquete maestro, que contendría todos los demás paquetes (con las dependencias configuradas correctamente) e instálelos en el script posterior a la instalación (y desinstálelos en el script de desinstalación).
¿El problema es principalmente el de asegurarse de que sus clientes hayan instalado todos los paquetes de distribución upstream estándar necesarios para que su paquete funcione?
Si ese es el caso, creo que la solución más sencilla sería aprovechar la infraestructura de yum y apt para que esas herramientas rastreen e instalen los paquetes de requisitos previos necesarios.
Si proporciona un repositorio nativo de yum/apt con especificaciones completas de requisitos previos (el arduo trabajo que aparentemente ya ha completado). Luego, la herramienta estándar de instalación del sistema se encarga del resto. Consulte el enlace a continuación para obtener más información sobre cómo crear un repositorio personal para yum/apt.
Para los clientes fuera de línea, puede proporcionar medios con su software y un espejo , o un subconjunto de espejos , de la distribución ascendente, e instrucciones para agregarlos a yum config / apt config .
Yum Creación de un repositorio de Yum en la Guía de implementación de Fedora
Apt Cómo configurar un repositorio de Debian en Debian Wiki