Qual è la differenza tra la creazione dall'origine e l'utilizzo di un pacchetto di installazione?


46

Mi chiedevo: quando si installa qualcosa, c'è un modo semplice per fare doppio clic su un file eseguibile di installazione e, d'altra parte, c'è un modo per costruirlo dal sorgente.

Quest'ultimo, scaricando un pacchetto sorgente, è davvero ingombrante.

Ma qual è la differenza fondamentale tra questi due metodi?

Risposte:


44

Tutti i software sono programmi , chiamati anche pacchetti sorgente . Quindi tutti i pacchetti sorgente devono essere compilati per primi, per essere eseguiti sul tuo sistema.

I pacchetti binari sono quelli che sono già compilati dal sorgente da qualcuno con caratteristiche e parametri generali forniti nel software in modo che un gran numero di utenti possano installarlo e usarlo.

I pacchetti binari sono facili da installare .
Ma potrebbe non avere tutte le opzioni dal pacchetto upstream.

Quindi, per l'installazione dal sorgente, devi creare tu stesso il codice sorgente. Ciò significa che è necessario prendersi cura delle dipendenze da soli. Inoltre, devi essere consapevole di tutte le funzionalità del pacchetto in modo da poterlo costruire di conseguenza.

Vantaggi dell'installazione dalla fonte:

  • Puoi installare la versione più recente e rimanere sempre aggiornato, che si tratti di una patch di sicurezza o di una nuova funzionalità.
  • Consente di ridurre le funzionalità durante l'installazione in modo da soddisfare le proprie esigenze.
  • Allo stesso modo è possibile aggiungere alcune funzionalità che potrebbero non essere fornite nel file binario.
  • Installalo nella posizione che desideri.
  • Nel caso di alcuni software, è possibile fornire informazioni specifiche sull'hardware per un'installazione adeguata.

In breve, l'installazione da sorgente ti offre un'opzione di personalizzazione pesante allo stesso tempo, ma richiede un grande sforzo, mentre l'installazione da binario è più semplice ma potresti non essere in grado di personalizzare come desideri.

Aggiornamento : aggiunta dell'argomento relativo alla sicurezza nei commenti seguenti. Sì, è vero che durante l'installazione da binario non hai l'integrità del codice sorgente. Ma poi dipende da dove hai preso il binario. Ci sono molte fonti attendibili da cui è possibile ottenere il binario di qualsiasi nuovo progetto, l'unico aspetto negativo è il tempo . Potrebbe volerci un po 'di tempo prima che il binario degli aggiornamenti o persino un nuovo progetto compaiano nei nostri repository di fiducia.

E soprattutto, sulla sicurezza del software, vorrei evidenziare questa pagina esilarante nei laboratori di campana forniti da Joe nei commenti qui sotto.


4
il sorgente può anche essere compilato in modo ottimizzato per il tuo sistema (il che .. potrebbe non essere una buona idea, dato che il materiale compilato è "specifico" per il sistema e potrebbe non funzionare su un backup ... ma hai il fonte, puoi ricompilare (se hai tempo per quello))
Olivier Dulac,

Questo dipende dal fatto che tu abbia quel "sistema di backup". Se stai solo facendo qualche ricerca, in genere non lo fai.
h22,

1
Per l'iperparanoide, un vantaggio dell'installazione dal sorgente è la sicurezza e la possibilità di rivedere il codice se si è in grado e si desidera: quando si installa dal sorgente, si sa per certo che si ha un binario da quel codice sorgente e non un binario con modifiche sconosciute (supponendo che tu ti fidi della fonte in primo luogo).
LawrenceC,

6
@ultrasawblade - Ovviamente non sei abbastanza paranoico! <G> - vedi cm.bell-labs.com/who/ken/trust.html per l'intero importo.
Joe,

32

Un file sorgente contiene il codice originale come scritto dallo sviluppatore in qualunque lingua scelga (C, C ++, Python ecc.) Ed è generico. Non è specifico per qualsiasi distribuzione e in molti casi per qualsiasi sistema operativo.

Un pacchetto (ad esempio RPM o DEB) è l'eseguibile binario (o script interpretato, ecc.) Pre-preparato per la vostra particolare distribuzione. Il compito di preparare l'origine per la compilazione (aggiunta di eventuali patch necessarie ecc.), La compilazione effettiva, la creazione di file di configurazione specifici della distro, la creazione di script pre e post installazione ecc. Sono tutti a carico del manutentore del pacchetto.

In altre parole, tutto il lavoro dell'asino è stato fatto per te in un pacchetto, mentre dovrai scegliere tu stesso se scegli di installarlo dal sorgente.

È molto più facile usare un pacchetto in quasi tutti i casi come:

  • Sono molto più facili da installare
  • Sono appositamente progettati per funzionare con la tua distribuzione
  • A volte vengono corretti dal manutentore del pacchetto per correggere bug specifici della distro
  • Il gestore pacchetti li disinstallerà
  • Il gestore pacchetti gestirà tutte le dipendenze per te
  • Il gestore dei pacchetti si occuperà degli aggiornamenti
  • Non è necessario installare strumenti di sviluppo sul proprio sistema (compilatori, make etc)

Tuttavia, a volte la versione in pacchetto è una versione precedente o, peggio ancora, non esiste una versione in pacchetto; nel qual caso l'unica opzione è quella di compilare te stesso. In tal caso, è necessario considerare quanto segue:

  • Dovrai installare tutti gli strumenti di sviluppo sul tuo sistema
  • Sarai responsabile del controllo di un aggiornamento e della ricompilazione
  • Dovrai assicurarti che tutte le dipendenze siano installate, compresi i devpacchetti: ce ne potrebbero essere molti.
  • Potrebbe essere necessario eseguire il debug dei problemi se non funziona come previsto nella distribuzione

Se sei disposto a impegnarti di più, la compilazione dalla fonte può darti i vantaggi di:

  • Accesso all'ultima versione disponibile
  • L'opzione per ottimizzare il processo di compilazione per prestazioni / stabilità
  • Godimento!

Si noti che mentre alcuni pacchetti predefiniti di distro forniscono eseguibili binari che sono pronti per l'installazione ed esecuzione (RPM e DEB sono esempi), altri distro forniscono pacchetti che automatizzano semplicemente il processo di compilazione.

Gentoo's ne ebuildsè un esempio: il pacchetto è sostanzialmente istruzioni per il gestore pacchetti che descrivono come compilare e installare l'eseguibile. Questo ha molti dei vantaggi dei gestori di pacchetti tradizionali (aggiornamenti automatici, disinstallazione, ecc.) Pur consentendo all'utente di ottimizzare il processo di compilazione secondo i propri gusti.

Arch Linux ha un sistema di packaging in cui i pacchetti mainstream sono binari mentre molti pacchetti extra sono compilati sul sistema usando PKGBUILDfile.


19

Oltre alle altre risposte, vorrei aggiungere qualcosa:

Se decidi di compilare un programma da solo, devi pensare che la compilazione non è qualcosa che fai solo una volta. Probabilmente dovrai iscriverti alla mailing list di sviluppo delle applicazioni che hai deciso di compilare e rimanere aggiornato con le nuove versioni e, soprattutto, con gli aggiornamenti di sicurezza.

Ogni volta che l'applicazione viene aggiornata dovrai ricompilare la nuova versione, quindi tieni presente che dovrai risparmiare un po 'del tuo tempo ogni settimana.

Se non puoi permetterlo, è meglio lasciare che il manutentore del pacchetto faccia quel lavoro per te.


6

Costruire dalla fonte consente di specificare l'architettura esattamente della tua macchina. Le nuove CPU hanno istruzioni aggiuntive che i compilatori comprendono, aumentando le prestazioni. I pacchetti pre-build di solito contano sulla CPU più arcaica ancora in uso comune.

Ciò è importante soprattutto per le applicazioni critiche per i progetti che utilizzano la CPU in modo molto pesante, ad esempio strumenti di pipeline bioinformatica o strumenti di modellazione geofisica. Tale software viene eseguito in un ambiente molto controllato, non presenta il controllo degli accessi da solo, quindi raramente i bug di sicurezza sono così urgenti che devono essere riparati in giorni o ore. Quasi mai deve funzionare su una macchina diversa con un'architettura inizialmente sconosciuta.

Sì, lo sapevo, i computer ora sono molto, molto veloci e ogni sforzo o azione intraprendi è molto, molto costoso, ma il terzo giorno di seduta e di attesa del completamento del programma (questa è la situazione di cui sto parlando) tali verità inizia a sembrare discutibile.

Diversamente, applicazioni come browser e simili dovrebbero essere meglio utilizzate dal repository del manutentore (e non da alcuni pacchetti predefiniti scaricati), poiché è molto importante tenerli aggiornati.


Laddove tali modifiche per sfruttare al massimo la tua CPU fanno la differenza (questo è rilevante solo in un codice molto specializzato; il detto è che il 95% del tempo viene speso sul 5% del codice, in modo da ottimizzare l'altro 95% non fa alcuna differenza notevole; e la maggior parte dei programmi di oggi sono il 99% del tempo in attesa che l'utente decida comunque), i programmi offrono un codice diverso da accendere a seconda della CPU all'avvio.
vonbrand,

0

Un modo per ottenere il meglio da entrambi i mondi (software aggiornato, installazione / disinstallazione semplici, incorpora la maggior parte delle modifiche e adattamenti della distribuzione, può ottimizzare per i requisiti locali), mentre i costi (devi tenerti aggiornato, fare attenzione ai bug e le patch dell'ultimo minuto, segui lo sviluppo, sei da solo per quanto riguarda le correzioni di bug e le incompatibilità tra le versioni) non possono essere mitigate (molto), è costruire i tuoi pacchetti, iniziando con i pacchetti sorgente dalla tua distribuzione. Sì, è più lavoro che costruzione e installazione.


1
Sembra una risposta interessante ("meglio di entrambi i mondi"), ma non riesco proprio a capire cosa intendi qui: "è costruire i tuoi pacchetti, iniziando dai pacchetti sorgente dalla tua distribuzione". Ti dispiacerebbe riformulare / spiegare?
Jan Żankowski il
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.