有时,您可能希望保留某些组中的文章,即使它们已经过期;例如,您可能想要保留发布到 comp.sources.unix 的程序。这称为归档。 explist 允许您标记要归档的新闻组。
explist 中的条目如下所示
grouplist perm times archivegrouplist 是一个逗号分隔的新闻组列表,该条目适用于这些新闻组。层级结构可以通过给出组名称前缀来指定,可以选择附加 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 的程序。
其次,C-News 不会通过扫描新闻组的目录来过期,而只是检查历史文件以查看文章是否到期。 如果您的历史文件以某种方式失去同步,文章可能会永远保留在您的磁盘上,因为 C-News 实际上已经忘记了它们。
您可以使用 `/usr/lib/news/bin/maint` 中的 addmissing 脚本来修复此问题,该脚本会将丢失的文章添加到历史文件中,或者使用 mkhistory,它会从头开始重建整个文件。在调用它之前,请不要忘记切换到 news 用户,否则您最终会得到一个 C-News 无法读取的历史文件。