24.3. nn 配置

nn,由 Kim F. Storm 编写,声称是一个新闻阅读器,其最终目标不是阅读新闻。它的名字代表“No News(没有新闻)”,其座右铭是“No news is good news(没有消息就是好消息)。nn is better(nn 更好)。”

为了实现这个雄心勃勃的目标,nn 配备了大量维护工具,这些工具不仅允许线程生成,还允许广泛的数据库一致性检查、记账、收集使用统计数据和访问限制。还有一个名为 nnadmin 的管理程序,允许您以交互方式执行这些任务。它非常直观,因此我们不会赘述这些方面,而只处理索引文件的生成。

nn 线程数据库管理器称为 nnmaster。它通常作为守护进程运行,从rc文件在启动时启动。它的调用方式如下
/usr/local/lib/nn/nnmaster -l -r -C

这将为您的active文件中存在的所有新闻组启用线程。

等效地,您可以从 cron 定期调用 nnmaster,并为其提供要操作的组列表。此列表与sys文件中的订阅列表非常相似,只是它使用空格而不是逗号。代替伪组名 all,应使用空参数""来表示所有组。一个示例调用如下所示
# /usr/local/lib/nn/nnmaster !rec.games.go rec comp

请注意,顺序非常重要。最左侧匹配的组规范始终优先。因此,如果我们在 rec 之后放置 !rec.games.go,来自该组的所有文章仍然会被线程化。

nn 提供了几种方法来从其数据库中删除过期的文章。第一种方法是通过扫描新闻组目录并丢弃条目来更新数据库,这些条目对应的文章已超过其过期日期。这是通过使用–E选项调用 nnmaster 获得的默认操作。它相当快,除非您通过 NNTP 执行此操作。

第二种方法的行为与 mthreads 的默认过期运行完全相同;它仅删除那些引用文章编号低于active文件中的低水位标记的条目。可以使用–e选项启用它。

最后,第三种策略会丢弃整个数据库并重新收集所有文章。可以使用–E3选项启用它。

选项启用它。要过期的组列表由–F–k),然后在过期发生后使用原始选项重新启动它。因此,使用第一种方法对所有组运行过期的正确命令是
# nnmaster -kF ""
# nnmaster -lrC

还有许多其他标志可以微调 nn 的行为。如果您担心删除错误的文章或组合文章摘要,请阅读 nnmaster 手册页。

nnmaster 依赖于名为GROUPS的文件,该文件位于/var/lib/nn中。如果当 nnmaster 首次运行时它不存在,则会创建它。对于每个新闻组,它包含一行,该行以组的名称开头,可选地后跟时间戳和标志。您可以编辑这些标志以启用该组的某些行为,但您不得更改组出现的顺序。[1] 允许的标志及其效果也在 nnmaster 手册页中详细说明。

注释

[1]

它们的顺序必须与(二进制)MASTER文件中存在的所有新闻组启用线程。