È meglio compilare dal sorgente o installare da un pacchetto .deb?


18

A volte, durante il download di software da Internet, scopro che esiste un pacchetto .deb pronto per il mio Debian / Ubuntu e anche un tarball da compilare. All'inizio userei semplicemente il pacchetto per la sua facilità di installazione e non oserei nemmeno tentare di compilare. Anche il suo suono mi ha spaventato un po '. Al giorno d'oggi, tuttavia, quando ho la possibilità a volte mi trovo in un dilemma: c'è un vantaggio impopolare nella compilazione dal sorgente rispetto al pacchetto .deb? Spero di scoprirlo qui, grazie.

Risposte:


24

Il vantaggio della compilazione dal sorgente è che è possibile compilare pacchetti con determinati flag / opzioni che potrebbero essere mancanti / disabilitati nei pacchetti Ubuntu standard. Inoltre, semplifica l'installazione di più versioni dello stesso programma. Inoltre, puoi scegliere una versione esatta di un pacchetto che potrebbe essere già stato rimosso o non ancora presente nei repository Ubuntu (esempio: ho diverse versioni di Python 2.4.x nella mia directory / opt / in quanto ne ho bisogno per eseguire qualche versione precedente Software).

Lo svantaggio della compilazione dal sorgente è che, a meno che non si crei un .deb e quindi lo si installi, la normale procedura "./configure; make; sudo make install" mantiene il gestore dei pacchetti di Ubuntu completamente inconsapevole delle modifiche che si stanno facendo, quindi si non otterrai alcun aggiornamento per il software compilato manualmente; ed è possibile che in seguito il gestore pacchetti sovrascriverà / rompa il pacchetto se non stai attento a installarlo in una posizione separata.

In breve: considera sempre l'installazione da repository Ubuntu standard prima, poi considera l'installazione di un .deb; compilare solo da fonti se si sa esattamente perché è necessario farlo.


Ho anche letto, ciò che le prestazioni del pacchetto potrebbero essere diverse, una volta compilate, una sorta di migliore compatibilità con il kernel corrente. Non l'ho confrontato personalmente.
Fedir RYKHTIK il

@Fedir: Non sono sicuro che il kernel abbia qualcosa a che fare con questo, è piuttosto l'architettura del processore - per esempio, ai vecchi tempi molte distribuzioni contenevano pacchetti compilati con l'istruzione 80386 impostata per la massima compatibilità mentre la compilazione manuale di un programma per Pentium lo abilitava per utilizzare istruzioni più efficienti. Ci sono intere distribuzioni, come Gentoo, che vengono compilate dal sorgente sul computer host per questo motivo. La differenza, tuttavia, è generalmente minima e può essere notata solo in applicazioni molto specifiche.
Sergey,

1
Si noti che l'uso di checkinstall al posto di make install allevia molti degli svantaggi citati. Vedi help.ubuntu.com/community/CompilingEasyHowTo
ndemou,

1
Ci scusiamo per il nitpicking, @EliahKagan, ma, sebbene virtualenv sia fantastico, è più per mantenere più ambienti Python con diverse librerie installate. Se volevi una versione specifica di Python, magari compilata con impostazioni specifiche - avresti comunque bisogno di installare il vero binario - da un .deb o compilata da zero.
Sergey,

@Sergey Hai ragione. (E non vedo nulla di ciò che hai detto come nitpickiing - semmai dovrei scusarmi per il mio commento sbagliato e fuorviante!) A quanto ho capito, i gestori di pacchetti simili condarealizzeranno automaticamente ambienti virtuali e installeranno diverse installazioni di Python per loro , creazione e manutenzione di versioni per progetto. Ma come dici tu virtualenv non lo farà da solo.
Eliah Kagan,

1

Ne stavo discutendo proprio ieri. Penso che sia estremamente importante non costruire nulla di fragile, poiché è noto che non esiste una documentazione aggiornata e buona, specialmente quando si lavora con un sistema fragile, non ci sarà tempo per combattere il fuoco e scrivere documentazione e dove tutto è robusto la documentazione non è necessaria tanto. Quindi non dovresti mai compilare dal sorgente, trovare un'altra soluzione, usare un altro software, cambiare la tua architettura, ma non usare qualcosa che si romperà dopo l'aggiornamento. E sì, non ha nulla a che fare con la versione del kernel, riguarda l'architettura della tua macchina e al giorno d'oggi difficilmente puoi avere una differenza significativa con la compilazione dal codice sorgente, scommetto che non ne otterrai.


0

È sicuramente molto più semplice installare .deb, anche se, se possibile, la soluzione migliore è trovarlo in un repository o in un ppa, in modo da poter ricevere aggiornamenti.

AFAIK non ha alcun reale vantaggio nel compilarlo da soli a meno che non preveda di modificarlo prima. Se vuoi solo il software così com'è, installa il .deb

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.