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 un software como un compilador que se puede usar para construir software desde la fuente, mientras que B no lo tiene.
En A, puedo compilar fácilmente software desde la fuente siguiendo la rutina habitual:
./configure
make
Luego, puedo instalar el software compilado en A ejecutando sudo make install
. Sin embargo, lo que realmente me gustaría hacer es instalar el software que acabo de construir en B. ¿Cuál es la mejor manera de hacerlo?
Hay algunas opciones que he considerado:
- 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.
- Instalar 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.
- Copie manualmente los archivos binarios de A a B:esto es propenso a errores y me gustaría asegurarme de que los archivos binarios se instalen de manera uniforme en todas las máquinas de producción.
- Instalar solo
make
en B, transfiera el directorio fuente y ejecutesudo make install
en B:esta es la mejor solución que he encontrado hasta ahora, pero por alguna razón (quizás compensaciones de reloj),make
intentará reconstruir el software que ya debería haberse creado, lo 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, la transferencia del directorio de origen lleva mucho tiempo .
Lo que sería realmente bueno es si hubiera una forma de crear algún tipo de paquete que contenga los archivos binarios integrados que se puedan transferir y ejecutar para instalar los archivos binarios y de configuración. ¿Existe alguna herramienta de este tipo?
Respuesta aceptada:
Usando lo que tiene hasta ahora y si el archivo MAKE se genera con GNU autotools, establecería la ubicación de destino o la ruta de instalación con
./configure --prefix=/somewhere/else/than/the/usual/usr/local
y luego ejecutar
make && make install
y finalmente copie los archivos de la carpeta de prefijo al usr/
carpeta en la otra máquina. Esto supone que ambas máquinas tienen la misma arquitectura; de lo contrario, utilice la cadena de herramientas cruzada correspondiente.