Re: Dudas generales acerca de progracion en linux.
El Lunes, 11 de abril de 2016 21:50:39 Ala de Dragón escribió:
> Hola :D
>
> Ando un par de días preguntándome acerca de unas dudas en cuanto a compilar.
>
> Supongamos que tengo un sistema, llamémosle debian 7, que tendrá lo
> necesario para compilar un programa. Por ejemplo firefox.
> Si lo compilo desde las fuentes lo hago con las versiones de lasa
> librerías y programas que están instaladas en mi computadora. Con lo
> que en un debian 8 no funcionara bien.
> entonces, ¿como se hace para compilar un programa, empaquetarlo en un
> tar y hacer que funcione en cualquier debian?
> Es simple curiosidad
>
> Salu2s
>
> :)
Como ya te han respondido, eso es poco menos que imposible. Las combinaciones
de ( librerias + programas + archivos auxiliares ) son demasiadas.
Si quieres ALGO mas de portabilidad, puedes utilizar un lenguaje interpretado,
como perl o incluso bash, que te darán algo más de juego. En Debian, python
puede no estar instalado, pero bash y perl lo están siempre, porque el propio
sistema de paquetes de Debian los usa.
Hay (o hubo) intentos de crear aplicaciones auto-empaquetadas, tipo archivo
.ISO, y que el kernel ejecuta con ayuda de binfmt. Registras el controlador
adecuado, y puedes empaquetar lo que quieras y lanzarlo como quieras.
También puedes utilizar aplicaciones auto-descomprimibles; son scripts de Bash
que tienen 'embebido' un archivo .tar, que se descromprime al ejecutar el
script. Creo que los paquetes originales de los drivers privativos de ATI
utilizaban algo así; hay un paquete que incluye la utilidad, pero no recuerdo
el nombre.
Ya rizando el rizo, puedes utilizar docker.
Las últimas 3 soluciones son estáticas; una vez empaquetado el código, es
independiente del sistema en el que se ejecuta. No aprovechas posibles
soluciones a errores ni actualizaciones del sistema.
Por último, pasando de todo lo anterior, puedes enlazar tu código con una
pequeña parte estática, y comprobar a mano la presencia o ausencia de las
librerias que necesites (y sus versiones), y cargarlas a mano con 'dlopen'.
Suerte con eso ;-)
Saludos.
Reply to: