.ls 1 .se "Initial Installation & Parameters" Installation of the notesfile system requires the following: .bx .ix A working familiarity with version 7 UNIX (and UUCP for intersystem transfers). .ix The notesfile distribution tape. .ix A signon for the notesfile owner. This signon should be in its own group. The notes package runs set-gid; mixing the notes group with other groups is not recommended. .ix An ``anonymous'' signon. This signon should be an unused user-id. The notesfile system prohibits this user-id from reading and writing notes. .ix The ability to write into the directories where the notesfile binaries and data base are to live. .ex Appendix A (``Notesfile Installation Checklist'') is a helpful guide for installing the notesfile system. The distribution is made from a VAX running 4.2 Bsd. In most cases there are only a few files that need to be modified: ``src/parms.h'', ``src/Makefile'', and ``src/newsgate.h'' (if you are interfacing to USENET). First: read in the distribution tape. The tape is a TAR format tape. This will read in several directories worth of data. The ``src'' directory contains all source code for the notesfile system and the internal help files. The ``doc'' directory contains an nroff source for the user manual and the macros that were used to generate it. The ``man'' directory contains the nroff sources for the notesfile manual pages. The ``Samples'' directory is a collection of various system files from our machine; they are included to provide examples in setting the matching files on your system. After the tape has been read in, select the appropriate parameters. .ss "Selecting Appropriate Constants" Before compiling the notesfile system, it must be configured to match your system. The location of spooling directories and command directories, the UNIX kernel, and policies on ``non-standard'' software may require changes in the default configuration. Cofiguring the notesfile system is accomplished through modifying two files, both in the ``src'' directory of the distribution. The ``parms.h'' file contains information on values for the default archival time, UNIX kernel type, and the behavior of the notesfile system such as whether to keep core images when the notesfile system detects an internal error. The ``Makefile'' file contains defintions of the spooling and command directories, the notesfile ``owner'', and the ``anonymous'' user. The distribution is configured for a UNIX 4.2 BSD system. The most frequently changed values, after the kernel definition, are the notesfile ``owner'' and the location of spooling and command directories. Appendix A (``Notesfile Installation Checklist'') details each of the options in ``parms.h'' and ``Makefile''. It describes the meaning of the option and the effects of changing the value. The recommended method for choosing an appropriate configuration is to sit at a terminal with the checklist and mark each option as it is selected or rejected. .ss "Compiling the Notesfile System" After all the appropriate parameters are set up, the next step is to generate the notesfile system. First, the requisite directories and files in /usr/bin (or wherever) should be manufactured. This procedure should be run exactly once and will probably have to be run by the superuser. To make these files type: .nf make base .fi The next phase should be run while signed in as the notesfile ``owner''. Type: .nf make boot .fi If all goes well, this should end with a message to the effect that the notesfile system has been installed (approximately 17 minutes on a VAX-11/780) If anything goes wrong, perusal of the terminal dialogue should point out the offending steps. The most likely cause of errors will be a missing directory. To replace the notesfile software any time after these two steps have been run, type: .nf make install .fi If at some time you are must change some of the internal constants of the notesfile package (such as string lengths and blocking factors), all the existing notesfiles on your system will be incompatible with the new instantiation of the program. The ``nfdump'' and ``nfload'' programs are useful for converting the data base from one format to another. The ``nfdump'' program should be compiled with the old configuration and the ``nfload'' program should be compiled with the new configuration. Documentation on these programs can be found in the appendices. .ss "User Subroutines" The notesfile package contains several routines available to users in general. The nfabort routine generates a core image, places it in a specified place, logs the fact in a notesfile, and terminates. The nfcomment routine allows users to log text in a notesfile. These routines are useful for debugging information, and communication between program developers and users. Users can load these routines by specifying `-lnfcom' on the `cc' or `ld' command lines. The normal installation procedure (``make install'') will compile the nfcomment routine and place it in the library directory. As distributed, the file is placed in the ``/usr/local/lib'' directory. To change this, modify the definition of ``LIBDIR'' in `Makefile'. .se "Installing the Man(1) Documentation" Install the man(1) pages for the notesfile with the following commands. They are best done as super-user. .nf .ne 2 cd man make install .fi The nroff sources for the documentation will be installed in the directory /usr/man in subdirectories man1, man3, and man8. .se "Interfacing to News(I)" The notesfile system interfaces to the news(I) system. The newsinput program parses articles from the news system and inserts them in the appropriate notesfiles. The newsoutput program moves notes from the notesfile system to the news system. Neither program will move text between the two systems if the notesfile is not enabled for networking (see section 3.1.5). Newsoutput will not retransmit articles inserted by newsinput. Sites sharing notesfiles can all run both newsinput and newsoutput. Appendix B contains instructions on how to interface a notesfile system to a news system. Configurations for isolated notesfiles sites, notesfile subnetworks, mapping between notesfile and newsgroup names, and a checklist for the gateway installation are included. Since the notes system stores the entire text of a single notesfile in a single file, a notesfile system uses less space than the same scale news system. The notesfile system is generally more space efficient than B news. .se "Housekeeping" Notesfiles has a number of utilities to manage it's data base. A number of shell scripts are included with the distribution which invoke the archival programs and trim logging files which otherwise grow without bounds. These shell scripts are included in the ``Samples'' subdirectory of the notesfile distribution and can be invoked automatically through cron(8). .ss "Cleaning up Disk Space" When a note or response is deleted, a hole is left in that notesfile. This makes for quick deletion but tends to leave some disk space wasted. The compress option on the director page is one way that this space is reclaimed. The nfarchive program (see section 3.7.2) also returns unused space. Have cron run the nfarchive program weekly to automate space reclamation. .ss "Automatic Removal of Notes" The nfarchive program archives notes untouched for more than a specified number of days. Archived notes and their responses are stored in an ``archive'' notesfile. ``Archive'' notesfiles are typically found in the directory /usr/spool/oldnotes; this may vary between installations. The archives can be accessed automatically using the ``N'' command from the index, note and response displays or by explicitly naming the notesfile (notes /usr/spool/oldnotes/mynotes). The notes are deleted after they have been archived. After the archival, a compression of the notesfile is performed to recover the space formerly occupied by the archived notes. Nfarchive assumes that all months have 30 days and all years have 12 months. The format of the nfarchive command line is: nfarchive [-d] [-m+ or -m-] [-#] [-w#] [-f file] topic The -d option specifies that no archiving is to take place; the notes eligible are to be deleted. The -m option specifies whether to check the director message status before archiving notes. Use ``-m+'' to archive notes which meet the age requirement and have the director message on. The ``-m-'' option archives notes of sufficient age with the director message turned off. If this option is omitted, notes are archived on the basis of age only. The -# option specifies the age of eligible notes. The increment is days. The default is determined by the value of ARCHTIME in `parms.h' and is distributed as fourteen days. Each notesfile can specify a (possibly) different expiration threshold. Normally the notesfile will specify `default' and nfarchive uses the time specified on its command line. Ages specified in a notesfile override the times given on the nfarchive command line. The -w# parameter specifies the working set size to use for notesfiles which do not specify a working set size. This determines a minimum number of notes to remain in a notesfile. If unspecified, the default working set size is 0. This value can be changed through the WORKSETSIZE variable in ``parms.h''. Working sets and expiration thresholds work together in the following manner. Nfarchive first determines a maximum number of notes to delete. This is calculated from the number of notes in the notesfile (total notes minus ``holes'' caused by deletions) and the working set size. The archival program proceeds through the notesfile deleting notes older than the expiration threshold until it runs out of notes or the maximum number of notes has been deleted. The -f option specifies a file containing a list of notesfiles to be archived. Multiple -f parameters are permitted and can be intermixed with `topic' parameters. Notesfile name pattern matching is performed on both `topic' parameters and the entries in a file specified by the -f option. Mapping between an active notesfile and its archive is listed in the file ``.utilities/net.aliases/Archive-into''. This file contains pairs of ABSOLUTE notesfile names (``/usr/spool/notes/mynotes'' instead of ``mynotes''). The first entry specifies the active notesfile; the second entry specifies the archive notesfile. Notesfiles not appearing in the archive mapping file will be placed in ``/usr/spool/oldnotes'' with the same final component as the active notesfile. Conflicts are possible. If unmapped, the notesfiles ``/usr/spool/notes/mynotes'' and ``/some/other/place/mynotes'' will be archived into the same archive ``/usr/spool/oldnotes/mynotes''. .ss "Cleaning Sequencer Files" A tool to remove sequencer entries for deleted users will be included in future releases of the notesfile package. This tool will traverse the sequencer directory removing files belonging to users whose signons no longer exist. The process can be made automatic by including an entry in the cron table. A second sequencer related utility will traverse the sequencer directory and remove entries for deleted notesfiles. A similar user program will be provided to permit users to remove their sequencer entries for notesfiles that they no longer peruse. .ss "Additions to System Boot" Since the notesfile system maintains several lock files to ensure mutual exclusion of each notesfile, a line similar to the following should be added to the /etc/rc file. rm -f /usr/spool/notes/.locks/* Make sure `/usr/spool/notes' matches the MSTDIR parameter in the Makefile. This line will remove any locks left if the system has crashed.