¿Se pueden instalar los archivos binarios creados desde el código fuente en una segunda máquina?

¿Se pueden instalar los archivos binarios creados desde el código fuente en una segunda máquina?

No estoy seguro de si este es el mejor lugar para preguntar esto; indíqueme la dirección correcta si hay un lugar mejor.

Digamos, hipotéticamente, que tengo dos máquinas: A es una máquina de desarrollo y B es una máquina de producción. A tiene software como un compilador que se puede utilizar para crear software a partir del código fuente, mientras que B no.

En A, puedo crear software fácilmente desde el código fuente siguiendo la rutina habitual:

./configure
make

Luego, puedo instalar el software integrado en A ejecutando sudo make install. Sin embargo, lo que realmente me gustaría hacer es instalar el software que acabo de crear en B. ¿Cuál es la mejor manera de hacerlo?

Hay algunas opciones que he considerado:

  1. Usar un administrador de paquetes para instalar software en B: esta no es una opción para mí porque el software disponible en el administrador de paquetes está muy desactualizado.
  2. Instale el compilador y otras herramientas de compilación en B: prefiero no instalar herramientas de compilación en la máquina de producción debido a varias limitaciones.
  3. Copie manualmente los archivos binarios de A a B: esto es propenso a errores y me gustaría asegurarme de que los archivos binarios estén instalados de manera consistente en todas las máquinas de producción.
  4. Instalar solo makeen B, transferir el directorio fuente y ejecutar sudo make installen B: esta es la mejor solución que he encontrado hasta ahora, pero por alguna razón (quizás compensaciones de reloj), makeintentaré reconstruir el software que ya debería haber sido build, que falla porque las herramientas de compilación no están instaladas en B. Dado que mis máquinas también tienen velocidades de E/S terribles, transferir el directorio de origen lleva mucho tiempo.

Lo que sería realmente bueno es si hubiera una manera de crear algún tipo de paquete que contenga los archivos binarios compilados y que pueda transferirse y ejecutarse para instalar los archivos binarios y de configuración. ¿Existe alguna herramienta de este tipo?

Respuesta1

Usando lo que tienes hasta ahora y si el archivo MAKE se genera con GNU autotools, configuraría elubicación de destino o ruta de instalacióncon

./configure --prefix=/somewhere/else/than/the/usual/usr/local

y luego correr

make && make install

y finalmente copie los archivos de la carpeta de prefijo a la usr/carpeta de la otra máquina. Esto supone que ambas máquinas tienen la misma arquitectura; de lo contrario, utilice la cadena de herramientas cruzada correspondiente.

Respuesta2

La forma más limpia de hacerlo probablemente sería utilizar las herramientas de empaquetado que utiliza el sistema operativo para crear un paquete para la aplicación e instalarlo como cualquier otro. La forma de hacerlo varía entre los administradores de paquetes y los sistemas), y existe una cierta curva de aprendizaje allí.

La instalación manual podría resultar algo más sencilla si el paquete fuente admite la instalación del software dentro de algún subárbol (por ejemplo, /opt/packagenameo /usr/local/packagename). Compile e instale en una máquina, luego copie solo ese subárbol en la misma ubicación en la otra máquina. El directorio debe incluir todos los archivos relevantes y sólo ellos.

Si necesita cambios en /etc, tendrá que hacerlos manualmente. Además, para acceder realmente a los archivos binarios, deberá vincularlos simbólicamente a algún directorio en su ruta o agregar el bindirectorio de paquetes a la ruta. La mayoría de los paquetes que usan autoconf/ automakepueden llevar el --prefixargumento al ./configurescript para establecer la ruta de instalación.

En cualquier caso, debe averiguar qué bibliotecas, etc. necesita la aplicación que compiló y asegurarse de tener versiones compatibles en ambas máquinas.

información relacionada