Return to BSD News archive
Xref: sserve comp.unix.admin:8425 comp.unix.aix:17441 comp.unix.bsd:8751 comp.unix.solaris:714 comp.unix.ultrix:15443 comp.sys.hp:19587 comp.sys.next.sysadmin:6895 comp.sys.sun.admin:7661 Path: sserve!manuel.anu.edu.au!munnari.oz.au!news.hawaii.edu!ames!elroy.jpl.nasa.gov!usc!usc!not-for-mail From: mcooper@usc.edu (Michael A. Cooper) Newsgroups: comp.unix.admin,comp.unix.aix,comp.unix.bsd,comp.unix.solaris,comp.unix.ultrix,comp.sys.hp,comp.sys.next.sysadmin,comp.sys.sun.admin Subject: ANNOUNCEMENT: Rdist 6.0.0 now available Date: 5 Dec 1992 15:18:13 -0800 Organization: USC Computing Services, Los Angeles Lines: 688 Distribution: world Message-ID: <1frdblINN39r@usc.edu> NNTP-Posting-Host: usc.edu Rdist version 6.0.0 is now available for anonymous ftp from usc.edu as pub/rdist/rdist.tar.Z. It will be posted to one of the source newsgroups soon. The list of new features is detailed in the ChangeLog file which is at the end of this announcement. Rdist Version 6.0 11/29/92 Michael Cooper University of Southern California University Computing Services mcooper@usc.edu GENERAL INFORMATION This is version 6.0 of Rdist from USC. It is based on rdist from 4.3BSD (classic). It includes all fixes for all bugs known to the CSRG Berkeley folks. It has been running at USC for some time ow on a wide variety of platforms. This version of rdist is not directly compatible with rdist distributed with 4.3BSD and subsequent vendor releases, but does indirectly provide full backward compatibility. See COMPATIBILITY below for details. The current version of rdist is available via anonymous ftp on usc.edu under /pub/rdist. The current version is always retrievable as file "/pub/rdist/rdist.tar.Z". CHANGES/FEATURES See the ChangeLog file for details. The end of the file contains the major new features compared to rdist classic. A paper titled "Overhauling Rdist for the '90s" from USENIX LISA VI is available for anonymous ftp on usc.edu as "/pub/rdist/overhaul.ps.Z". PLATFORMS This version of rdist has been tested on the following: MACHINE TYPE OPERATING SYSTEM --------------- ---------------------------------- Alliant 2800 Concentrix 2.2 Alliant FX/80 Concentrix 5.X DEC MIPS Ultrix 4.2 HP 9000/300 Mt Xinu MORE/bsd (4.3BSD)* HP 9000/300 HP/UX 7.05 (HP cc) HP 9000/400 HP/UX 7.05 (HP cc) HP 9000/700 HP/UX 8.07 (HP cc, GCC 2.3.1) IBM RS6000 AIX 3.2 NeXT Mach 2.2, 3.0 Sun-3 SunOS 4.0.3, 4.1.1 Sun-386i SunOS 4.0.1 Sun-4 SunOS 4.0.3, 4.1.1, 4.1.2, 4.1.3 Multiflow 4.3 BSD TRACE/UNIX Version 5.0.4 MIPS RISC/os 4.51, 5.0 * Not recently tested. Known to work at some point in the past. It should work on just about any BSD based Unix with little or no modification. It will probably work on modern System V based OS's such as SVR4 with some work. COMPATIBILITY This version of rdist differs greatly from older versions (as distributed with 4.3BSD) in that the client and the server portions are seperated into two distinct programs, rdist and rdistd, respectively. The protocol used to communicate between the client and server has also been extensively modified. These two items make providing "builtin" compatibility very difficult. However, backwards compatibility is possible, provided you have a binary or source copy of the old rdist. The way the old rdist started a server rdist is to run "rdist -Server". If the new rdist is run with the "-Server" option, then it will exec a copy of the old rdist (usually /usr/old/rdist or /usr/ucb/oldrdist). In this way, you get compatibility with hosts running the old rdist attempting to rdist to a machine running new rdist. If your host running new rdist wants to rdist to a host running the old rdist, then it must run the old rdist program (/usr/old/rdist or /usr/ucb/oldrdist). The definetion _PATH_OLDRDIST in config.h controls the location of the old rdist. If this is not defined, or the defined program does not exist at runtime, then rdist will print an error when run with the "-Server" option. INSTALLATION 1) Edit "Makefile" and follow the comments on what parameters may need to be set and/or changed. 2) Edit "config.h" and follow the comments on what parameters may need to be set and/or changed. 3) Run "make" to compile everything. 4) Run "make install" to install the binaries and "make install.man" to install the manual pages. BUG REPORTS Bug reports should be sent to "rdist-bugs@usc.edu". All bug reports should include: 1) The version of the rdist client and server you are running (use the -V option to rdist and rdistd) 2) The platform (machine + OS name + OS version) 3) A full description of the problem, including sample distfiles. 4) If you have a patch to fix the problem, a context diff (diff -c) of the original files vs. the fixed files RDIST MAIL LISTS There are two rdist mailling lists described below. PLEASE DO NOT SEND GENERAL QUESTIONS TO ANY OF THESE LISTS. LIST NAME SUBSCRIPTION ADDRESS DESCRIPTION --------------- ----------------------- ------------------------------------ rdist-announce rdist-announce-request Announcements about new versions of Rdist. rdist-dev rdist-dev-request Rdist developers mailling list. Discussion about rdist features, suggestions, bugs, etc. Will also receive all rdist-announce mail. To subscribe or unsubscribe, send email to the appropriate SUBSCRIPTION ADDRESS from above "@usc.edu". i.e. "rdist-dev-request@usc.edu" for the "rdist-dev" list. Archives are available for anonymous ftp from usc.edu as /pub/rdist/<LIST>.archive NOTES IBM AIX I use a modified definition for "bsdcc" in /etc/xlc.cfg for compiling rdist under AIX 3.X: * standard c compiler aliased as bsdcc bsdcc: use = DEFLT crt = /lib/crt0.o mcrt = /lib/mcrt0.o gcrt = /lib/gcrt0.o libraries = -lbsd, -lc proflibs = -L/lib/profiled,-L/usr/lib/profiled options = -H512,-T512,-qlanglvl=extended,-qnoro,-D_BSD,-Dunix=1, -D_NONSTD_TYPES, -D_NO_PROTO, -D_BSD_INCLUDES, -tp, -B/lib/ HP/UX All of this information on HP/UX is third-hand. I don't have access to any HP/UX machines to test rdist on. Unlike HPUX version 7, version 8 does not come standard with yacc which is now part of the C/ANSI C Development Bundle. If that bundle is on the system, then rdist compiles fine with the changes to the Makefile to include regex.o and strcasecmp.o. If you don't have yacc and instead use the GNU bison in the yacc mode (-y option) it compiles fine but needs to have the PW library included (-lPW) in order to find an alloca.o when linking. The regex that is part of the HPUX C library is not compatible with the BSD style regex that rdist uses. Someone who leaves regex.o out of the MISSINGOBJS line in the Makefile because they noticed a regex(3) in the HPUX manual set is going to have a problem. OLD rcmd() LIBRARY BUG Very Old 4.2BSD-based Unix systems may have a bug in their rcmd() library function. The bug allowed a user process to run out of file descriptors if too many connection attempts failed. The problem is that the socket would never be closed if the connect() failed. This could eventually lead to running out of file descriptors if enough connections failed. Most current Unix's like SunOS 4.0.3 and later have this fixed. Here is a diff to (I think) the SunOS 3.5 rcmd() to fix the problem: *************** *** 51,56 **** --- 65,71 ---- timo *= 2; goto retry; } + (void) close(s); perror(hp->h_name); return (-1); } RCS INFO This is rcs info for this file: $Id: README,v 6.8 1992/11/29 22:00:38 mcooper Exp mcooper $ Wed Dec 2 14:46:18 1992 Michael A. Cooper (mcooper@acamar.usc.edu) * Update rdistcfilter: More cleanup and minor speedups from Tom Christiansen. * Update rdistcfilter to remove truncation of hosts list when lots of hosts are present. (tchrist) Sun Nov 29 13:35:42 1992 Michael A. Cooper (mcooper@acamar.usc.edu) * Version 6.0.0 * Add more HPUX comments to README and Makefile. (Allan Weber) * Define NBIO_TYPE to be NBIO_FCNTL for HPUX. (Allan Weber) Tue Nov 17 10:04:45 1992 Michael A. Cooper (mcooper@acamar.usc.edu) * Version 6.0beta.10 * Update list of PLATFORMS in README. Thu Nov 12 10:52:54 1992 Michael A. Cooper (mcooper@acamar.usc.edu) * Use E_SFILE in place of hardcoded "FILE". * Fix ": is not an identifier" problem with special commands under AIX and NeXT by disabling SETARGS. Wed Nov 11 10:42:27 1992 Michael A. Cooper (mcooper@acamar.usc.edu) * When NOCHKOWNER and NOCHKGROUP are enabled, don't check directory ownership. * Make getmountent() work again for AIX. Tue Nov 10 15:09:59 1992 Michael A. Cooper (mcooper@acamar.usc.edu) * Version 6.0beta.9 Mon Nov 9 13:19:51 1992 Michael A. Cooper (mcooper@acamar.usc.edu) * Use new *_TYPE defines for defining the types of interfaces available for getting filesystem info, non-blocking I/O, wait() function(), and directory routines. * Modify rdistcfilter to wrap list of hosts instead of truncating. * Clarify rdistd being in $PATH in rdist.1. (Mike Urban) * Remove SIGPIPE as SIGCHLD equivilent. * Add -ochksym option. When enabled, this option will cause rdist to act like the original version when dealing with rdisting directories to symlinks. The original rdist simple ignored the condition where the target on a remote host was a symlink when the target on the master was a directory. The new rdist will automatically make the target on the remote host be the same as the master. This option disables this behavior. * Fix bug with notify failing with certain message level flags. * Only send notify mail when things actually change. * Add support for Sequent Dynix 3.1.2. (Ken Dahl) * Add BSDI support. (Ken Dahl & Jonathan Cohn) * Fix argument order to error() in client.c. Thu Oct 29 09:59:14 1992 Michael A. Cooper (mcooper@acamar.usc.edu) * Version 6.0beta.8. Tue Oct 27 10:19:11 1992 Michael A. Cooper (mcooper@acamar.usc.edu) * Add support for Multiflow Trace 4.3BSD. (wls) * Make wait() configurable and add support for wait3(). * Include strcasecmp.c in distribution. * Cleanup child handling based on code/suggestions from Neal Becker, Rich Salz, and Chris Torek. * Don't print hostname in "Response time out" message since error() handles that. * Add -onochkowner,nochkgroup options. When enabled, no check of a file's user (nochkowner) or group (nochkgroup) ownership is performed. * Prepend DO_ to dist option macros. * Implement new -o<distopt> to replace all the -X options. * Actually make error messages work by default. * Change fchog() to always print unknown users. * Change fchog() to always print name of target file for messages. Fri Oct 16 13:01:41 1992 Michael A. Cooper (mcooper@acamar.usc.edu) * Version 6.0beta.7. * Update rdist.1 to more fully describe new message handling system. * Lower syslog logging levels to be mostly LOG_INFO. * Don't explicitly call reap(). Let SIGCHLD call reap(). (Neal Becker) * Only call removechild() from reap(). (Neal Becker) * Fix trivial child list-handling mistake. (Neal Becker) * Call cleanup() to remove /tmp/rdist* files. (Neal Becker) * Remove extraneous debugging info in getnlstr(). * Don't close distfile file descriptor if it's stdin. (James Tanis) * Always strip '+' from hostnames to be consistant. (James Tanis) Thu Oct 15 10:59:14 1992 Michael A. Cooper (mcooper@acamar.usc.edu) * Fix problem with buffer being overwritten in "chown from ..." message. * Modified rdistcfilter to lexically sort messages. * Fix argument type mismatch in getmountent() which cause core dump when filesystem free space checking was enabled. Wed Oct 14 11:17:45 1992 Michael A. Cooper (mcooper@acamar.usc.edu) * Fix argument mismatch error in call to messae() which could result in a core dump. * Fix bug with directories almost always being reported with -y as "remote copy is newer". * Change message output format (again) to make both normal messages and error messages consistant. * Only check file mtime and size if file type is "regular". * Fix mismatched parameters in call to debugmsg(). (Neal Becker) Tue Oct 13 15:07:56 1992 Michael A. Cooper (mcooper@acamar.usc.edu) * Version 6.0beta.6. * Fix possible stack overflow problem in expand code. Mon Oct 12 19:41:24 1992 Michael A. Cooper (mcooper@acamar.usc.edu) * Fix long term problem with hardlink installations. (<luik@isa.de> Andreas Luik) * Slight performance improvement in reading directories. * Add better checking/setting of directory ownership. * Add another check to see if remote owner.group match local owner.group. Fri Oct 9 13:01:23 1992 Michael A. Cooper (mcooper@acamar.usc.edu) * All OS dependent filesystem routines moved from filesys.c to new getmount.c. * Add support for BSD386. (Ken Dahl) * Move OS name definetions from config.h to new config-os.h. * Change configdata.h to config-data.h and create config-os.h. * Fix chkparent() to actually make directories when needed. Wed Oct 7 11:20:23 1992 Michael A. Cooper (mcooper@acamar.usc.edu) * Use standard system and predefined values for open() and pipe(). * Children now exit with status "nerrs". * Only log debugmsg() about exit status of child for legit children. * Massive overhual of internal message handling system. All messages now pass through the message() function. There are different message facilities are configured to handle the different message types. The format of messages has also been made more consistent. Thu Sep 24 11:11:19 1992 Michael A. Cooper (mcooper@acamar.usc.edu) * Use new x*alloc() functions that do error checking. * Major changes to use select() to read input from children. * Major code cleanup of children related functions. * Add Steve Romig's "compact-rdist-output" perl filter to the distribution as "rdistcfilter.pl". Also renamed rdistfilter.pl to be rdistvfilter.pl. Thu Sep 17 13:13:35 1992 Michael A. Cooper (mcooper@acamar.usc.edu) * Remove extraneous fclose(lfp) in doarrow(). (Bill Sebok) * Fix botch with setfiletime() which set bogus file times. (Bill Sebok) * Make :: work for special and cmdspecial. (Bill Sebok) Wed Sep 16 16:49:13 1992 Michael A. Cooper (mcooper@acamar.usc.edu) * Fix problem with tempfile (/tmp/rdistXXXXXX) being removed when it shouldn't. Tue Sep 15 10:04:32 1992 Michael A. Cooper (mcooper@acamar.usc.edu) * Version 6.0beta.5 * Fix core dump problem with list subtraction/addition. (Neal Becker) * Fix problem with HPUX being defined after first #if check in defs.h. Mon Sep 14 12:52:32 1992 Michael A. Cooper (mcooper@acamar.usc.edu) * Version 6.0beta.4 * Add note to README about AIX bsdcc stanza. * Clarify -w description in rdist.1. * Include target name in error msg "no files to be updated". Fri Sep 11 14:04:45 1992 Michael A. Cooper (mcooper@acamar.usc.edu) * Fixed a bug in rdistd which caused set[ug]id bits to not be cleared when they were suppose to be, even when it said it was being cleared. The mode of a file/directory would also not be set in certain cases. This bug looks to date back to the original version. * Add support for macro list addition and subtraction (Rich Salz). * Make having statfs() configurable with HAVE_STATFS (Rich Salz). * Define HPUX if __hpux is defined and change things to use HPUX. * Make the type of directory struct used configurable (Rich Salz). Tue Sep 1 14:46:00 1992 Michael A. Cooper (mcooper@acamar.usc.edu) * Fix another case of setgid being stripped when the owner's primary (passwd) gid == file group owner. (Ken Dahl) * Change "Don't know how to rdist to ..." to be "Label ... is not defined in the distfile." for clarity. Mon Aug 31 15:08:26 1992 Michael A. Cooper (mcooper@acamar.usc.edu) * Change "register char i" to "register int i" in docmd(). * Fixed another bug with "Don't know how to rdist to ...". This time, a much simplier approach was taken to remove the "unused" stuff from the last fix. * Save argc and argv from main() into realargc and realargv before setargs() overwrites. Fri Aug 28 16:36:34 1992 Michael A. Cooper (mcooper@acamar.usc.edu) * The primary group of the owner of a file was not being checked in fchog(), which resulted in the setgid bit being cleared. Thu Aug 27 13:33:35 1992 Michael A. Cooper (mcooper@acamar.usc.edu) * Fixed typo in config.h that disabled SETARGS. * Make _PATH_OLDRDIST compatibility actually work. Also do logging via logmsg() and fatal() for compat stuff. * Fatal() error msgs are now logged to logmsg(LOG_ERR, ...) for rdistd * Strip leading path of progname. Mon Aug 10 15:33:22 1992 Michael A. Cooper (mcooper@acamar.usc.edu) * Update wording on old rcmd() bug in README. (Rich) Thu Aug 6 09:59:58 1992 Michael A. Cooper (mcooper@acamar.usc.edu) * Fix ISEXEC define in isexec.c. (Neal Becker) Changes up to Release 6.0beta.3: Wed Aug 5 14:10:22 1992 Michael A. Cooper (mcooper@acamar.usc.edu) * Fix problem with ETXTBSY code not working. (Neal Becker) * Add support for HP 9000/[78]00 executable format. (Neal Becker) * Defining SETARGS breaks "special" command under HP/UX. (Neal Becker) * Change #ifdef's of "hpux" to be "__hpux" for compability with both HP/UX 7.* and 8.* OS versions. (Neal Becker & Allan Weber) * Get rid of #define's in defs.h by compiling yacc with -d. Also change tokens like SM (';') to be real chars in the grammer instead of tokens for clarity. (Rich) * Change ISDIR -> S_ISDIR, ISREG -> S_ISREG, ISLNK -> S_ISLNK to be POSIX compliant. (Rich) * Document in rdist.1 how rdist runs rdistd. * Replace ".in +5" with ".RS/.RE" in rdist.1. (Rich) * Remove preprocessor support. Use "m4 distfile | rdist -f -" for same effect without the ugly code. (Rich) * Clarify -N and -O options in rdist.1 (Rich). * Document that we can't use strchr() in place of any() because most systems strchr() can't handle some of the input we pass. Changes up to Release 6.0beta.2: Tue Aug 4 15:20:46 1992 Michael A. Cooper (mcooper@acamar.usc.edu) * Rename patchlevel.h to version.h and move VERSION define from config.h to version.h. Tue Aug 4 15:03:53 1992 Michael A. Cooper (mcooper@acamar.usc.edu) * Cleanup comments about configuration and such in Makefile, config.h, pathnames.h, and README. Fri Jul 31 14:59:45 1992 Michael A. Cooper (mcooper@acamar.usc.edu) * Fix to fix "Don't know how to make ..." fix. Thu Jul 30 14:34:46 1992 Michael A. Cooper (mcooper at acamar.usc.edu) * Add -V options to rdist and rdistd to print version information. * Portability changes and support for HP/UX from Allan Weber (weber@sipi.usc.edu). Changes up to 6.0alpha3: Fri Jul 24 11:27:08 1992 Michael A. Cooper (mcooper@acamar.usc.edu) * Fix bug with ^C of "rdist" resulting in a core dump. An invalid jmpbuf was being used in a call to longjmp(). * Fix problem with modify time not being set on NeXT 2.1 machines. Also now set the access time of newly installed/updated file to be the current time instead of the atime from the source machine. Mon Jul 20 12:46:20 1992 Michael A. Cooper (mcooper@acamar.usc.edu) * Fix misspelling of ${MISSINGOBJS} in Makefile. * Fix problem with "Don't know how to rdist to ..." error being printed when it shouldn't be. Thu Jul 16 10:58:09 1992 Michael A. Cooper (mcooper@acamar.usc.edu) * Fix problem with hosts marked as + in the distfile having multiple child update the host simaltaneously, which causes race conditions when updating certain targets. Changes up to 6.0alpha2: Tue Jul 14 12:40:24 1992 Michael A. Cooper (mcooper@acamar.usc.edu) * Cleanup and fix rdistfilter. Thu Jul 9 16:15:00 1992 Michael A. Cooper (mcooper@acamar.usc.edu) * Back out reverse polling code to be clean and remove one source of possible bugs. Tue Jul 7 12:37:40 1992 Michael A. Cooper (mcooper@acamar.usc.edu) * Port back to AIX/RS6000 (3.2), Alliant Concentrix 5.5, Sun-386i (SunOS 4.0.1), DEC MIPS (Ultrix 4.2), NeXT (Mach 2.1). Mainly this was changes to config.h and creation of isexec.c to make porting to new platforms more straigtforward. Changes up through 6.0alpha - The client and the server are now split into two seperate programs (rdist and rdistd). The client (rdist) looks like older versions of rdist. Instead of running "/usr/ucb/rdist" on a remote machine, it now runs "rdistd". Notice that it doesn't run "/usr/ucb/rdistd" or use any explicit pathname. This is to improve portability to various different platforms where "/usr/ucb" may not exist. What this means is that the server must be somewhere in the user's default $PATH if the client is to successfully run rdistd. This also means that the server no longer needs to be setuid root. Only the client still needs setuid root (because it uses priv'ed ports). This should cut down a bit on potential security holes. Because the server (rdistd) resides in normal user "bin" directories, it requires the -S option in order to run. This is to avoid users accidentially typing "rdistd" instead of "rdist". - If the client (rdist) is started with the "-Server" option (which is the old rdist method of starting rdist in server mode), it will attempt to run the old version of rdist, if it was compiled with the name of that program. This is for backwards compatibility and should allow this version of rdist to co-exist with older versions. - Add support for running a pre-processor (m4 by default) over the distfile before processing. - If a connection to a host fails, avoid trying to recontact host again. - Use getopt() for command line option parsing. I hate getopt(), but everybody wants to use it. Sigh. - A slew of new options. See the man page for details. - Add buffered remote read code from Chris Torek along with some other code cleanups. - Check free space and files on a filesystem before installing. This code will (optionally) check the amount of free space and files (inodes) on a filesystem before installing. If the free space and/or files is less then specified by the initiator, then the target will not be installed and an error returned. This is useful for preventing rdist from filling up a remote filesystem. - Concurrent rdist processes. Update multiple hosts concurrently by fork'ing children with each child updating one host. The number of children is limited to a given number (usually 4), but is controllable with a command line option (-M). - Add "setargs" code to set process arguments to indicate what host we are talking to. A protocol change was required for this. - If a remote target resides on a NFS or read-only filesystem, then don't try to update target on that host. This elimates having to have millions of seperate lists and exceptions for hosts with certain parts NFS mounted or read-only mounted and hosts with everything mounted read-write. - Set timeout alarms to avoid hanging when something happens to a server during a session. Remove servers can sometimes get into a state either during startup or during a session where they will never send a response back to the local rdist master process. - Add ability to rdist a symlink to a directory and vice-versa. Previously, this would fail. - Add checking and setting of file modes. If a file's mode is not what it should be, the entire file is updated in case there was any tampering. If the target is a directory, then just the mode of the directory is updated. - Major code cleanup and restructuring. Major portions of the code has been re-written and/or restructured. - Add config.h file for configuration related items. - Fixed a security hole with setreuid(). - Add better error messages. We now distinguish between LOCAL and REMOTE errors. RCS INFO $Id: ChangeLog,v 1.11 1992/11/29 22:16:28 mcooper Exp mcooper $ -- Michael A. Cooper, University Computing Services, U of Southern California INTERNET: mcooper@usc.edu PHONE: (213) 740-2957 UUCP: ...!uunet!usc!mcooper BITNET: mcooper@ramoth