Distcc/it

Distcc è un programma progettato per distribuire i processi di compilazione, attraverso una rete, a degli host partecipanti. È composto da un server,, e da un client,. Distcc funziona in modo trasparente con ccache, Portage e perfino Automake, con un po' di lavoro.

Se stai pensando di usare distcc per facilitare il bootstrap di una installazione di Gentoo, assicurati di leggere la sezione Usare Distcc per il Bootstrap.

Dipendenze
Per poter usare Distcc, tutti i computer sulla rete devono avere la stessa versione di GCC. Ad esempio, mescolare GCC 3.3.x (dove la x è variabile) non è un problema, ma mescolare 3.3.x e 3.2.x potrebbe generare errori in fase di compilazione o di esecuzione.

Installazione di Distcc
Ci sono un paio di opzioni che dovresti conoscere prima di cominciare a installare distcc.

Distcc viene distribuito con un monitor grafico per controllare i task che il computer destina alla compilazione. Se si usa Gnome, occorre inserire 'gnome' tra le flag USE. Nel caso in cui non si usi Gnome ma si volesse comunque avere il monitor grafico, allora la flag USE da inserire sarebbe 'gtk'.

Configurare portage all'uso di Distcc
Far usare distcc a Portage è semplice. Eseguire i passaggi seguenti su tutti i sistemi che partecipano alla compilazione distribuita:

Adesso, impostare le variabili  e   come mostrato sotto. Una strategia comune consiste nell'impostare N al doppio del numero totale delle CPU (locali+remote)+1, ed M al numero delle CPU locali. NEl caso in cui non siano disponibili host distcc, o che l'ebuild richieda una compilazione esplicitamente locale (ad esempio, gcc), la flag  preverrà l'apertura di troppi task.

Specificare gli host partecipanti
Utilizzare il comando  per impostare una lista di host. Ecco un esempio degli host che potrebbero essere nella tua lista:

Examples of host definitions

Ci sono anche altri modi per impostare gli host. Consultare la manpage di distcc per ulteriori dettagli.

Se si vuole compilare anche in locale, occorre inserire 'localhost' nella lista degli host. Di contro, se si vuole evitare di usare la macchina locale per compilare (caso d'uso comune), bisogna ometterlo dalla lista. Inserire 'localhost' su una macchina lenta potrebbe addirittura rallentare le cose. È consigliabile effettuare dei test per raggiungere le performance migliori.

Può sembrare complicato, ma nella maggior parte dei casi una variante della riga 1 o 2 sarà sufficiente a far funzionare tutto.

Visto che la maggior parte delle persone non usa le righe 3 e/o 4, fare riferimento alla documentazione di distcc (man distcc) per ulteriori informazioni, incluso il come far funzionare distcc attraverso una connessione SSH.

Ad esempio, per impostare la prima riga dell'esempio precedente:

Modificare sulla base delle proprie esigenze ed assicurarsi di aver impostato la direttiva   di modo da accettare solo host fidati. Per aumentare la sicurezza, si può usare la direttiva  per indicare al demone distcc quale IP ascoltare (per sistemi multi-homed). Ulteriori informazioni su distcc sono presenti alla pagina Distcc Security Design.

Adesso, lanciare il demone di distcc su tutti i computer partecipanti:

Configurare Distcc per funzionare con Automake
In molti casi, questa procedura è anche più semplice della parte riguardante Portage. Ciò che bisogna fare è aggiornare la propria variabile  per farle includere  di fronte alla directory che contiene. In ogni caso, c'è da fare attenzione. Se si usa ccache bisogna inserire distcc dopo ccache:

Si può inserire tutto questo dentro il proprio o equivalente, di modo da impostare PATH ogni volta che si esegue il login.

Then, as you would normally type , you would type   (where N is an integer). The value of N depends on your network and the types of computers you are using to compile. Test your own settings to find the number that yields the best performance.

Cross-Compilazione
La cross-compilazione consiste nell'utilizzare un'architettura per costruire software che verranno eseguiti su un'altra architettura. La cosa può essere semplice come ad esempio usare un Athlon (i686) per compilare un programma per K6-2(i586), o usare uno Sparc per compilare un programma per ppc. Tutto ciò è documentato nella nostra Guida a DistCC per la Cross-compilazione.

Fase 1: Configurare Portage
Host test2 HostName 123.456.789.2 Port 1234 User UserName }}

Avviare il computer con un Gentoo Linux LiveCD e seguire le istruzioni di installazione fino alla parte riguardante il bootstrap (consultare le Gentoo FAQ per ulteriori informazioni riguardo il bootstrap.). In seguito, configurare Portage per l'uso di Distcc

Fase 2: Procurarsi Distcc
Installare distcc:

Fase 3: Configurare Distcc ===

Lanciare  per configurare distcc; sostituire   con gli indirizzi IP o con gli hostname delle macchine partecipanti.

Distcc è configurato per il bootstrap! Continuare con le istruzioni di installazioni ufficiali e non dimenticare di ri-emergere Distcc dopo aver lanciato, per assicurarsi che tutte le dipendenze desiderate vengano installate.

Alcuni pacchetti non usano Distcc
Man mano che si emergono pacchetti, si può notare come alcuni di essi non vengano compilati in modalità distribuita (e neanche in parallelo). Questo è possibile quando il Makefile del pacchetto in questione non supporta le operazioni parallele, o quando il manutentore dell'ebuild le ha esplicitamente disabilitate, spesso a causa di problemi noti.

A volte distcc può causare fallimenti nelle compilazioni. Se succede, si è pregati di comunicarlo nel bugtracker.

Versioni di GCC differenti
Se si hanno diverse versioni di gcc nei propri host, molto probabilmente si manifesteranno problemi di varia natura. La soluzione consiste nell'installare in tutti gli host la stessa versione di GCC.

Gli aggiornamenti più recenti di Portage usano  invece di. Questo significa che se si stanno usando macchine i686 insieme ad altre di diverso tipo (i586,i386) si incontreranno problemi. Una soluzione può essere quella di specificare  o di inserirlo direttamente in.

-march=native
A partire da GCC 4.3.0, il compilatore supporta l'opzione, che abilita il rilevamento automatico della CPU e le conseguenti ottimizzazioni che val la pena utilizzare. L'uso di questa opzione rappresenta un problema per  in quanto abilita il mix di codice ottimizzato per processori differenti (come AMD Athlon e Intel Pentium). NON usare  o   nelle proprie   o   durante le compilazioni con.

Distcc Monitor
Distcc viene distribuito con due monitor. Quello testuale è sempre incluso, e viene lanciato con. La prima volta può apparire confusionario, ma è molto semplice da usare. Se si lancia il comando senza parametri aggiuntivi verrà eseguito solo una volta, mentre se gli si passa un numero N, verrà aggiornato ogni N secondi.

L'altro monitor viene attivato solo se è stata abilitata la  flag   o. Questo monitor è basato su gtk+, gira dentro l'ambiente X ed è molto bello. Per Gentoo il monitor con interfaccia grafica risponde al comando. In altri ambienti dovrebbe rispondere al nome di.

o lanciare :

Per visualizzare l'uso di Distcc che fa Portage, si può usare il comando

Distcc Monitors
Distcc ships with two monitors. The text-based one is always built and is called. Running it for the first time can be a bit confusing, but it is really quite easy to use. If you run the program with no parameter it will run once. However, if you pass it a number it will update every N seconds, where N is the argument you passed.

The other monitor is only turned on if you enabled  or   in your   flags. This one is GTK+ based, runs in an X environment and it is quite lovely. For Gentoo the GUI monitor has been called  for less confusion. Elsewhere it may be referred to as.

or run :

To monitor Portage's distcc usage you can use:

Ringraziamenti
Si ringraziano le seguenti persone per i contributi apportati a questa guida:


 * Lisa Seelye
 * Mike Frysinger
 * Erwin
 * Sven Vermeulen
 * Lars Weiler
 * Tiemo Kieft
 * nightmorph