¿Pueden instalarse binarys construidos desde la fuente en una segunda máquina?

No estoy seguro de si este es el mejor lugar para preguntar esto: por favor, 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 comstackdor que se puede usar para crear software desde el origen, mientras que B no lo hace.

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

./configure make 

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

Hay algunas opciones que he considerado:

  1. Use un administrador de packages para instalar el software en B: esta no es una opción para mí porque el software disponible en el administrador de packages está muy desactualizado.
  2. Instale el comstackdor y otras herramientas de compilation en B: preferiría no instalar herramientas de compilation en la máquina de producción debido a varias limitaciones.
  3. Copie manualmente los files binarys de A a B: esto es propenso a errores, y me gustaría asegurarme de que los files binarys se instalen de manera uniforme en todas las máquinas de producción.
  4. Instale solo make en B, transfiera el directory de origen, y ejecute sudo make install en B: esta es la mejor solución que he encontrado hasta ahora, pero por alguna razón (tal vez compensaciones de reloj), make intentará rebuild el software que ya debería haber sido creado, que falla ya que las herramientas de compilation no están instaladas en B. Dado que mis máquinas también tienen velocidades de E / S terribles, la transferencia del directory de origen lleva mucho time.

Lo que sería realmente bueno es si hubiera una manera de hacer algún tipo de package que contenga los binarys integrados que se pueden transferir y ejecutar para instalar los binarys y los files de configuration. ¿Existe alguna herramienta de este tipo?

Usando lo que tiene hasta ahora y si el file MAKE se genera con GNU autotools, establecería la location de destino o la ruta de installation con

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

y luego corre

 make && make install 

y finalmente copie los files de la carpeta de prefijos a la carpeta usr/ en la otra máquina. Esto supone que ambas máquinas tienen la misma architecture, de lo contrario, utilice la cadena de herramientas cruzada correspondiente.

La forma más limpia de hacerlo sería usar las herramientas de empaquetado que el sistema operativo usa para crear un package para la aplicación e instalarlo como cualquier otro. Cómo hacerlo varía entre los administradores de packages y los sistemas), y hay una cierta curva de aprendizaje allí.

La installation manual podría facilitarse un poco si el package fuente admite la installation del software dentro de algún subtree (por ej /opt/packagename o /usr/local/packagename ). Comstack e instala en una máquina, luego copy ese subtree en la misma location en la otra máquina. El directory debe include todos los files relevantes y solo ellos.

Si necesita cambios en /etc , deberá hacerlos manualmente. Además, para acceder a los files binarys, deberá vincularlos simbólicamente a algún directory en su ruta o agregar el directory bin packages a la ruta. La mayoría de los packages que usan autoconf / automake pueden llevar el argumento --prefix al script ./configure para establecer la ruta de installation.

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