Come compilare tutto il mio pacchetto installato da fonti?


26

Ho letto come le distro linux basate su sorgenti come Gentoo possono avere un notevole aumento delle prestazioni rispetto alle distro pre-costruite come Ubuntu perché si installano da sorgenti con ottimizzazioni per il tuo particolare sistema. È possibile creare Ubuntu dal sorgente per ottenere lo stesso tipo di vantaggio?


3
Installa Gentoo, non Ubuntu, per questo. Scherzi a parte, perché usare una distro che fallisce assolutamente nella gestione delle dipendenze basata sull'origine invece di quella che la colpisce?
Mathepic

7
Sarei curioso di vedere benchmark tra sorgente e binario in cui hanno effettivamente utilizzato le stesse versioni di stack e configurazione. Il confronto è di solito una versione di Ubuntu (con i suoi valori predefiniti) rispetto all'ultimo Gentoo possibile con un file system strano e impostazioni predefinite bizzarre. Le impostazioni predefinite di Ubuntu sono per lo più piuttosto sane ed è da qui che provengono la maggior parte delle sue prestazioni ed è per questo che la maggior parte dei confronti diretti mettono Ubuntu in vantaggio su Gentoo.
Oli

1
Un ottimo esempio di un brutto confronto è questo articolo della rivista Linux (è richiesta la registrazione gratuita per leggere) in cui usano kernel diversi, driver Nvidia diversi, versioni X diverse e ambienti desktop diversi. Potresti anche confrontare due diverse versioni di Ubuntu. Mostreranno scale di differenza simili.
Oli

4
Aumento delle prestazioni di cosa? Throughput di rete, velocità del disco, commutazione di processo, calcoli matematici puri, grafica 3D, tempo di avvio?
utente sconosciuto

1
Vorrei solo consigliare di compilare software, che richiede prestazioni della CPU su larga scala (mi viene in mente la codifica video) e viene utilizzato molto dall'utente e beneficia dell'ottimizzazione della CPU come ad esempio FMA3 o AVX2.
keiki,

Risposte:


42

Is is possible to build Ubuntu from source to get the same kind of benefit?

Non sono sicuro dei vantaggi se disponi di componenti hardware abbastanza nuovi, ma per la parte della domanda "Ubuntu dalla fonte" la risposta è SÌ, puoi costruire non solo le tue applicazioni preferite dalla fonte, ma l'intero sistema operativo.

Ecco come:

Devi installare apt-build . È uno strumento comandline come apt-get, ma invece di scaricare e installare il pacchetto binario, apt-build scarica il codice sorgente del pacchetto, lo compila e quindi lo installa sul sistema.

Dopo averlo installato con

sudo apt-get install apt-build

ti verrà chiesto un livello di ottimizzazione (il supporto è ok), se vuoi creare un repository apt-build per APT (Sì) e una domanda sull'architettura del processore (il mio intel i7 è considerato core2). Naturalmente tutte le opzioni possono essere riconfigurate in questo modo:

dpkg-reconfigure apt-build

Il comando sopra offre due opzioni aggiuntive per il compilatore gcc e make builder. Le loro descrizioni sono disponibili nei manuali di sistema: man gcc e man make.

Per un controllo manuale e disponibile delle opzioni di comando

man apt-build

Ma i più utili sono:

  • apt-build update - aggiorna l'elenco dei repository, (come apt-get update)
  • apt-build upgrade - aggiorna il sistema operativo, (come apt-get upgrade)
  • programma di installazione apt-build - installa un'applicazione (come apt-get install)
  • mondo apt-build - qualcosa per utenti hard-core, ricompila l'intero sistema!

Per esempio:

Diciamo che vuoi compilare / installare Gedit. Invece di apt-get install basta farlo

sudo apt-build install gedit

Apt-build utilizza le voci deb-src contenute nel file /etc/apt/sources.list in modo che i processi di compilazione e installazione siano completamente automatici (simile a emerge trovato in Gentoo). Apt-build scarica le fonti dell'applicazione principale e le sue dipendenze, le compila, crea un pacchetto deb e infine installa il pacchetto.

Alcune note sul mondo apt-build.

Secondo me non provarci, a meno che tu non abbia 24 o più ore disponibili!

In tal caso, rimuovere / disabilitare / disinstallare eventuali applicazioni di terze parti (è meglio farlo con una nuova installazione di Ubuntu) e quindi:

sudo su
dpkg --get-selections | awk '{if ($2 == "install") print $1}'> /etc/apt/apt-build.list
exit

Il comando sopra copierà l'elenco completo dei pacchetti di sistema in apt-build.list in modo che possano essere compilati dal sorgente. Apri quel file

sudo gedit /etc/apt/apt-build.list

e rimuovere qualsiasi voce GCC / G ++

Quindi puoi fare:

sudo apt-build world

Suggerisco di aggiungere due opzioni: --yes e --force-yes - per rendere il processo di ricostruzione completamente automatico.


10
+1 per la risposta concreta, rispetto a "perché costruire?" risposte. Preferirei leggere anche un'opinione più ampia (anche se soggettiva) sui benefici che potresti (o non potresti) ottenere utilizzando apt-build.
enzotib,

1
Attualmente ci sono +17 per questa risposta. Ma qualcuno l'ha fatto con successo?
keiki

1
@ otakun85 Ho usato apt-build per compilare con successo alcuni pacchetti su Ubuntu (non ricordo quale versione, una delle 12.04 | 12.10 | 13.04), ho tentato il mondo apt-build che era un casino. La pagina man di apt-build ha questo alla fine BUGS Many., quindi aspettatevi dei problemi.
Phizes,

Trovo che invece di usare apt-build worldsia meglio scaricare un libro "Linux from Scratch", e lo faccio apt-buildper ogni pacchetto elencato in esso. Specifica l'ordine corretto, ecc. Ad esempio, non sono sicuro, se apt-build worldsa che dovrebbe prima ricompilarsi binutils, quindi gcc, poi di binutilsnuovo, di gccnuovo, quindi programmare i linguaggi, gzipecc. Sembra che compili tutto in ordine alfabetico.
Serhyi Vynohradov,

@SerhyiVynohradov: non avrebbe importanza. LFS lo fa per evitare di lasciare dipendenze dalle librerie nel sistema host, ma qui sta semplicemente sostituendo tutto sul posto con le versioni compilate; saranno ancora nella stessa posizione, avranno lo stesso ABI, ecc.
Nick Matteo

3

Potresti iniziare una guerra e un grande dibattito su questo tipo di argomento, ma diamo un'occhiata alla vita reale.

La velocità del tuo sistema operativo dipende in gran parte dall'hardware che lo esegui e questo è il fattore principale.

Cambio frequentemente le distro mentre rimango con Arch, ma Arch è molto più veloce di Ubuntu? No.

Gnome con Compiz su Ubuntu 10.10 utilizza circa 300ram, su Arch 200ram, ho 4 GB di RAM, non sento la differenza, ma se si confronta Ubuntu con GNOME con Arch con impressionante, ci sarà un enorme impulso in reattività e risorse utilizzo (300ram contro 50ram), ma questo è importante solo se si sceglie una distribuzione per un netbook.

Quindi, se hai un desktop veloce e non vuoi passare il tempo a armeggiare con il tuo sistema, usa Ubuntu, ma se hai un netbook che considera l'utilizzo di un WM leggero su Arch :)


Bene, ad un certo punto potresti arrivare alla situazione in cui hai l'hardware più recente, ma devi comunque eseguire operazioni di un'ora. E invece di configurare un gruppo di server per distribuire il carico, non ti dispiace perdere tempo a armeggiare, per ottenere quel 20% di spinta in più. Non ho mai usato Arch, ma ho provato Gentoo. E ho visto che molte volte non esiste una "distro più veloce". Invece c'è una "distro con meno software". Potresti avere un sistema bare-bones che è veloce, ma non sicuro. E quando installi gli altri pacchetti diventa la stessa velocità di Ubuntu + apt-build.
Serhyi Vynohradov,

0

Apt-build è utile per più di prestazioni, è possibile creare immagini di distribuzione personalizzate e repository per hardware specifico pronto per l'installazione di massa per la tua azienda. Con questo intendo una distribuzione binaria ottimizzata se sai che tutto l'hardware sarà lo stesso. In questo modo, solo un computer esegue tutta la compilazione del lavoro e il resto viene semplicemente aggiornato utilizzando l'ISO rimasterizzato. Non è completamente solo per leggero o codifica. E un ISO di installazione personalizzato consente di reinstallare senza ricompilare se per qualche motivo il sistema non è ripristinabile dopo un disastro.

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.