Quiero obtener detalles sobre los paquetes binarios y ejecutarlos en Linux. Estoy ejecutando el sistema operativo Linux base Debian (Ubuntu/Linux mint).
- ¿Cómo construir un paquete binario desde la fuente? ¿Y puedo descargar directamente paquetes binarios para aplicaciones (como Firefox, etc.) y juegos (como boswars, etc.)?
- Ejecuto algún paquete directo que está en formato "xyz.linux.run" ¿Qué son estos paquetes? ¿Son independientes de las dependencias? ¿O son paquetes binarios prediseñados?
- Cómo construirlos que se puedan ejecutar en el sistema operativo Linux directamente "xyz.linux.run" en Linux.
- ¿Cuál es la diferencia entre el paquete binario y el paquete deb?
Respuesta1
En sentido estricto, un archivo binario es aquel que no tiene caracteres codificados como texto legible por humanos. De manera más coloquial, un "binario" se refiere a un archivo que es código ejecutable compilado, aunque el archivo en sí puede no ser ejecutable (refiriéndose no tanto a los permisos sino a la capacidad de ejecutarse solo; algunos archivos de código binario, como las bibliotecas, son compilados, pero independientemente de los permisos, no se pueden ejecutar por sí solos). Un binario que se ejecuta como ejecutable independiente es un "ejecutable", aunque no todos los archivos ejecutables son binarios (y esto se trata de permisos: archivos de texto ejecutables que invocan a un intérprete a través de un shebang, como también #!/bin/sh
son ejecutables).
¿Qué es un paquete binario?
Un paquete binario en un contexto de Linux es un paquete de aplicación que contiene ejecutables (prediseñados), a diferencia del código fuente.
Tenga en cuenta que esto no significa que un archivo de paquete sea en sí mismo un ejecutable. Un archivo de paquete es un archivo (algo así como un archivo .zip
) que contiene otros archivos, y un archivo de paquete "binario" es uno que contiene específicamente ejecutables (aunque nuevamente, los ejecutables no son necesariamente verdaderamente binarios y, de hecho, los paquetes binarios pueden usarse para bibliotecas compiladas que son código binario, pero no ejecutables). Sin embargo, es necesario descomprimir el paquete para poder acceder a estos archivos.
Por lo general, de esto se encarga un sistema de administración de paquetes (por ejemplo, apt/dpkg) que descarga el paquete y descomprime e instala los archivos binarios que contiene.
¿Cuál es la diferencia entre el paquete binario y el paquete deb?
No lo hay: .deb
los paquetes son paquetes binarios, aunque hay .deb
correos electrónicos que contienen fuente, que generalmente se -src
agregan a su nombre.
Ejecuto algún paquete directo que está en formato "xyz.linux.run" ¿Qué son estos paquetes?
Generalmente son paquetes binarios autoextraíbles; Funcionan incorporando una carga útil binaria en un script de shell. "Autoextraíble" significa que no es necesario invocar otra aplicación (como un administrador de paquetes) para descomprimirlos y usarlos. Sin embargo, dado que no funcionan con un administrador de paquetes, resolver sus dependencias puede ser más complicado y, por lo tanto, algunos de estos paquetes usanvinculado estáticamenteejecutables (tienen todas las bibliotecas necesarias integradas) lo que desperdicia un poco de memoria cuando se utilizan.
Respuesta2
Dado que el resto de su pregunta fue respondida por Ricitos de Oro, analizaré la primera parte, cómo construir cosas desde la fuente.
La versión realmente corta es que cuando descargas archivos fuente de Internet, normalmente tendrán un archivo Léame asociado, que debería indicarte exactamente cómo poner en funcionamiento el programa.
Pero decirte que leas el archivo Léame no responde realmente a la pregunta, por lo que, en un sentido básico, puedes escribir un programa muy básico que sea
#include <stdio.h>
int main( ) {
printf("Hello World!");
}
y escriba gcc helloWorld.c
y gcc
construirá ese binario y generará un programa que escribe "¡Hola mundo!" a la consola cuando se ejecuta.
Bien, ahora que has creado un programa, sin embargo, ¿no sería malo tener que escribir cada archivo fuente que quisieras compilar cada vez que necesitaras compilar algo? Para eso makefiles
estamos. Si se encuentra con un programa que tiene un montón de archivos fuente, generalmente vendrá con un archivo MAKE o algún otro archivo de automatización de compilación ( ant
, Cmake
o autoconf
algo así).
Para crear este tipo de programas, simplemente ejecútelos make <build target>
dentro del directorio. Un archivo MAKE para mi programa hola mundo podría incluir un objetivo llamado helloworld
que simplemente compila helloWorld.c. Ejecutaría esto make helloworld
y generaría un binario.
Tenga en cuenta que crear elementos desde el código fuente puede llevar mucho tiempo y consumir grandes cantidades de memoria (¡El equipo de Chromium incluso recomienda un segundo disco duro para construir su fuente!). También tenga en cuenta que cuando esté compilando cosas desde el código fuente, tendrá que lidiar con las dependencias, en lugar de que el administrador de paquetes lo haga por usted.
Respuesta3
Creo que estás buscando una solución similar al proyecto OpenSuse Build Service:
build.opensuse.org
También es compatible con Debian, CentOS, Red Hat.