Cos'è il pacchetto binario? Come costruirli?


12

Voglio ottenere dettagli sul pacchetto binario ed eseguirli su Linux. Sto eseguendo il sistema operativo Debian base (Ubuntu / Linux conio) Linux.

  1. Come compilare un pacchetto binario dal sorgente? E posso scaricare direttamente il pacchetto binario per applicazioni (come firefox, ecc.) E giochi (come boswars, ecc.)?
  2. Eseguo un pacchetto diretto in formato "xyz.linux.run" Cosa sono questi pacchetti? Sono indipendenti dalle dipendenze? o Sono pacchetti binari precostruiti?
  3. Come costruirli che possono essere eseguiti sul sistema operativo Linux direttamente "xyz.linux.run" su Linux.
  4. Qual è la differenza tra pacchetto binario e pacchetto deb?

Hai trovato come compilare un pacchetto binario dal sorgente ?!
Dr.jacky,

Risposte:


17

In senso stretto, un file binario è un file che non è codificato come testo leggibile dall'uomo. Più colloquialmente, un "binario" si riferisce a un file che viene compilato, codice eseguibile, anche se il file stesso potrebbe non essere eseguibile (facendo riferimento non tanto alle autorizzazioni quanto alla capacità di essere eseguito da solo; alcuni file di codice binario come le librerie sono compilato, ma indipendentemente dalle autorizzazioni, non possono essere eseguiti da soli). Un binario che viene eseguito come eseguibile autonomo è un "eseguibile", sebbene non tutti i file eseguibili siano binari (e si tratta di autorizzazioni: file di testo eseguibili che invocano un interprete tramite shebang come anche #!/bin/sheseguibili).

Che cos'è un pacchetto binario?

Un pacchetto binario in un contesto linux è un pacchetto applicativo che contiene eseguibili (pre-costruiti), al contrario del codice sorgente.

Si noti che ciò non significa che un file del pacchetto sia esso stesso un eseguibile. Un file di pacchetto è un archivio (una specie di simile a .zip) che contiene altri file e un file di pacchetto "binario" è uno che contiene specificamente eseguibili (anche se, di nuovo, gli eseguibili non sono necessariamente veri binari, e in effetti i pacchetti binari possono essere usati per librerie compilate che sono codice binario, ma non eseguibili). Tuttavia, il pacchetto deve essere decompresso per poter accedere a questi file.

Di solito questo è gestito da un sistema di gestione dei pacchetti (ad es. Apt / dpkg) che scarica il pacchetto e decomprime e installa i file binari al suo interno.

Qual è la differenza tra pacchetto binario e pacchetto deb?

Non ci sono: i .debpacchetti sono pacchetti binari, anche se ci sono .debs che contengono invece sorgente, questi di solito hanno -srcaggiunto il loro nome.

Eseguo un pacchetto diretto in formato "xyz.linux.run" Cosa sono questi pacchetti?

Questi sono generalmente pacchetti binari autoestraenti; funzionano incorporando un payload binario in uno script di shell. "Autoestraente" significa che non è necessario richiamare un'altra applicazione (come un gestore di pacchetti) per decomprimere e utilizzarli. Tuttavia, poiché non funzionano con un gestore di pacchetti, risolvere le loro dipendenze può essere più che un crapshoot e quindi alcuni di questi pacchetti usano eseguibili collegati staticamente (hanno tutte le librerie necessarie incorporate in essi) che sprecano un po 'di memoria quando vengono utilizzati .


Risposta eccellente !, Devo separarmi da queste domande: Come compilare un eseguibile precompilato (pacchetto binario) dal sorgente?
Pandya,

Sì, sarebbe una buona domanda da sola, se non ha già risposto qui in qualche forma.
Riccioli d'oro

6

dal momento che il resto della tua domanda ha ricevuto risposta da goldilocks, peserò sulla prima parte, su come costruire le cose dalla fonte.

La versione davvero breve è che quando scarichi i file sorgente da Internet di solito avranno un readme associato a loro, che dovrebbe dirti esattamente come far funzionare il programma.

Ma dirti di leggere il readme in realtà non risponde alla domanda, quindi in un certo senso puoi scrivere un programma molto semplice che è

    #include <stdio.h>

    int main( ) {
        printf("Hello World!");
    }

e digita gcc helloWorld.ce gcccostruirà quel file binario e produrrà un programma che scrive "Hello World!" alla console quando eseguito.

Ok, quindi ora hai creato un programma, ma non sarebbe una seccatura dover digitare ogni singolo file sorgente che volevi compilare ogni volta che dovevi compilare qualcosa? Ecco a cosa makefilesservono. Se si esegue attraverso un programma che ha un sacco di file di origine che di solito venire con un makefile o qualche altro file build automation ( ant, Cmake, o autoconfo qualcosa del genere).

Per creare questi tipi di programmi, esegui semplicemente make <build target>all'interno della directory. Un makefile per il mio programma Hello World potrebbe includere un target chiamato helloworldche compila solo HelloWorld.c. Lo farei funzionare make helloworlde genererebbe un file binario.

Tieni presente che la creazione di elementi dalla sorgente può richiedere molto tempo e grandi quantità di memoria ( il team di Chromium consiglia persino un secondo disco rigido per costruire la propria fonte! ). Nota anche che quando stai costruendo cose dalla fonte dovrai occuparti delle dipendenze, piuttosto che il gestore dei pacchetti lo faccia per te

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.