nn, written by Kim-F. Storm, claims to be a newsreader whose ultimate goal is not to read news. It's name stands for ``No News'', and its motto is ``No news is good news. nn is better.''
To achieve this ambitious goal, nn comes along with a large assortment of maintenance tools that not only allow generation of threads, but also extensive checks on the consistency of these databases, accounting, gathering of usage statistics, and access restrictions. There is also an administration program called nnadmin, which allows you to perform these tasks interactively. It is very intuitive, hence we will not dwell on these aspects, and only deal with the generation of the index files.
The nn threads database manager is called nnmaster. It is usually run as a daemon, started from the rc.news or rc.inet2 script. It is invoked as
/usr/local/lib/nn/nnmaster -l -r -CThis enables threading for all newsgroups present in your active file.
Equivalently, you may invoke nnmaster periodically from cron, giving it a list of groups to act upon. This list is very similar to the subscription list in the sys file, except that it uses blanks instead of commas. Instead of the fake group name all, an empty argument of should be used to denote all groups. A sample invocation is
# /usr/local/lib/nn/nnmaster !rec.games.go rec compNote that the order is significant here: The leftmost group specification that matches always wins. Thus, if we had put !rec.games.go after rec, all articles from this group had been threaded nevertheless.
nn offers several methods to remove expired articles from its databases. The first is to update the database by scanning the news group directories and discarding the entries whose corresponding article is no longer available. This is the default operation obtained by invoking nnmaster with the -E option. It is reasonably fast unless you're doing this via NNTP.
Method-2 behaves exactly like a default expiry run of mthreads, in that it only removes those entries that refer to articles whose number is below the low water mark in the active file. It may be enabled using the -e option.
Finally, a third strategy is to discard the entire database and recollect all articles. This may be done by giving -E3 to nnmaster.
The list of groups to be expired is given by the -F option in the same fashion as above. However, if you have nnmaster running as daemon, you must kill it (using -k) before expiry can take place, and to re-start it with the original options afterwards. Thus the proper command to run expire on all groups using method-1 is:
# nnmaster -kF "" # nnmaster -lrCThere are many more flags that may be used to fine-tune the behavior of nn. If you are concerned about removing bad articles or digestifying article digests, read the nnmaster manual page.
nnmaster relies on a file named GROUPS, which is located in /usr/local/lib/nn. If it does not exist initially, it is created. For each newsgroup, it contains a line that begins with the group's name, optionally followed by a time stamp, and flags. You may edit these flags to enable certain behavior for the group in question, but you may not change the order in which the groups appear. The flags allowed and their effects are detailed in the nnmaster manual page, too.