¿Qué es el paquete binario? ¿Cómo construirlos?

¿Qué es el paquete binario? ¿Cómo construirlos?

Quiero obtener detalles sobre los paquetes binarios y ejecutarlos en Linux. Estoy ejecutando el sistema operativo Linux base Debian (Ubuntu/Linux mint).

  1. ¿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.)?
  2. 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?
  3. Cómo construirlos que se puedan ejecutar en el sistema operativo Linux directamente "xyz.linux.run" en Linux.
  4. ¿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/shson 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: .deblos paquetes son paquetes binarios, aunque hay .debcorreos electrónicos que contienen fuente, que generalmente se -srcagregan 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.cy gccconstruirá 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 makefilesestamos. 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, Cmakeo autoconfalgo 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 helloworldque simplemente compila helloWorld.c. Ejecutaría esto make helloworldy 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.

información relacionada