Next Previous Contents

5. News 新闻讨论群

5.1 我要如何设立一个线上新闻读取器呢 ?

只要 PPP 在运作中,就能读取线上的新闻群组 news。 有许多捶手可得的程序,简单介绍两个程序: rtin 和 trn.

想开始读取news,一般在建构时只需设定 NNTPSERVER (通常只需在 .profile 档里设定一次即可一劳永逸):

export NNTPSERVER=news.acme.xz

有些程序在要取得正确的张贴 来源-位址时,可能会要求:

export NNTP_INEWS_DOMAIN=acme.xz

5.2 我要如何设立一个离线新闻读取器呢 ?

想在离线 offline 时读取新闻群组 news 来 减少电话帐单费用以及拥有更大的弹性,我们需要设定一或多个的 news-spool。 这需要一些建构,当然也需使用到一定的磁盘空间,在初始化后,会产生或多或少的事,但 隅而才需要去留意一下。

我们在这儿说明两种解决方案:

5.3 我要如何设立 C News?

这个所描述的解决方案是以 C News 这个新闻群组伺服器为基础, 且使用 NNTP 协定的。 C News 原本是以其他建构为目标的,但它也蛮符合处理我们的情况的。 也许有人会使用较近期的 INN 新闻群组伺服器news server ,但它却在资源使用上多了一些。不管任何方法,请小心 不要 两个都安装! 他们 不会那么好在一起相处的。

news为使用者来迁入系统来做为新闻群组的维护是很重要的。 所有的建构文档都被放置在 /usr/lib/news里。 要处理这个,我们可以 su news; cd来迁入为 root 来处理它。

在建构里,最重要要的文档是:

Dirk Gently's Holistic Detective Agency

ME:all/all::
acme/acme.xz:all,!junk/all:FL:

mkdir /var/spool/news/out.going/acme

C News 需要每天一定程度的维护,但也可只用一次一劳永逸的方法 , 那就是以 news的身份,经由 crontab -e 命令 即可达成。建议设立的步骤如下,你可以照你的需要来调整:

# 维护进来和出去的批次资料
10,40 *  * * * /usr/lib/newsbin/input/newsrun

# 每天停止 C News 一次
30 0  * * * /usr/lib/newsbin/expire/doexpire

# 如有需要,监控并报告状况
00 2  * * sat /usr/lib/newsbin/maint/addmissing
40 3  * * * /usr/lib/newsbin/maint/newswatch
50 3  * * * /usr/lib/newsbin/maint/newsdaily
newsrun 会移入及移出文章 (每小时二次), doexpire 会在文章变较旧时删除它们 (每天从凌晨 00:30开始),最后面那三个命令会 做许多的监督与错误更正的工作。

我们还应该确认在启动机器时有些事情已经被清理乾净。以 root的身份,在 /etc/rc.d/rc.local档里加入:

su news -c /usr/lib/newsbin/maint/newsboot
News 可以由 NewsX程序来搜集。 会从 NNTP-server 挑选信息,这个程序可从下面位址找到:

ftp://sunsite.unc.edu/pub/Linux/system/news/transport/newsx-0.9.tar.gz Or:

ftp://ftp.sol.no/user/egilk/newsx-0.9.tar.gz

设立 NewsX 非常简单。 只需很平常的步骤即可安装它:

make
su
make install
exit

在这儿所大致描述的设立中,你只需以 addgroup 命令来建立你要读取的群组 即可。

要抓取文章时, news 使用者只要下达下列的命令 (假设是经由 PPP 或类似的):

newsrun
newsx acme news.acme.xz
newsrun

-d 选项会在萤幕上不停地印出。详情请参阅 NewsX 文件。

NewsX 也会注意到向外张贴新闻讨论文章。

在控制新闻文章变旧时将它们丢弃的工作时,就需要 explist 这个文档了。 在下面的例子中就解释了我们要做的一切事了:

# hold onto history lines 14 days, nobody gets >120 days
/expired/                       x       14      -
/bounds/                        x       0-1-120 -

# retain these for 2 months
comp.sources,comp.os.linux.all  x       60      -

# noise gets thrown away fast
junk,control                    x       2       -

# default:  14 days, no archive
all                             x       14      -

ALT: 在一个小型的 news-spool里,通常是不太需要对新闻群组的 控制的。在可能没有用处的状况下,交通流量 太大。 重点是新闻张贴的文章会被取消,而新闻群组会被自动地建立。为了确认 含有newgroup的控制信息不会把我们给混乱了,有个叫 newgroupperm 的文档会指定 我们所允许的事情:

comp.os.linux   tale@uunet.com  yv
all             any             nq
在这个例子里,所有在 comp.os.linux 下的合适讨论群组都会被建立 (y),而 news 使用者会被 通知 (v)。 其于的会被静静地 (q) 忽略掉 (n)。最后一行已经足够让你手动地建立所有的群组了。

ALT: 还有一个 NewsX 的替代程序 suck。

5.4 我要怎么设立 Leafnode?

还有一个不同的解决方案是,安装整合套件 leafnode。 它能处理所有个人 news spool 的所有工作,而且很容易建构。它可经由下列位址取得:

http://www.troll.no/freebies/leafnode.html

和 C News 一样,所有的 news 维护工作都应该是以 news使用者的身份来做:

leafnode的位置在 /usr/lib/leafnode。安装它,执行:

cd /usr/lib/leafnode
tar -xzvf leafnode-0.8.tgz
cd leafnode-0.8
make
su
make install

注意,如果你从一个套件中安装 leafnode 的话,/usr/local/sbin 应该改成 /usr/sbin。

像之前地,以 root身份来改变在 /etc/inetd.conf档 里控制 NNTP 的那行

nntp  stream  tcp  nowait  news  /usr/sbin/tcpd /usr/local/sbin/leafnode
使用下面命令来启动它:
killall -HUP inetd

执行 exit回到 news使用者。在 /usr/lib/leafnode/config 档里改变定义 NNTP 伺服器的那行。在我们的例子中:

server = news.acme.xz

news的身份下 crontab -e 命令后, Leafnode 就会 自已扛起照顾自己的工作。

# 每天结束 Leafnode一次
0 4 * * * /usr/local/sbin/texpire

News 的交换也是以 news使用者来完成,以下面的命令 (假设 PPP 已经架好且正执行中):

/usr/local/sbin/fetch

想阅读新闻讨论群组的使用者可以用 我要如何设立线上新闻阅读器呢?内的处方来做, 除非它们建构自己的本地端机器,例如:

export NNTPSERVER=localhost

相关资料应该都在那儿。首先,fetch 会传递可订阅的新闻群组的列表。 接著 Leafnode 会监控使用者所要求的哪些群组,并在下次它们被启动时将 它们加进来。

注:在 NNTP 需经授权才能使用时,Leafnode 好像就无法工作了。+.LP

ALT:有一个leafnode的替代品 nntpcache可由下面位址取得:

ftp://ftp.suburbia.net/pub/nntpcache/nntpcache.tgz ALT: 还有个替代方案是使用与 slrn-pull 套件 一起的新闻阅读器 slrn 。 这个新闻阅读器在被编译时 设定好 spool 功能。


Next Previous Contents