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 $