contents
下一篇: 杂项文件 上一级: C-新闻 上一篇: 文章批处理

新闻过期

在 Bnews 中,过期处理过去是由一个名为 expire 的程序执行的,该程序接受新闻组列表作为参数,以及文章必须过期的期限规范。为了让不同的层级结构在不同的时间过期,您必须编写一个脚本,分别为每个层级结构调用 expire 程序。C-News 为此提供了一个更方便的解决方案:在一个名为 explist 的文件中,您可以指定新闻组和过期时间间隔。一个名为 doexpire 的命令通常每天从 cron 运行一次,并根据此列表处理所有组。

有时,您可能希望保留某些组中的文章,即使它们已经过期;例如,您可能想要保留发布到 comp.sources.unix 的程序。这称为归档。 explist 允许您标记要归档的新闻组。

explist 中的条目如下所示

           grouplist perm times archive
grouplist 是一个逗号分隔的新闻组列表,该条目适用于这些新闻组。层级结构可以通过给出组名称前缀来指定,可以选择附加 all。例如,对于适用于 comp.os 下所有组的条目,您可以输入 comp.os 或 comp.os.all 在 grouplist 中。

在过期新闻组中的新闻时,会按照给定的顺序检查 explist 中的所有条目来匹配新闻组名称。第一个匹配的条目适用。例如,要丢弃 comp 下的大部分内容,期限为四天,但 comp.os.linux.announce 除外,您希望将其保留一周,您只需为后者设置一个条目,指定七天的过期期限,然后在 comp 的条目之后设置,指定四天。

`perm` 字段详细说明了该条目适用于审核组、非审核组还是任何类型的新闻组。它可以取值 m、u 或 x,分别表示审核组、非审核组或任何类型。

第三个字段 `times` 通常只包含一个数字。这是文章在未在文章头部的 Expires: 字段中分配人为过期日期后将过期的天数。请注意,这是从文章*到达*您站点的日期算起的天数,而不是发布日期。

`times` 字段可能比这更复杂。它可以是最多三个数字的组合,数字之间用破折号分隔。第一个数字表示文章被视为过期候选对象之前必须经过的天数。使用零以外的值很少有用。第二个字段是上面提到的默认天数,超过这个天数文章将被过期。第三个字段是文章将被无条件过期的天数,无论它是否具有 Expires: 字段。如果仅给出中间数字,则其他两个数字采用默认值。这些默认值可以使用特殊的 `/bounds/` 条目指定,该条目在下面描述。

第四个字段 `archive` 表示新闻组是否要归档以及归档到哪里。如果不需要归档,则应使用破折号。否则,您可以使用完整路径名(指向目录)或 at 符号 (@)。at 符号表示默认归档目录,然后必须通过在命令行上使用 -a 标志将该目录提供给 doexpire。归档目录应由 news 用户拥有。当 doexpire 归档来自例如 comp.sources.unix 的文章时,它会将其存储在归档目录下的 comp/sources/unix 目录中,如果该目录不存在则创建它。但是,归档目录本身不会被创建。

在您的 explist 文件中有两个 doexpire 依赖的特殊条目。它们不是新闻组列表,而是具有关键字 `/bounds/` 和 `/expired/`。`/bounds/` 条目包含上面描述的 `times` 字段的三个值的默认值。

`/expired/` 字段确定 C-News 将在历史文件中保留行的时间长度。这是必要的,因为一旦相应的文章过期,C-News 不会从历史文件中删除行,而是会保留它,以防在此日期之后收到重复的文章。如果您仅从一个站点接收新闻,则可以将此值设置得较小。否则,在 UUCP 网络上,建议设置为几周,具体取决于您从这些站点接收文章的延迟时间。

下面复制了一个具有相当严格的过期时间间隔的示例 explist 文件

           # keep history lines for two weeks. Nobody gets more than three mont
           /expired/                       x       14      -
           /bounds/                        x       0-1-90  -

           # groups we want to keep longer than the rest
           comp.os.linux.announce          m       10      -
           comp.os.linux                   x       5       -
           alt.folklore.computers          u       10      -
           rec.humor.oracle                m       10      -
           soc.feminism                    m       10      -

           # Archive *.sources groups
           comp.sources,alt.sources        x       5       @

           # defaults for tech groups
           comp,sci                        x       7       -

           # enough for a long weekend
           misc,talk                       x       4       -

           # throw away junk quickly
           junk                            x       1       -

           # Archive *.sources groups
           comp.sources,alt.sources        x       5       @

           # defaults for tech groups
           comp,sci                        x       7       -

           # enough for a long weekend
           misc,talk                       x       4       -

           # throw away junk quickly
           junk                            x       1       -

           # control messages are of scant interest, too
           control                         x       1       -

           # catch-all entry for the rest of it
           all                             x       2       -
使用 C-News 中的过期功能,可能会出现许多潜在的问题。其中之一是您的新闻阅读器可能依赖于 active 文件的第三个字段,该字段包含在线文章的最低编号。当过期文章时,C-News 不会更新此字段。如果您需要(或想要)让此字段代表真实情况,您需要在每次运行 doexpire 后运行一个名为 updatemin 的程序。gif

其次,C-News 不会通过扫描新闻组的目录来过期,而只是检查历史文件以查看文章是否到期。gif 如果您的历史文件以某种方式失去同步,文章可能会永远保留在您的磁盘上,因为 C-News 实际上已经忘记了它们。gif 您可以使用 `/usr/lib/news/bin/maint` 中的 addmissing 脚本来修复此问题,该脚本会将丢失的文章添加到历史文件中,或者使用 mkhistory,它会从头开始重建整个文件。在调用它之前,请不要忘记切换到 news 用户,否则您最终会得到一个 C-News 无法读取的历史文件。


contents
下一篇: 杂项文件 上一级: C-新闻 上一篇: 文章批处理

安德鲁·安德森
1996 年 3 月 7 日星期四 23:22:06 EST