Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

212
Vistas
Aislamiento del entorno de compilación y diferenciación del sistema de archivos

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:

  1. Inicie un sistema operativo base utilizando una caja de Vagrant o creando uno a partir de CD en vivo.
  2. Exporte el .vmdk y llámelo base-image .
  3. Haga girar una réplica exacta de la imagen anterior y vaya a la ciudad: use el administrador de paquetes, o algún otro medio, para descargar, compilar e instalar todas las piezas que necesito. Una vez más, exporte el .vmdk y llámelo non-base-image .
  4. Haga que ambas imágenes base estén disponibles para el sistema operativo invitado de Fedora que tiene libguestfs.
  5. Use virt-diff para diferenciar las dos imágenes y volcar esos datos en un archivo llamado diff .
  6. Ejecute varios scripts Ruby para masajear diff en otro formato que contenga la información que necesito y ninguna de las cosas que no me gustan en /var .
  7. Ejecute otro script para generar un script de comando para guestfish con un montón de comandos de copy-out .
  8. Ejecute el script de guestfish .
  9. Ejecute otro script para regenerar los enlaces simbólicos de diff porque guestfish no puede hacerlo.
  10. Convierta la estructura de carpetas resultante en un archivo .deb o .rpm y envíelo.

Me gustaría saber si hay una mejor manera de hacer esto. Pensarías que lo habría, pero no lo he descubierto.

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Definitivamente consideraría algo como:

UN)

  • lista yum (seleccione sus paquetes/dependencias lo que sea)
  • use yumdownloader en la lista anterior (o use los paquetes que ya ha descargado)
  • crearrepo
  • enviar en medios con script de instalación que agrega el repositorio de cd a repolist, etc.

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.

over 4 years ago · Santiago Trujillo Denunciar

0

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:

  • scripts previos/posteriores a la instalación
  • desinstalar secuencias de comandos
  • dependencias

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).

over 4 years ago · Santiago Trujillo Denunciar

0

¿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

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda