packages icon
Coda, the code distribution aide, is a system to keep source distributions
current across a set of machines.  The model is that the master source
tree is kept on a server host, and client hosts run coda to get themselves
in sync with the server.  This is different from rdist where the server
"pushes" files out to its clients.

Coda is not as flexible as rdist(1), but it requires less of the client
machines in that they do not have to be running Berkeley networking
programs or even Unix at all.  The client is simple, and designed to be
easy to port.  It currently runs on these systems:
	BSD, Ultrix, Sun, Masscomp
	VMS with Wollongong networking
	ATT3B2 with Wollongong networking (might be slightly broken)
	ATT6386 with Interlan networking
	Xenix with Excelan networking

The server current runs under the INET daemon on a BSD-like system, but
could be ported to other Unix systems, or even VMS, without too much
effort.

Because of the coda model, a client has to be told several things:  where
the server is, the user name on the host and where the sources are.  These
can be specified on the command line, or a simple config file can be used
to any set of the necessary parameters.

The coda server uses a simple but powerful control file to determine what
files are appropriate for each client.  The client directs the server to
read the file when it connects, so that multiple source trees can be
easily maintained on one server.  In the Codafile, hosts are grouped
into classes.  Directories are grouped into blocks, and patterns are
used to exclude hosts from receiving certain files.  For example:
	sources: _ALL {
	    #  Everyone gets all the programs, but no object files
	    src/programs
		except	_ALL	"*.o", foo, core, tags a.out;
		except	VMS	Makefile, "*.sh", "*.s", "llib-l*";
		except	UNIX	descrip.mms,  "*.opt", "*.com", "*.mar";
	}

	##  VMS library
	vmslib: VMS {
	    src/libvms
	}

	##  Unix library
	unixlib: UNIX {
	    src/libunix
		except	_ALL	"*.[oa]", "llib-l*.ln";
	}

Installation
------------
Pick a port number for the service to be running on; to use a port number
other than 1999, edit client.h and rebuild, or make sure to inform your
users about the change.  (The server doesn't care what port it is running
on.)  Edit server.h to set the log file location.  and install the server
binary in the appropriate directory.  (It's shown as ... in the paragraphs
below.)

You will have to add the server to any machines where you want to make
sources available.  Add a line like the following to /etc/services:
	coda    1999/tcp     # code distribution
If you're using Yellow Pages don't forget to yppush(8).

Next you will have to edit the inetd(8) configuration file.  On a
4.2BSD-based system, add this line to /etc/inetd.conf:
	coda stream tcp nowait .../codaserver codaserver
On a 4.3BSD-based system or SunOS4 add this line to /etc/inetd.conf:
	coda stream tcp nowait root .../codaserver codaserver
You will then have to send a HUP signal to the inet daemon.

On a SunOS3 system, add this line to /etc/servers:
	coda   tcp   .../codaserver
You will then have to kill and restart inetd.

The coda server requires the remote user to log in with a name and password
before sending any files.  It then does a setuid to that user.  In order to
do this, it should start out running as root.

Enjoy.

Coda was written by Rich $alz <rsalz@bbn.com>.

It has the following copyright:
    Copyright 1989 BBN Systems and Technologies Corporation.
    All Rights Reserved.
    This is free software, and may be distributed under the terms of the
    GNU Public License; see the file COPYING for more details.
    $Header: README,v 2.0 90/03/23 14:40:54 rsalz Exp $