Annotation of researchv10dc/cmd/netnews/README, revision 1.1.1.1

1.1       root        1: Notes for 2.10:
                      2: 
                      3: There are some incompatiblities between 2.9 and 2.10.  None of them
                      4: should cause a problem, but you should be aware of them.  Some conversion
                      5: is needed.
                      6: 
                      7: The file storage format has been changed.  Rather than storing news in
                      8: $SPOOL/net.games.rogue/123, an article now goes in $SPOOL/net/games/rogue/123.
                      9: This permits newsgroup names to be longer than 14 characters and still
                     10: have subgroups.  It also makes directories smaller, resulting in faster
                     11: performance.  The dot files are gone, rather than saving the next
                     12: article number in $SPOOL/.net.games.rogue as the length of the file,
                     13: it goes in the active file on the same line as net.games.rogue.
                     14: Thus, your active file contains lines like
                     15:        net.games.rogue 00123
                     16: where the newsgroup name and the max article number are separated by
                     17: a space.  The article numbers are ALWAYS 5 digits long and include
                     18: the leading digits to do this (this is so they can be updated in place
                     19: without growing the active file).  The old active file has been saved
                     20: as $LIB/oactive in case of emergency.
                     21: 
                     22: This conversion of directory tree formats has an extra benefit.  You'll
                     23: find that readnews is now considerably faster than version 2.9.  The
                     24: movement of the dot files accounts for much of this, since it is no
                     25: longer necessary to "stat" every dot file.  Additionally, a routine to
                     26: find a newsgroup in your .newsrc has been modified to keep the
                     27: file sorted in the same order as active, and a "last found" pointer
                     28: is used to reduce the find time algorithm from quadratic complexity
                     29: (on the number of newsgroups) to linear complexity.  This makes the
                     30: total number of newsgroups less of a factor in determining speed,
                     31: and also keeps everyone's .newsrc cleaned out.  It is important
                     32: that people not store extra junk in their .newsrc, because it will
                     33: be deleted when they run readnews.
                     34: 
                     35: Before you do the conversion, you are urged to check your LIB/active
                     36: file and clean out any duplicates and old newsgroups.
                     37: 
                     38: Overall recommended conversion order:
                     39:        compile everything in this directory
                     40:                make
                     41:        make the new spool directories:
                     42:                sh cvt.mkdirs.sh /usr/lib/news /usr/spool/news
                     43:        convert the history file (non-USG only):
                     44:                cc cvt.hist.c -ldbm
                     45:                a.out /usr/lib/news
                     46:        convert the active file:
                     47:                sh cvt.active.sh /usr/lib/news /usr/spool/news
                     48:        install the inews binary:
                     49:                su
                     50:                rm -f /usr/bin/inews /usr/bin/rnews
                     51:                cp inews /usr/bin/inews
                     52:                chown news /usr/bin/inews
                     53:                chgrp news /usr/bin/inews
                     54:                chmod 6755 /usr/bin/inews
                     55:                ln /usr/bin/inews /usr/bin/rnews
                     56:                ^D
                     57:        make links to spooled articles (this takes awhile):
                     58:                sh cvt.links.sh /usr/lib/news /usr/spool/news
                     59:                (see below)
                     60:        install the rest of the binaries:
                     61:                su
                     62:                make cp
                     63:                ^D
                     64:        test everything to make sure it all works
                     65:        clean out the old spool hierarchy:
                     66:                sh cvt.clean.sh /usr/spool/news
                     67: 
                     68: 
                     69: Several shell scripts and C programs are provided to help with this
                     70: conversion.  The above scripts will convert active and create the new
                     71: directory tree.  (Links will be made to the old articles, so news can
                     72: continue to be read while you are doing this.)  Note that once you
                     73: install the inews binary, any incoming news processed by the new system
                     74: will not appear in the old system.  The above order was chosen to
                     75: minimize the window during which incoming news could be lost.  Once the
                     76: history and active files are converted, a new inews (and rnews) must be
                     77: installed, so that any incoming news will be kept in the new format.
                     78: Since the cross-linking is the time consuming part of the conversion,
                     79: it is deferred until after the critical window.  The commands above to
                     80: install inews are equivalent to "make cp" except that they only install
                     81: inews, not readnews or checknews.  This is so that anyone reading news
                     82: while you are cross-linking will be able to get at their news.
                     83: Otherwise, a "make cp" can be used if nobody will be reading news.  You
                     84: can save the old binaries in case of catastrophe, but converting back
                     85: once 2.10 has been running for any length of time is not recommended.
                     86: 
                     87: There are rumors of the cvt.links.sh part not working on a USG system.
                     88: If you have problems, the idea is to make a shell script with lines like
                     89:        ln net.news.group/* net/news/group
                     90: for each newsgroup, then to run the shell script.  An alternative
                     91: for USG is (roughly)
                     92:        sort /usr/lib/news/active -u -o /usr/tmp/dirs.2.9
                     93:        cat /usr/tmp/dirs.2.9 | sed -e 's;\.;/;' > /usr/tmp/dirs.2.10
                     94:        cd $SPOOL ; past /usr/tmp/dirs.2.9 /usr/tmp/dirs.2.10 |\
                     95:                awk '{print "ln "$1"/* "$2}' | sh
                     96: On an older system (e.g. V7) your ln command won't handle multiple
                     97: source files - you can create a shell script to do the same thing.
                     98:        
                     99: There are also rumors of cvt.mkdirs.sh not being able to make the
                    100: directories, for reasons nobody can figure out.  Being unable to
                    101: reproduce this, all we can offer is that if it happens to you,
                    102: you should do it by hand (an appropriate shell script can be made
                    103: easily with the editor.)  Please let us know if you figure out what
                    104: is going on.  It is normal to get "File exists" errors from mkdir
                    105: for local newsgroup (no dots in the name) and from parent newsgroups
                    106: (e.g. net.rec, net.bugs, net.sport, net.news) which you can safely ignore.
                    107: 
                    108: When you are satisfied that everything is working OK, run
                    109:        cvt.clean.sh $SPOOL
                    110: and it will remove the old dot files and directories.
                    111: 
                    112: The method used to determine if an incoming article has already been
                    113: seen locally has been changed.  On V7 systems, profiling showed that
                    114: rnews spent about 1/2 of its time in fgets reading the history file.
                    115: It now uses the dbm(3) library to hash the message ID of each article.
                    116: To avoid incompatibilities between 2.9 and 2.10, if you have more than
                    117: one incoming news feed, run the provided cvt.hist program, which will
                    118: enter all the message ID's from your 2.9 format history file into
                    119: the hashed database.  (On USG systems, there is no dbm library, but
                    120: fgets is much faster, so the problem should not be so pronounced.
                    121: inews 2.10 on a USG system will continue to use the old history file
                    122: method to detect duplicates.)  The text history file is maintained as
                    123: it was in 2.9, for human use.
                    124:        cc cvt.hist.c -ldbm
                    125:        a.out $LIB
                    126: 
                    127: Other incompatibilities:
                    128: 
                    129: The headers now meet the USENET format standard and RFC822.  Headers
                    130: stored will look verbose, and contain much more information.  Headers
                    131: transmitted to other systems will work with old B news systems or new
                    132: ones.  Once all your neighbors convert to the new standard, you can
                    133: take out the #define OLD in defs.h; this will prevent Posted and
                    134: Article-I.D. from being generated, saving some transmission costs
                    135: and making the stored articles a bit smaller.  The format of dates
                    136: has been changed to conform to RFC822.  If this causes your "Mail"
                    137: command to stop working with the -M option, it's easy to fix Mail.
                    138: In head.c, the first function "ishead" calls another function
                    139: "isdate".  Simply comment out the 4 lines calling isdate.
                    140: 
                    141: The user interface is roughly compatible, but the users will notice
                    142: a few differences, and there are a few extensions.  There are two
                    143: major differences in the interface.  The first is that postnews
                    144: now prompts for a "Distribution".  This defaults to the same as
                    145: the newsgroup (and will be omitted in this case), but allows the
                    146: user to conveniently enter a Distribution header line.  It also
                    147: makes them think about where their message is going to be sent
                    148: out to.  Any newsgroup(s) can be typed here, but normally you
                    149: just type either nothing, or a class distribution (e.g. "net",
                    150: "btl", "nj", "world"), restricting the distribution to that
                    151: class of sites.
                    152: 
                    153: The other change is that, on systems without page mode in the tty
                    154: driver (e.g. on systems with PAGE defined in defs.h), after printing
                    155: long articles with the pager, it will print a ":" and wait for
                    156: the user to hit return before printing the next header.  This
                    157: is to give the user a chance to read the whole article before
                    158: the next header forces it off the top of the screen.
                    159: 
                    160: Some less immediate interface changes:  Headers are displayed
                    161: in a format which is more compact but more information is displayed
                    162: than before.  If you want to see the article ID or full path,
                    163: or the date or newsgroups, the "h" command will show them.
                    164: The "H" command can be used for a full, verbose header dump.
                    165: 
                    166: Control messages are slightly different.  In particular, 2.10 now
                    167: requires that a newsgroup be created with a "newgroup" control message
                    168: (e.g. inews -C) before it can be used.  If an incoming article is in
                    169: some newsgroup that is not in the local active file, the article will
                    170: be locally stored in newsgroup "junk" and not forwarded to other systems.
                    171: This will prevent the accidental creation of typographical errors
                    172: by systems running older versions of news.  Also, the rmgroup control
                    173: message has been made less dangerous.  The defs.h parameter MANUALLY
                    174: is now defaulted to on.  This means that when an rmgroup message comes
                    175: around, you will be sent mail asking you to remove the group, but the
                    176: group will not actually be removed.  This prevents someone from
                    177: accidently or deliberately removing an important newsgroup such as
                    178: net.general.  If you control several machines and want to have
                    179: rmgroup messages automatically remove the group without your
                    180: intervention, disable MANUALLY.
                    181: 
                    182: expire used to automatically archive news in /usr/spool/oldnews if
                    183: that directory existed.  Now it won't archive it unless you give
                    184: it the -a option.
                    185: 
                    186: There is now a shell script called localize.sh which makes whatever
                    187: local mods you need to news, so you won't have to keep making the
                    188: same fixes for every release.  See localize.sample for an example
                    189: version, but you will want to fix it up to reflect your local
                    190: preferences.  Normally the affected files are Makefile and defs.h,
                    191: plus copying (with no changes) postnews, but you can make whatever
                    192: changes you need here.
                    193: 
                    194: CAUTION: If any of your neighbors run 2.9 or older news, you must
                    195: be sure you have OLD defined in your Makefile.  (The distributed
                    196: localize.sample will define OLD.)  Otherwise, your site will generate
                    197: articles with no Posted: or Article-I.D.: headers, resulting in
                    198: the "Inbound news is garbled" diagnostic at the remote end.
                    199: 
                    200: When you ship your news software to a new site, you must now send
                    201: a copy of your active file, so that the appropriate newsgroup
                    202: directories and active file can be built.  This was not necessary
                    203: in 2.9 because unrecognized incoming newsgroups were automatically
                    204: created, but they are thrown away in 2.10.
                    205: 
                    206: After the conversion, you should create two new newsgroups: junk
                    207: and control.  The first is for messages that are in an invalid
                    208: newsgroup (so you can see what's getting thrown away).  The second
                    209: is for control messages.  Ordinary users probably won't want to
                    210: read either, but as administrator you might want to.  To create
                    211: them, mkdir $SPOOL/junk $SPOOL/control, and add
                    212:        junk 00000
                    213:        control 00000
                    214: to the end of $LIB/active.
                    215: 
                    216: Note the addition of some new programs to $LIB.  These include
                    217: recmail (a program which takes a mail message on stdin, figures
                    218: out who the To: and Cc: lines refer to, and invokes /bin/mail
                    219: with those arguments [not changed] and with the file on stdin;
                    220: recmail is used by the reply command) and caesar (a program used
                    221: to decode rotated jokes; it can also be used to create rotated jokes).
                    222: 
                    223: Version 2.10 has some experimental batching provisions in it.
                    224: See the batch and unbatch programs, and the F and U options in
                    225: the sys file, for more details.  There are some related UUCP
                    226: modifications in the uucp directory that can also help performance
                    227: considerably.  All this is very new, and while it appears to run
                    228: OK, caution is advised in installing batching software.  You must
                    229: also make sure your neighbor is prepared to receive batched news;
                    230: this is normally true if the neighbor is running at least 2.10.
                    231: 
                    232: If you have an old C compiler which does not support the (void)
                    233: cast (V7 or C book based), you can add -Dvoid=int to CFLAGS in
                    234: the makefile to get the code to compile.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.