Karton es una herramienta que puede ejecutar programas Linux de forma transparente:
???? En una distribución de Linux diferente,
???? En macOS,
???? En una arquitectura diferente (ARMv7 y ARMv8, en un host x86-64).
Para hacer esto, solo necesitas decirle a Karton qué distribución usar, qué paquetes instalar y qué directorios hacer accesibles. Esto se llama una imagen.
Luego puedes ejecutar tus comandos dentro de la imagen simplemente agregando karton run nombre de imagen delante de tus comandos.
Eejemplo:
$ uname -a # Show we are running on macOS. Darwin my-hostname 16.4.0 Darwin Kernel Version 16.4.0 [...] $ # Run the compiler in the Ubuntu image we use for work $ # (which we called "ubuntu-work"): $ karton run ubuntu-work gcc -o test_linux test.c $ # Verify that the program is actually a Linux one. $ # The files are shared and available both on your $ # system and in the image: $ file test_linux test_linux: ELF 64-bit LSB executable, x86-64, [...] $ # Same thing but on 32-bit ARMv7 (in the image we $ # called "ubuntu-work-arm"): $ karton run ubuntu-work-arm gcc -o test_arm test.c $ file test_arm test_arm: ELF 32-bit LSB executable, ARM, EABI5 [...] $ # We can run the ARM program: $ karton run ubuntu-work-arm ./test_arm [... Output of our program ...]
En otro terminal, puedes conectarlo al programa en ejecución y depurarlo.
$ # Find the PID of the test_arm program. $ karton run ubuntu-work-arm ps aux | grep test_arm test_arm 42 [...] test_arm $ # Debug it! $ karton run ubuntu-work-arm gdb --pid 42 GNU gdb (Ubuntu 7.11.1-0ubuntu1~16.04) 7.11.1 Copyright (C) 2016 Free Software Foundation, Inc. [...] Attaching to process 11 [...] 0x00007f53430e4740 in __nanosleep_nocancel () at ../sysdeps/unix/syscall-template.S:84 84 ../sysdeps/unix/syscall-template.S: No such file or directory. (gdb)
¿Te resulta aburrido cada vez que karton ejecuta el nombre de la imagen? Puedes usar el comando alias, consulta karton help alias.
Caracteristicas
- Rápido. Lanzar un programa en una imagen toma fracciones de segundo.
- No es necesario iniciar / detener una máquina virtual o contenedor, se realiza de forma transparente y rápida.
- Múltiples terminales acceden a la misma imagen en ejecución. Puede iniciar un programa en un terminal y adjuntarlo con gdb desde otro.
- Manejo automático de directorios y archivos compartidos. Tus archivos son accesibles tanto en su sistema como en los programas que se ejecutan en una imagen.
- A excepción de los directorios que decides compartir, el sistema de archivos es transitorio. Puede restablecer tus cambios al sistema al instante.
- Puede ejecutar imágenes de Ubuntu, Debian, Fedora y CentOS.
- Basado en contenedores Docker.
- Software libre
Más info en la página oficial de Karton
Fuente: maslinux