Annotation of researchv10no/cmd/netnews/README, revision 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.