Distcc è un programma ideato per distribuire i task di compilazione in una
rete di host partecipanti. È composto da un server,
Se si prevede di utilizzare distcc per il bootstrap di una installazione
Gentoo, si veda la relativa sezione all'
Per utilizzare distcc è necessario che tutti i computer collegati in rete abbiano la stessa versione di GCC. È possibile mescolare, ad esempio, versioni 3.3.x (dove x varia), ma non 3.3.x e 3.2.x altrimenti i programmi potrebbero contenere errori.
Esistono alcune opzioni di cui è bene parlare prima di cominciare l'installazione di distcc.
Distcc contiene un monitor grafico per tenere sotto controllo i task che il tuo computer sta distribuendo per la compilazione. Se usi Gnome, metti 'gnome' nelle tue USE flags. Se non usi Gnome e vuoi comunque utilizzare il monitor, metti 'gtk' nelle tue USE flags.
# emerge distcc
Configurare Portage per usare distcc è molto facile. È necessario seguire questi semplici passi per ogni computer sul quale desideri utilizzare distcc:
# emerge distcc # nano -w /etc/make.conf(Imposta N ad un numero adeguato alla tua configurazione) (Un metodo piuttosto comune consiste nell'impostare N al doppio del numero totale di CPU + 1) MAKEOPTS="-jN"(Aggiungere distcc a FEATURES) FEATURES="distcc"
Per impostare la lista degli host puoi usare
192.168.0.1 192.168.0.2 192.168.0.3 192.168.0.1/2 192.168.0.2 192.168.0.3/10 192.168.0.1:4000/2 192.168.0.2/1 192.168.0.3:3632/4 @192.168.0.1 @192.168.0.2:/usr/bin/distccd 192.168.0.3(Esistono molti altri metodi per impostare gli host. Si veda il man di distcc per ulteriori informazioni.) Se desideri compilare anche in locale, devi aggiungere 'localhost' all'elenco degli host. Al contrario, se non lo desideri (che è la scelta più diffusa), non aggiungere nulla all'elenco. Su macchine poco prestanti la compilazione in locale può rallentare parecchio il sistema. Ricordati di controllare le impostazioni per non ridurre le prestazioni.
Potrebbe sembrare complicato, ma nella maggior parte dei casi una variante della riga 1 o 2 sarà sufficiente.
Dato che la maggior parte degli utenti non userà le righe 3 o 4, rimando chi
fosse interessato alla
Ad esempio, per impostare la riga 1 del listato precedente:
# /usr/bin/distcc-config --set-hosts "192.168.0.1 192.168.0.2 192.168.0.3"
Modifica
A questo punto devi avviare il demone distcc su tutti i computer della rete:
(Aggiungere distcc al runlevel di default) # rc-update add distccd default(Avviare il demone distcc) # /etc/init.d/distccd start
È generalmente più semplice rispetto alla configurazione di Portage. È
necessario
aggiornare la variabile d'ambiente
# export PATH="/usr/lib/ccache/bin:/usr/lib/distcc/bin:${PATH}"Puoi aggiungere questa riga a .bashrc, o all'equivalente file di configurazione della shell che stai usando, per impostare automaticamente il PATH ogni volta che effettui il log in
A questo punto, invece di usare
Il cross-compiling è l'utilizzo di un'architettura per compilare programmi
per un'altra architettura. Questo potrebbe voler dire semplicemente
utilizzare un Athlon (i686) per compilare un programma per un K6-2 (i585)
oppure utilizzare una Sparc per compilare un programma per ppc. Il
procedimento è documentato nella nostra
È necessario effettuare il boot della nuova macchina con un LiveCD di Gentoo
Linux
e seguire la
# nano -w /etc/make.conf(Aggiungere distcc a FEATURES) FEATURES="distcc"(Modificare MAKEOPTS con -jN, dove N rappresenta il numero dei processori aumentato di 1) MAKEOPTS="-jN"
# export PATH="/usr/lib/ccache/bin:/usr/lib/distcc/bin:${PATH}"
Prima di configurare distcc è necessario aggiungere l'utente 'distcc' a
# echo "distcc:x:240:2:distccd:/dev/null:/bin/false" >> /etc/passwd
È ora possibile installare distcc:
# USE='-*' emerge --nodeps sys-devel/distcc
Per configurare distcc, esegui
(Sostituire host1, host2, ... con l'IP degli host che partecipano alla compilazione) # /usr/bin/distcc-config --set-hosts "localhost host1 host2 host3 ..."Per esempio: /usr/bin/distcc-config --set-hosts "localhost 192.168.0.4 192.168.0.6"
Adesso distcc è configurato per il bootstrap! Segui la guida
ufficiale all'installazione ricordando di ri-emergere distcc dopo
l'
Emergendo alcuni pacchetti, noterai che non vengono distribuiti (e quindi non vengono compilati in parallelo). Ciò è dovuto al fatto che gli sviluppatori di Mozilla e Xorg-X11 hanno disabilitato la compilazione parallela perchè causa di problemi.
La compilazione può fallire anche con altri pacchetti per lo stesso identico
motivo. Se ti dovesse capitare,
Se utilizzi versioni diverse di GCC sui tuoi host, avrai sicuramente strani problemi. Assicurati quindi che tutti gli host usino la stessa versione di GCC.
Le versioni più recenti di Portage usano
Distcc contiene due monitor. Quello testuale, compilato di default,
si chiama
L'altro monitor viene abilitato se
# distccmon-text N(oppure) # distccmon-guiPer monitorare l'utilizzo di distcc da parte di Portage: # DISTCC_DIR="/var/tmp/portage/.distcc/" distccmon-text N(oppure) # DISTCC_DIR="/var/tmp/portage/.distcc/" distccmon-gui