# [Distcc] Hai voglia a seguire le guide...

## canduc17

Ciao, sto cercando di far andare distcc su tre mie macchine.

Una è un AMD 64 Mobile 800 MHz, un AMD AThlon XP 1100 MHz e l'ultima un altro AMD Athlon XP 1800MHz.

Per far andare il tutto ho utilizzato le guide Gentoo Linux e Distcc e DistCC Cross-compiling Guide.

I miei tre computer sono tutti e tre collegati ad un router che usa dhcp, sempre nell'ordine gli indirizzi che assegna sono 192.168.1.5, 192.168.1.4, 192.168.1.2.

Perciò ho configurato così /etc/conf.d/distcc su tutte e tre le macchine:

```
# /etc/conf.d/distccd: config file for /etc/init.d/distccd

DISTCCD_OPTS="--allow 192.168.1.2/24 --allow 192.168.1.4/24 --allow 192.168.1.5/24"

# this is the distccd executable

DISTCCD_EXEC="/usr/bin/distccd"

# this is where distccd will store its pid file

DISTCCD_PIDFILE="/var/run/distccd/distccd.pid"

# set this option to run distccd with extra parameters

# Default port is 3632.  For most people the default is okay.

DISTCCD_OPTS="${DISTCCD_OPTS} --port 3632"

# Logging

# You can change some logging options here:

# --log-file FILE

# --log-level LEVEL  [critical,error,warning, notice, info, debug]

#

# Leaving --log-file blank will log to syslog

# example: --log-file /dev/null --log-level warning

# example: --log-level critical

DISTCCD_OPTS="${DISTCCD_OPTS} --log-level critical"

# SECURITY NOTICE:

# It is HIGHLY recomended that you use the --listen option

# for increased security. You can specify an IP to permit connections

# from or a CIDR mask

# --listen accepts only a single IP

# --allow is now mandatory as of distcc-2.18.

# example:  --allow 192.168.0.0/24

# example:  --allow 192.168.0.5 --allow 192.168.0.150

# example:  --listen 192.168.0.2

DISTCCD_OPTS="${DISTCCD_OPTS} --allow 192.168.0.0/24"

#DISTCCD_OPTS="${DISTCCD_OPTS} --listen 192.168.0.2"

# set this for niceness

# Default is 15

DISTCCD_NICE="15"
```

ed ho anche dato su tutte e tre le macchine il comando:

```
/usr/bin/distcc-config --set-hosts "192.168.1.2 192.168.1.4 192.168.1.5"
```

Seguendo le istruzioni della guida sul cross-compiling per l'Athlon XP 1100MHz, ho ottenuto:

```
candesktop canduc # cd /usr/lib/distcc/bin

candesktop bin # ls -l

totale 4

lrwxrwxrwx 1 root root 25 17 apr 10:38 c++ -> i386-pc-linux-gnu-wrapper

lrwxrwxrwx 1 root root 25 17 apr 10:38 cc -> i386-pc-linux-gnu-wrapper

lrwxrwxrwx 1 root root 25 17 apr 10:38 g++ -> i386-pc-linux-gnu-wrapper

lrwxrwxrwx 1 root root 25 17 apr 10:38 gcc -> i386-pc-linux-gnu-wrapper

lrwxrwxrwx 1 root root 15 17 apr 10:09 i386-pc-linux-gnu-c++ -> /usr/bin/distcc

lrwxrwxrwx 1 root root 15 17 apr 10:09 i386-pc-linux-gnu-g++ -> /usr/bin/distcc

lrwxrwxrwx 1 root root 15 17 apr 10:09 i386-pc-linux-gnu-gcc -> /usr/bin/distcc

-rwxr-xr-x 1 root root 72 17 apr 10:37 i386-pc-linux-gnu-wrapper
```

dove i386-pc-linux-gnu-wrapper è questo file:

```
#!/bin/bash

exec /usr/lib/distcc/bin/i386-pc-linux-gnu-g${0:$[-2]} "$@"
```

Naturalmente ho anche modificato /etc/make.conf in tutte e tre le macchine:

```
...

MAKEOPTS="-j4"

FEATURES="distcc"

...
```

Quando però faccio partire una compilazione da questo Athlon mi compaiono errori come questo:

```
distcc[22185] (dcc_pump_sendfile) ERROR: sendfile failed: Connection reset by peer

distcc[22185] (dcc_readx) ERROR: unexpected eof on fd4

distcc[22185] (dcc_r_token_int) ERROR: read failed while waiting for token "DONE"

distcc[22185] Warning: failed to distribute kmime_charfreq.cpp to 192.168.1.5, running locally instead

distcc[22146] (dcc_writex) ERROR: failed to write: Connection reset by peer

distcc[22146] Warning: failed to distribute kmime_codecs.cpp to 192.168.1.2, running locally instead

distcc[22191] (dcc_writex) ERROR: failed to write: Connection reset by peer

distcc[22191] Warning: failed to distribute kmime_mdn.cpp to 192.168.1.2, running locally instead
```

e la compilazione non viene distribuita tra le macchine.

Da notare che non ho installato firewall di nessun tipo e che queste macchine di norma non collaborano in rete (non ho configurato samba o cose simili).

Il dominio di tutte e tre però è identico.

Dov'è la magagna questa volta?!

----------

## IlGab

La pinghi ? La porta è aperta sulle altre macchine ?

----------

## canduc17

Il ping dalla macchina principale (192.168.1.4) funziona:

```
candesktop canduc # ping 192.168.1.2

PING 192.168.1.2 (192.168.1.2) 56(84) bytes of data.

64 bytes from 192.168.1.2: icmp_seq=1 ttl=64 time=0.239 ms

64 bytes from 192.168.1.2: icmp_seq=2 ttl=64 time=0.227 ms

64 bytes from 192.168.1.2: icmp_seq=3 ttl=64 time=0.186 ms

64 bytes from 192.168.1.2: icmp_seq=4 ttl=64 time=0.226 ms

64 bytes from 192.168.1.2: icmp_seq=5 ttl=64 time=0.196 ms

64 bytes from 192.168.1.2: icmp_seq=6 ttl=64 time=0.163 ms

--- 192.168.1.2 ping statistics ---

6 packets transmitted, 6 received, 0% packet loss, time 5000ms

rtt min/avg/max/mdev = 0.163/0.206/0.239/0.027 ms

candesktop canduc # ping 192.168.1.5

PING 192.168.1.5 (192.168.1.5) 56(84) bytes of data.

64 bytes from 192.168.1.5: icmp_seq=1 ttl=64 time=1.12 ms

64 bytes from 192.168.1.5: icmp_seq=2 ttl=64 time=0.156 ms

64 bytes from 192.168.1.5: icmp_seq=3 ttl=64 time=0.170 ms

--- 192.168.1.5 ping statistics ---

3 packets transmitted, 3 received, 0% packet loss, time 1999ms

rtt min/avg/max/mdev = 0.156/0.483/1.124/0.453 ms
```

Che porte devono essere aperte sulle altre macchine?

----------

## xveilsidex

hai aggiunto questa riga?

echo "distcc:x:240:2:distccd:/dev/null:/bin/false" >>/etc/passwd

cmq non tutti i programmi vengono compilati con distcc!

hai letto questa guida?

http://www.gentoo.org/doc/en/distcc.xml

----------

## canduc17

Come se ho letto la guida?!

E' il liet-motiv di questo topic...guarda il mio primo post.

Ho aggiunto la tua riga, ma se l'hai presa dalla guida, fa riferimento all'uso di distcc per il bootstrap, non so quanto mi possa servire...

L'esito è infatti sempre quello:

```
distcc[22927] ERROR: compile sipqtQWMatrix.cpp on 192.168.1.5 failed with exit code 110

make[1]: *** [sipqtQWMatrix.o] Error 110

make[1]: *** Waiting for unfinished jobs....

gcc-config error: Could not run/locate "i386-pc-linux-gnu-g++"

distcc[22929] ERROR: compile sipqtQWizard.cpp on 192.168.1.2 failed

make[1]: *** [sipqtQWizard.o] Error 1

gcc-config error: Could not run/locate "i386-pc-linux-gnu-g++"

distcc[22922] ERROR: compile sipqtcmodule.cpp on 192.168.1.2 failed
```

Un'altro segnale è che nell'interfaccia grafica che mi dovrebbe dire come procede la compilazione sulle diverse macchine (distccmon-gui), non dà segni di vita, la sua finestra rimane vuota.

----------

## drizztbsd

hai delle macchine con CHOST=i386 e altre macchine con CHOST=i686, non può funzionare così facilmente  :Smile: 

i casi son 2, o metti i chost uguali come da guida oppure rischi e fai un wrapper

----------

## noppy

io ho notato che dando la liste delle macchine come indirizzo IP spesso non mi funzionava , percio' ho messo i nomi delle macchine (come mi pare sia riportato negli esempi) , per risolvere i nomi io uso un dns pero' basta modificare il file /etc/hosts e via , poi un altra cosa , nella lista la prima macchina deve essere quella locale (almeno ho capito cosi) , percio se le macchine si chiamano h1 h2 e h3 , la lista per h1 e' "h1 h2 h3" quella per h2 "h2 h1 h3" e quella per h3 "h3 h1 h2" .

----------

## canduc17

@ Drizzt Do` Urden: cavolo, hai ragione in un'AMD ho CHOST="i686-pc-linux-gnu", nell'altro (quello da cui parte la compilazione) ha CHOST="i386-pc-linux-gnu".

Ma perchè? Sono due processori identici, cambia solo la frequenza!!!

Come ho detto nel primo post un wrapper l'ho fatto, anche perchè la terza macchina è un amd64 (CHOST="x86_64-pc-linux-gnu")!

Ho seguito la Distcc cross-compiling guide.

Quello che ho fatto dovrebbe risolvere problemi dirivanti da diversi chost, o no?

----------

## Scen

La via più semplice è migrare a CHOST=i686 su quello che attualmente ha i386 (vedi relativa guida).

Per tua informazione, io tempo fa ho provato a mettere in piede un distcc tra un pentium3 e un amd64 (i miei 2 attuali pc casalinghi) seguendo la guida, e mi funzionava tutto alla perfezione  :Razz:   :Wink: 

----------

## canduc17

E allora, anch'io che ho seguito la guida cosa ho sbagliato?!

Perchè cambiare CHOST, quando ho già fatto un wrapper per gestire l'AMD64?

In base a che cosa gentoo decide il CHOST di una macchina quando viene installato per la prima volta???

----------

## Scen

 *canduc17 wrote:*   

> E allora, anch'io che ho seguito la guida cosa ho sbagliato?!

 

In /etc/conf.d/distccd specifichi in 2 punti diversi --allow. Specificalo una volta sola, e assicurati di utilizzare la classe di indirizzi corretti:

(nel tuo caso, per non complicarti la vita)

```

DISTCCD_OPTS="${DISTCCD_OPTS} --allow 192.168.1.0/24"

```

```

distcc-config --get-hosts

```

cosa restituisce?

 *canduc17 wrote:*   

> Perchè cambiare CHOST, quando ho già fatto un wrapper per gestire l'AMD64?

 

Con un CHOST=136 non puoi utilizzare le ultime versioni stabili di glibc (tanto per dirne una), e avendo un processore molto recente non vedo il motivo di utilizzare una sottoarchitettura "obsoleta".

 *canduc17 wrote:*   

> In base a che cosa gentoo decide il CHOST di una macchina quando viene installato per la prima volta???

 

Probabilmente hai effettuato l'installazione da uno stage3 x86 (mannaggia al giorno che li hanno resi disponibili nei mirror....  :Confused:  )

----------

