Portabilidad de un ejecutable a otra máquina Linux

11

He instalado el programa Motion en una máquina Linux (M1) y quiero el mismo programa en otra (M2).

Hay varias compilaciones de este programa, y ​​he olvidado cuál he usado, así que ¿puedo hacer una copia directa del archivo user / bin / motion de M1 y colocarlo en el usuario / bin / motion de M2?

Sé dónde está el archivo de configuración, así que lo trasladaré, pero no estoy seguro de qué controladores de video usa la versión funcional de motion en M2; ¿Hay alguna forma de averiguarlo?

¿Hay alguna forma de averiguar sus dependencias?

reggie
fuente
Solo para que conste, casi siempre es una mala idea. Una de las grandes ventajas de Linux sobre otras plataformas es la gestión de paquetes. Copiar binarios manualmente en los directorios del sistema evita el administrador de paquetes. En muchos casos, esto solo significa que la actualización del binario deberá ser manual, pero en algunos casos, esto puede causar problemas importantes en las actualizaciones del sistema. TL; DR : use su administrador de paquetes.
HalosGhost
Suena lógico, entonces, ¿cómo haría esta tarea usando dpkg?
Reggie
Si el paquete que proporciona la herramienta que desea realmente no está disponible para su sistema operativo, entonces crearía un paquete para él (es menos difícil de lo que parece). Luego, instalaría el paquete con dpkg.
HalosGhost
No estoy seguro de lo que quieres decir. ¿Podría hacer un paquete desde un programa ya instalado?
Reggie
No, el empaquetado es un proceso separado; pero aprenderlo es una habilidad invaluable. Sin embargo, es específico de la distribución (o al menos el administrador de paquetes).
HalosGhost

Respuestas:

12

Para mover un programa a otra computadora, debe mover:

1) Archivo ejecutable
Una manera simple de encontrar la ruta de comandos es el typecomando.

Por ejemplo: type cal

cal es / usr / bin / cal

2) Dependencias de la biblioteca
Puede encontrar dependencias de la biblioteca con el lddcomando, pero recuerde que si compiló un programa desde el origen, la arquitectura de la CPU de ambos servidores debe ser la misma.

Por ejemplo: ldd date

linux-vdso.so.1 => (0x00007fff83dff000)
librt.so.1 => /lib64/librt.so.1 (0x0000003784e00000)
libc.so.6 => /lib64/libc.so.6 (0x0000003783e00000)
libpthread. so.0 => /lib64/libpthread.so.0 (0x0000003784200000)
/lib64/ld-linux-x86-64.so.2 (0x0000003783a00000)

3) Archivos de configuración
En el nuevo servidor, es posible que deba indicarle al programa que vuelva a crear los archivos de configuración porque esos archivos de configuración pertenecen al servidor anterior.

4) Verificación de la dependencia del hardware
Para verificar esto, creo que debe verificar el sitio web del programa para soportar hardware o debe probar el programa en un nuevo entorno.

Sepahrad Salour
fuente
¿Cómo encuentro dónde está almacenado el ejecutable? Creo que está en usuario / bin / llamado movimiento. Se ejecuta en el arranque de la máquina, ¿podría esto darme alguna pista sobre dónde está almacenado el ejecutable?
Reggie
@reggie, el typecomando es una forma simple ... Edité mi publicación.
Sepahrad Salour