Distcc Setup

From CDOT Wiki
Revision as of 15:05, 29 January 2009 by Arbraini (talk | contribs) (distcc Setup Steps)
Jump to: navigation, search

Task Name

Setting up distcc, distributed compilation for c/c++ compilers on Linux machines in CDOT.


Task Description

The goal is to eventually set up distcc on all Linux boxes in CDOT, so compiling on any of the computers is distributed on all others.

Resources

DistCC Cross-compiling Guide
Frequently asked questions
Linux Knowledge Base: DistCC
DistCC User Manual
Deaseon Moon's Blog
(add more)

Assigned machine

  • Ireland (142.204.133.26) - Frankie Law (irc Mini_Cheong), Daeseon Moon (irc daeseon)
  • Germany (142.204.133.102) - Andrew Braini(aBraini)
  • Australia (142.204.133.24) - Fred Wang (WFred)
  • China (142.204.133.36) - Aaron Chan (achan66)
  • Liberia (142.204.133.123) - Ladan Zahiroleslam (irc: l_zahir, LZahir)
  • Hongkong (142.204.133.30) - Jerry Pau (jPau)
  • India (142.204.133.28) - Ryan Wang (rmwang), Tiago Moreira (Kamots)

Status

  • India
    • network connection went down again around 2pm, could not complete distcc setup --- Tiago
    • Ran through tutorial on Australia and it seemed good. I managed to compile Apache --- Tiago
  • China
    • tried like 6 times from the beginning to follow the steps provided to do distcc, but for some reason it says /etc/distcc/hosts did not contain any
    • hosts - i tried editing the file itself and the file "/etc/sysconfig/iptable" manually, yet distcc still fails. I tried to do the setup both on india
    • and china, since I thought it needed both client/server interaction at the same time. I probably need an example setup shown to me face to face
    • Aaron
  • Germany
    • Connection keeps timing out at 9PM Jan 28, 2009.
      • Edit: Seems the system froze some time around 5PM, no one is in CDOT so will have to try early Thursday morning (Jan. 29 09)
    • Distcc + Distccd should be running but needs to be double checked. --- ABraini
  • Australia
    • distccd is running under distcc account
      • hosts file setting done
      • user "distcc" created for running distccd. --- Daeseon Moon

distcc Setup Steps

Installation

To install distcc using yum log on as root "su -" and type “yum search distcc”. Two packages available, install both to run as both client and server. At prompt type “yum install distcc-server” to install server package and “yum install distcc” for client package.

Configuration

Create a new user the daemon will run under without a home dir or workgroup

$ adduser distcc -N -M 

Start the distcc daemon

$ distccd --daemon --user distcc --allow 142.204.133.0/24

Argument --user is if distccd gets executed as root, change to user USER, --allow IPADDR[/MASK] instructs distccd to accept connections from the IP address. A CIDR mask length can be supplied optionally after a trailing slash, e.g. 192.168.0.0/24, in which case addresses that match in the most significant MASK bits will be allowed.

Now we need to setup the IPTABLES to allow connections to the distcc daemon. Before doing anything make a backup file of the original iptables file located in /etc/sysconfig/iptables.

$ cp /etc/sysconfig/iptables [backupfile name]
$ iptables -I INPUT 7 -i eth0 -p tcp -s 142.204.133.0/24 --dport 3632 -j ACCEPT
$ service iptables save 

Argument -I is insert and -i is and network interface device and -p is protocol -s is source ipaddress and subnet, –dport is destination port and -j is rule.

On the client machine the server names need to be added to the hosts listed in the file located at

/ect/distcc/hosts

To close/shut down the daemon (not do unless needed)

$ service distccd stop

Testing

Open two SSH connections into the client machine.

In Terminal 1 enter:

$ distccmon-text 1

In Terminal 2 enter:

$ wget http://apache.mirror.rafal.ca/httpd/httpd-2.2.11.tar.gz
$ tar xzvf httpd-2.2.11.tar.gz
$ cd httpd-2.2.11
$ CC=distcc ./configure
$ make -j9 CC=distcc >log 2> error 

(complete this collaboratively) TO-DO

  • hosts saved in hosts file
  • better formatting
  • creating new distccd user with no home-dir for daemon
  • things forgotten or left out.

How to compile with distcc