5 trucchi per velocizzare i tempi di compilazione in Gentoo Linux

5 Tips Speed Compile 00 Featured Image
⏱️ 13 min read

Gentoo è una distribuzione Linux potente e flessibile. Con il suo innovativo gestore di pacchetti – Portage – ti consente di scolpire il tuo sistema informatico nelle sue parti più elementari.

Questo perché Gentoo, per impostazione predefinita, richiede la compilazione di tutti i pacchetti che si desidera installare. Questo approccio consente di modificare le impostazioni in fase di compilazione. Ciò include le impostazioni per varie tecnologie che non sarebbero state possibili in una distribuzione basata su binari.

Che cos’è la gestione dei pacchetti di origine?

La gestione dei pacchetti basata sul codice sorgente è il modo originale di distribuire programmi di terze parti in Linux. Questo è un sistema in cui un manutentore ha un elenco di ricette nell’ottenere e creare programmi.

Queste ricette possono contenere sia il codice sorgente di un programma che le istruzioni su come ottenerlo. Come utente, puoi quindi scaricare queste ricette dal tuo distributore tramite il tuo gestore di pacchetti. Una volta fatto, la tua macchina scaricherà il codice sorgente del programma e lo creerà in tempo reale per te.

5 Suggerimenti Speed ​​Compile 04 Ebuild Distribution

Anche se può sembrare antiquato, farlo in questo modo ha una serie di vantaggi:

  • La distribuzione solo della ricetta di un pacchetto richiede meno dati rispetto alla distribuzione di copie binarie. Questo, a sua volta, riduce la quantità di risorse necessarie per ospitare un mirror di un repository.
  • La compilazione di un pacchetto dal suo codice sorgente ti espone ai programmi che fanno funzionare il tuo sistema operativo. Questo può essere particolarmente utile se vuoi imparare come funziona il tuo computer e come puoi estenderne le funzioni.
  • Infine, la compilazione di un pacchetto dal suo codice sorgente ti dà la possibilità di personalizzare e modificare il comportamento dei tuoi programmi. Puoi facilmente includere o rimuovere funzionalità che non ti servono.

Nonostante ciò, questo approccio presenta anche una serie di aspetti negativi. Ad esempio, pacchetti come Firefox e Chromium richiedono ore per essere compilati e installati. Questo perché si tratta di programmi con milioni di righe di codice e centinaia di dipendenze.

5 Suggerimenti Speed ​​Compile 05 Esempio di programma compilato

Sapendo questo, questo articolo mira a introdurre cinque trucchi che puoi usare per migliorare i tuoi tempi di compilazione quando usi Gentoo.

1. Ottimizza MAKEOPTS

Uno dei modi più semplici per velocizzare i tempi di compilazione in Gentoo è ottimizzare il tuo make.conf. Questo è il file di configurazione principale che Portage usa per determinare le impostazioni di compilazione per la tua macchina. In quanto tale, contiene una varietà di variabili che determinano l’architettura e le impostazioni del sistema.

Puoi trovare il file make.conf in “/etc/portag”. Puoi anche stampare il contenuto del file con il seguente comando:

cat /etc/portage/make.conf
5 Suggerimenti Speed ​​Compile 06 Esempio Make Conf

L’unica cosa che devi cambiare per ottimizzare Portage è MAKEOPTS. Questa è l’impostazione che si occupa dei flag di ottimizzazione per il tuo sistema. Considera il seguente esempio:

[...]
 
MAKEOPTS="-j1 -l1"
 
[...]

In questo caso, ci sono due flag che puoi usare con MAKEOPTS:

  • Il -j flag indica la quantità di lavori di compilazione che vuoi allocare alla tua CPU. Una buona regola pratica quando si imposta questo valore è dargli la metà della quantità di core della tua CPU. Ad esempio, se stai utilizzando una CPU quad core, puoi impostare questo valore su -j2.
  • Il -l flag, d’altra parte, imposta la media di carico che desideri per il tuo sistema. La media del carico è la quantità combinata di attività che la CPU esegue per un certo periodo di tempo. Ad esempio, se vuoi velocizzare i tempi di compilazione per il tuo sistema, puoi impostare questo valore su -l2.

2. Approfitta di CCache

Un altro modo per accelerare i tempi di compilazione è utilizzare Cache. Questo è un programma di terze parti che ti consente di salvare file compilati comuni in uno spazio temporaneo nel tuo computer.

5 Suggerimenti Speed ​​Compile 07 Sito Web cache

Da lì, il tuo compilatore può quindi utilizzare questi file salvati invece di ricompilarli di nuovo. Ciò può essere particolarmente utile se si ricostruiscono costantemente programmi o si compila un pacchetto di grandi dimensioni.

Puoi installare CCache tramite Portage:

sudo emerge --ask dev-util/ccache
5 Suggerimenti Speed ​​Compile 08 Installazione cache

La prossima cosa da fare è configurare le impostazioni di CCache. Per farlo, devi creare il file ccache.conf:

sudo mkdir /var/cache/ccache/ && touch /var/cache/ccache/ccache.conf

Da qui, puoi quindi utilizzare le impostazioni di configurazione predefinite di CCache per iniziare:

max_size = 20.0G
umask = 002
hash_dir = false
compiler_check = %compiler% -v
cache_dir_levels = 3

L’ultima cosa che devi fare è dire a Portage di usare CCache durante la compilazione dei pacchetti. Per farlo, puoi includere le seguenti righe nel tuo make.conf:

FEATURES="ccache"
CCACHE_DIR="/var/cache/ccache"

3. Prova DistCC

Simile a CCache, DistCC è anche un programma di terze parti che può aiutare a velocizzare i tempi di compilazione. A differenza di CCache, DistCC lo fa distribuendo le attività di compilazione ad altri computer nella rete. Questo può essere particolarmente utile se hai più computer inutilizzati in casa.

5 Suggerimenti Speed ​​Compile 09 Sito Web Distcc

Il modo in cui funziona è che DistCC è diviso in due programmi: distccd e distcc.

  • distcc è l’utilità in esecuzione nel server di elaborazione. Questo è un semplice programma che ascolta le richieste DistCC in arrivo dai client e prende le attività da loro. Una volta completata la compilazione, l’oggetto compilato viene quindi rispedito al client per essere impacchettato.
  • distcc, d’altra parte, è il programma client che si connette a distccd. Questo è il programma che funziona con Portage per pianificare e distribuire senza problemi le attività di compilazione in una rete.

La creazione di un piccolo cluster DistCC è relativamente semplice. Per fare ciò, devi installare il programma distcc sia sul tuo server che sul tuo PC client:

sudo emerge --ask sys-devel/distcc

Configurazione di un server DistCC

Successivamente, devi configurare il tuo server per accettare le connessioni DistCC. Puoi farlo creando un file di configurazione distcc in “/etc/conf.d/”:

sudo touch /etc/conf.d/distccd

Una volta terminato, puoi includere la seguente riga di codice nel tuo file distccd:

DISTCCD_OPTS="--port 3632 --log-level notice --log-file /var/log/distccd.log -N 10 --allow 192.168.254.101"
  • Il port flag indica la porta su cui distccd ascolterà le connessioni in entrata. 3632 è la porta predefinita per DistCC.
  • Il log-level e log-file dice a DistCC di mantenere un file di registro per le attività che sta prendendo.
  • Il N flag indica la “bellezza” di distccd. Questa è una variabile che dice a DistCC quanto può utilizzare la CPU del server per le attività di compilazione. Questo è un valore che va da 0 a 20 dove 0 è il meno bello e 20 è il massimo.
  • Infine, il allow flag dice a DistCC di ascoltare solo le connessioni in entrata da indirizzi specifici. Ad esempio, la riga sopra dice a DistCC di ascoltare solo le connessioni in entrata da un singolo client.
5 Suggerimenti Speed ​​Compile 11 Distcc Config

La prossima cosa che devi fare è creare il file di registro distccd:

sudo touch /var/log/distccd.log
sudo chown distcc:root /var/log/distccd.log

Fatto ciò, ora puoi abilitare il tuo server distccd ad accettare le connessioni DistCC in entrata:

sudo rc-update add distccd default
sudo rc-service distccd start

Configurazione del client DisstCC

A differenza di distccd, configurare il client DistCC è incredibilmente semplice. Per prima cosa devi dire al tuo client dove cercare il server distccd:

sudo /usr/bin/distcc-config --set-hosts "localhost 192.168.254.102"
5 Suggerimenti Speed ​​Compile 12 Distcc Client Config

Questo dirà a DistCC di usare sia la macchina locale che il server per compilare i programmi. Da lì, l’unica cosa che resta da fare è configurare il tuo make.conf per usare DistCC.

Simile a CCache, devi usare la variabile FEATURES per dire a Portage che stai eseguendo DistCC nella tua rete. Ad esempio, questo è un make.conf da una macchina client:

MAKEOPTS="-j4 -l4"
FEATURES="distcc"

4. Usa BuildPKG

Un altro modo per velocizzare i tempi di compilazione in Gentoo è creare un server di distribuzione binaria. In questo, stai usando una macchina separata in cui i pacchetti sono compilati e distribuiti in forma binaria.

A differenza di DistCC, la distribuzione di binari richiede solo una singola macchina per eseguire la compilazione. Il programma risultante viene quindi condiviso su più macchine dove possono installarlo normalmente.

5 Suggerimenti Speed ​​Compile 13 Distribuzione Buildpkg

Farlo in questo modo può essere utile se stai già usando Gentoo su un certo numero di macchine simili. Questo perché i file binari riducono il tempo necessario per creare e mantenere un singolo client.

Per iniziare, devi solo aggiungere la seguente riga al make.conf del tuo server di build:

FEATURES="buildpkg"
5 Suggerimenti Speed ​​Compile 14 Buildpkg Build Server Config

Questo, a sua volta, dirà a Portage di creare automaticamente un pacchetto binario per ogni programma che installi nel tuo server.

Da lì, devi creare un modo per condividere quei file binari con le macchine nella tua rete. Per farlo, puoi installare un semplice server web HTTP:

sudo emerge --ask www-servers/lighttpd

Quindi, dì a lighttpd di servire i pacchetti del tuo server aggiungendo la seguente riga al tuo “/etc/lighttpd/lighttpd.conf”:

server.modules += ( "mod_alias" )
alias.url = ( "/packages" => "/var/cache/binpkgs" )

Installazione di pacchetti binari in Gentoo

Fatto ciò, l’installazione di pacchetti binari dal server di distribuzione è un semplice processo in due fasi. Innanzitutto, devi comunicare a Portage l’indirizzo del tuo server di distribuzione:

PORTAGE_BINHOST="http://192.168.254.110/packages"
5 Suggerimenti Speed ​​Compile 15 Buildpkg Client Config

Da lì, ho usato Portage per installare i pacchetti binari:

sudo emerge --ask -K www-client/firefox

Ecco, il -K l’opzione forzerà Portage a cercare solo i binari del pacchetto che si desidera installare.

In questo modo, esaminerà il server se ha copie del programma Firefox. Se Portage non riesce a trovarne, l’installazione non riuscirà. Ciò significa in definitiva che il server deve già avere il file binario di un programma prima che qualsiasi client lo richieda.

5. Ottimizza il tuo compilatore in Gentoo

Infine, puoi anche impostare il Compilatore GNU C (GCC) per consentirgli di ottimizzare la velocità.

5 Suggerimenti per la compilazione rapida 16 Esempio di compilazione

A differenza di MAKEOPTS, tuttavia, queste opzioni dipenderanno dalla macchina che hai. Ciò include la CPU, il disco rigido e la memoria di cui disponi.

Inoltre, è necessario posizionare queste opzioni nel file COMMON_FLAGS variabile. Per esempio:

COMMON_FLAGS="-march=native -O1 -pipe"

In questo, ci sono tre opzioni che puoi impostare per ottimizzare GCC:

  • Il march opzione dice a GCC di compilare il programma nella CPU che si desidera. Nella maggior parte dei casi, dici a GCC di creare il programma per la tua CPU locale. Per fare ciò, puoi dare il valore “nativo” e GCC creerà per la CPU su cui è attualmente in esecuzione.
  • Il O opzione indica il livello di ottimizzazione che desideri per i tuoi programmi. Questo è un intervallo compreso tra 0 e 3 e più alto è il valore impostato più veloce sarà l’esecuzione del programma. Tuttavia, ciò aumenterà il tempo necessario per compilarlo.
  • Il pipe opzione è un interruttore che puoi impostare per accelerare il processo di compilazione. Lo fa tenendo gli oggetti nella RAM invece di salvarli in file temporanei. Pertanto, ciò consumerà molta memoria e l’utilizzo di questa con RAM limitata provocherà il crash di GCC.
5 Suggerimenti per la compilazione rapida 17 Opzioni di ottimizzazione

Domande frequenti

1. Non ho una variabile MAKEOPTS o FEATURES nel mio make.conf. La mia installazione di Gentoo è rotta?

No! È normale che il file make.conf predefinito non abbia le variabili MAKEOPTS e FEATURES. Puoi semplicemente aggiungere le variabili ei suoi valori al tuo make.conf e Portage lo riconoscerà e lo applicherà immediatamente.

2. È possibile abilitare CCache solo per i pacchetti che desidero?

Sì! Puoi abilitare facilmente CCache solo per pacchetti specifici. Per farlo, devi prima rimuovere il valore “ccache” nella tua variabile FEATURES.

Da lì, devi modificare il file “/etc/portage/package.env”. Questo è il file in cui puoi abilitare le funzionalità di Portage in base al pacchetto. Sapendo questo, questo è un file package.env che utilizza CCache per alcuni programmi:

www-client/firefox ccache.conf
sys-devel/gcc ccache.conf
sys-devel/clang ccache.conf

In tal modo, ho abilitato CCache per Firefox, GCC e Clang. Ciò significa che Portage salverà solo i file oggetto per questi programmi e le loro dipendenze associate.

3. Ci sono problemi con l’esecuzione di un server di distribuzione Gentoo?

Uno dei problemi principali della manutenzione di un server di distribuzione è che sei responsabile dell’aggiornamento dei pacchetti binari. Ciò significa che prima di poter aggiornare qualsiasi client dovrai prima aggiornare il server di distribuzione e quindi rimuovere i vecchi binari nei tuoi client.

Un altro problema con l’esecuzione di un server di distribuzione è che si perde la flessibilità dei flag USE per le macchine client. Ciò significa che devi abilitare i flag che non ti servono su tutte le tue macchine.

Credito immagine: Spruzza

Join our Newsletter and receive offers and updates! ✅

0 0 votes
Article Rating
Avatar di Routech

Routech

Routech is a website that provides technology news, reviews and tips. It covers a wide range of topics including smartphones, laptops, tablets, gaming, gadgets, software, internet and more. The website is updated daily with new articles and videos, and also has a forum where users can discuss technology-related topics.

Potrebbero interessarti anche...

Subscribe
Notificami
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x