The client loop:

	* for each package it receives, it checks if file system permissions
	will permit that package to be installed.  if not, it rejects the
	package and the server will retransmit it at a later date.
	* it makes a backup package.
	* it actually installs the package.  if installation fails, it installs
	the backup package and reports errors to the server.

The server loop:
	* for each queued package matching the remote system name, check if
	the current user has read access to each component of the package.
	if not, continue with the next package.
	* transmit the package.
	* wait for the client to check file system permissions against the package.
	the client may decide not to try installing it.  if so, defer the package
	until later, and continue with the next package.
	* the client has decided to install the package.  record the error
	transcript the client returns (if any), and mark the package as done
	for that system.  (if it was the last outstanding system for the given
	package, send mail to the owner of the package saying it was done.)

spool directory management:
	* the spool directory and all files therein are owned by daemon.
	the queue maker and the file server run setuid daemon so they can
	make and remove queue entries respectively.
