# distcc will nicht so wie ich will

## Tinitus

Hallo,

zunächst die Config:

Server 192.168.3.2

Client 192.168.3.33

auf dem Server:

nano /etc/distcc/hosts

```

192.168.3.33,foo,cpp,lzo bar,cpp,lzo baz,cpp,lzo

```

nano /etc/conf.d/distccd

```

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

DISTCCD_OPTS=""

# 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 debug"

# 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.3.0/24"

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

DISTCCD_OPTS="${DISTCCD_OPTS} --listen 192.168.3.2"

# set this for niceness

# Default is 15

DISTCCD_OPTS="${DISTCCD_OPTS} -N 15"

```

nano /etc/make.conf

```

MAKEOPTS="-j5"

FEATURES="distcc"

```

dann:

/etc/init.d/distccd restart

```

 * Stopping distccd ...                                                                                                                                                              [ ok ]

 * Starting distccd ...

distccd[1159] (dcc_discard_root) discarded root privileges, changed to uid=240 gid=2                                                                                                 [ ok ]

```

Client

nano /etc/distcc/hosts

```
localhost/1 192.168.3.2/5
```

nano /etc/conf.d/distccd

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

DISTCCD_OPTS=""

# 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.3.0/24"

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

# set this for niceness

# Default is 15

DISTCCD_OPTS="${DISTCCD_OPTS} -N 15"
```

Irgendwie kommt keine Verbindung zwischen den Teilnehmern zustande.

Bitte um Hilfe

G. R.

----------

## bbgermany

Hi,

wie sieht denn deine make.conf auf dem Client aus. Hast du da auch die FEATURES gesetzt? Was auch immer sehr nützlich ist, sind folgende Optionen:

```

DISTCCD_OPTS="${DISTCCD_OPTS} --log-level info --log-file /var/log/distcc.log

```

Dann die Datei mit touch anlegen und die Rechte anpassen. Distcc neu starten dann checken ob sich wer überhaupt verbindet  :Wink: 

MfG. Stefan

----------

## Tinitus

 *bbgermany wrote:*   

> Hi,
> 
> wie sieht denn deine make.conf auf dem Client aus. Hast du da auch die FEATURES gesetzt? Was auch immer sehr nützlich ist, sind folgende Optionen:
> 
> ```
> ...

 

Hallo,

danke für die Antwort, ich glaube ich hatte beim Server das localhost vergessen.

Aber was ist der Pump Mode?

G. R.

----------

## Tinitus

Hallo nochmal,

nachdem disstcc nun läuft ist die Compile Zeit schon ein wenig kleiner.

Übrigens das Pump bedeutet, daß auf dem Quellrechner die Paket für die Compileserver CPU schonender vorbereitet werden.

Optimal ist das Ergebnis aber noch nicht, da der Prozzi auf dem Server noch nicht voll ausgenutzt wird..

Also 1 CPU auf dem Source System auf dem Compile Server 4 CPU.

Wie müssen dann die Anzahl der möglichen Prozesse verteilt sein?

Habe jetzt auf dem Server j5 und auf dem Client j2. Ist das OK so?

G. R.

----------

## bbgermany

Hi,

trag mal auf dem Rechner wo du emerge ausführst MAKEOPTS="-j6" in deine make.conf ein. Somit werden sechs gcc Prozesse gestartet. Da du die Hostverteilung auf 1/5 gesetzt hast, werden fünf gcc Prozesse auf dem Remoterechner gestartet und einer auf dem lokalen.

MfG. Stefan

----------

## Tinitus

Hallo,

hier mal eine Zusammenfassung aller Fehler und Fallstricke mit distcc.

Habe hier 2 Server mit Core2Quad und einen mit Intel Celereon.

Die 2 Quads sind gleichberechtigt. Der Celeron soll nur unterstützt werden.

Wichtig ist auch die Reihenfolge der Angaben in der make.conf

```

MAKEOPTS="-j15"

und dann die Features:

PORTAGE_ELOG_CLASSES="warn error info"

FEATURES="parallel-fetch"

FEATURES="distcc"

ACCEPT_LICENSE="*"

PORTAGE_ELOG_SYSTEM="mail save"

#Zunächst der Empfänger und der zu benutzende SMTP Server

#PORTAGE_ELOG_MAILURI="root@localhost localhost"

PORTAGE_ELOG_MAILURI="root /usr/sbin/sendmail"

#Alternativ können Sie auch einen SMTP Server des Providers benutzen

#PORTAGE_ELOG_MAILURI="tobias.scherbaum@gentoo-ev.org benutzer:passwort@server

#Der Absender der Email

PORTAGE_ELOG_MAILFROM="portage@localhost"

#Der Betreff, Sie können die Variablen $PACKAGE und $HOST nutzen

PORTAGE_ELOG_MAILSUBJECT="Paket \${PACKAGE} auf Host \${HOST} mit Nachrichten installiert"

```

sowie

wichtig die aktuelle Version von distcc will nicht mit ipv6

```
sys-devel/distcc-3.1-r4  USE="gnome gtk -avahi -hardened -ipv6 (-selinux) -xinetd"
```

nano /etc/distcc/hosts

```

localhost       192.168.3.2     192.168.3.3     192.168.3.33/0

```

nano /etc/conf.d/distccd

Achtung das angegebene Logfile noch erstellen und Berechtigungen festlegen:

hier der Rechner mit der IP 

192.168.3.3

```

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

DISTCCD_OPTS=""

# 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 debug --log-file /var/log/distcc.log"

# 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.3.0/24"

DISTCCD_OPTS="${DISTCCD_OPTS} --listen 192.168.3.3"

# set this for niceness

# Default is 15

DISTCCD_OPTS="${DISTCCD_OPTS} -N 15"

```

dann klappt auch das Monitoring mit:

```

DISTCC_DIR="/var/tmp/portage/.distcc/" distccmon-gui

```

----------

