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


12

Quiero obtener detalles sobre el paquete binario y ejecutarlos en Linux. Estoy ejecutando Debian base (Ubuntu / Linux mint) Linux os.

  1. ¿Cómo construir un paquete binario desde la fuente? ¿Y puedo descargar directamente el paquete binario 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 preconstruidos?
  3. Cómo construirlos que se pueden ejecutar en el sistema operativo Linux directamente "xyz.linux.run" en Linux.
  4. ¿Cuál es la diferencia entre paquete binario y paquete deb?

¿Encontraste cómo construir un paquete binario desde la fuente?
Dr.jacky

Respuestas:


17

En un sentido estricto, un archivo binario es uno que no está codificado con caracteres como texto legible por humanos. Más coloquialmente, un "binario" se refiere a un archivo compilado, código ejecutable, aunque el archivo en sí puede no ser ejecutable (refiriéndose no tanto a los permisos como a la capacidad de ejecutarse solo; algunos archivos de código binario como las bibliotecas son compilado, pero independientemente de los permisos, no se pueden ejecutar solos). Un binario que se ejecuta como un 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 #!/bin/shtambién los ejecutables).

¿Qué es un paquete binario?

Un paquete binario en un contexto de Linux es un paquete de aplicación que contiene ejecutables (preconstruidos), 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 a .zip) que contiene otros archivos, y un archivo de paquete "binario" es uno que contiene ejecutables específicamente (aunque de nuevo, los ejecutables no son necesariamente binarios verdaderos, y de hecho los paquetes binarios pueden usarse para bibliotecas compiladas que son código binario, pero no ejecutables). Sin embargo, el paquete debe estar desempaquetado para que pueda acceder a estos archivos.

Por lo general, eso se encarga de usted mediante un sistema de gestión de paquetes (por ejemplo, apt / dpkg) que descarga el paquete y desempaqueta e instala los binarios que contiene.

¿Cuál es la diferencia entre paquete binario y paquete deb?

No lo hay: los .debpaquetes son paquetes binarios, aunque en su lugar hay .debs que contienen fuente, estos generalmente se han -srcagregado a su nombre.

Ejecuto algún paquete directo que está en formato "xyz.linux.run" ¿Qué son estos paquetes?

Esos son generalmente paquetes binarios autoextraíbles; funcionan incorporando una carga útil binaria en un script de shell. "Autoextraíble" significa que no tiene que 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 difícil y, por lo tanto, algunos de estos paquetes usan ejecutables vinculados estáticamente (tienen todas las bibliotecas necesarias incorporadas), lo que desperdicia un poco de memoria cuando se usan .


¡Excelente respuesta! ¿Debo separarme de esta pregunta: cómo construir un ejecutable precompilado (paquete binario) a partir de la fuente?
Pandya

Sí, esa sería una buena pregunta por sí sola, si ya no se responde aquí de alguna forma.
Ricitos

6

Como el resto de su pregunta fue respondida por Ricitos de Oro, voy a analizar la primera parte, cómo construir cosas desde la fuente.

La versión realmente corta es que cuando descargas archivos fuente de Internet, generalmente tienen un archivo Léame asociado, que debería decirte exactamente cómo poner en marcha el programa.

Pero decirle que lea el archivo Léame no responde realmente la pregunta, por lo que, en un sentido básico, puede 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 escriba "¡Hola Mundo!" a la consola cuando se ejecuta.

Bien, ahora que ha creado un programa, ¿no sería una molestia tener que escribir cada archivo fuente que desea compilar cada vez que necesita compilar algo? Para eso makefilesestán. Si se ejecuta a través de un programa que tiene un montón de archivos de origen por lo general vienen con un makefile o algún otro archivo de automatización de construcción ( ant, Cmakeo autoconfo algo así).

Para construir este tipo de programas, simplemente ejecute make <build target>dentro del directorio. Un archivo MAKE para mi programa hello world podría incluir un objetivo llamado helloworldque solo compila helloWorld.c. Ejecutaría esto make helloworldy generaría un binario.

Tenga en cuenta que construir cosas desde la fuente puede llevar mucho tiempo y una gran cantidad de memoria (¡ el equipo de Chromium incluso recomienda un segundo disco duro para construir su fuente! ). También tenga en cuenta que cuando construye cosas desde la fuente, tendrá que lidiar con las dependencias, en lugar de que el administrador de paquetes lo haga por usted

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.