.Ch "Directory Layout and PATH in C News"
.Ix directories
.Ix PATH
.Ix /usr/lib/news
.Ix /usr/lib/newsbin
.Ix /usr/spool/news
.SH
Intro
.LP
C News
is constrained by historical compatibility with
B News,
but we also want to provide more flexibility for local news administrators.
Accordingly, our directory organization is a little different from that
of B News.
We also make a lot of use of subordinate programs rather than lumping
everything into a few giant lumps,
and this means we need a notion of
search paths.
.LP
See also ``Configuration Mechanisms in C News'',
which talks about how
to alter the defaults for these paths and such.
.SH
Directory organization
.LP
We retain the notion that a single directory
(usually /usr/spool/news)
is the top of the news-article database.
We also use subdirectories of this directory,
using names including `.' to
ensure that they cannot collide with newsgroup names,
to hold incoming batches and outgoing batch control files.
One can debate whether this is the right place for these activities,
but in practice
/usr/spool/news
tends to be where people want to put
potentially-big traffic-handling directories,
and it's not worth providing for separate variation of the location.
.LP
We do split the former
/usr/lib/news
into two,
however.
We reserve
/usr/lib/news
itself for control files that are logically
part of the database.
(It would make sense to put those under some subdirectory of
/usr/spool/news,
but that would break a lot of programs that think these
files live in
/usr/lib/news.)
The programs\(emthose which don't need to be directly executable by
users or \fIuucp\fR\(emlive in
/usr/lib/newsbin.
Actually,
they usually live in subdirectories thereof,
with each significant subsystem having its own subdirectory to keep the
individual directories manageable in complexity.
There are occasional general-purpose utilities at the top level;
there aren't enough of them to be worth a separate directory.
.SH
PATH
.LP
In general,
things are organized to permit sharing of
/usr/lib/newsbin
among multiple databases.
It doesn't make sense to share
/usr/lib/news
among multiple databases,
as much of the stuff that lives there is logically part of the database.
.LP
There is a possibility that an individual database will want to override
specific decisions made by the programs,
i.e. will want its own version
of some programs.
Accordingly,
provision is made for a `bin' directory under
/usr/lib/news.
News software should set its PATH to something on the order of
.DS
.ft B
/usr/lib/news/bin:/usr/lib/newsbin/xxx:/usr/lib/newsbin:/bin:/usr/bin
.ft
.DE
(See the ``Configuration Mechanisms'' document for how this
should \fIactually\fR be written,
to facilitate configuration changes
and local customization.)
That is,
first look in the database's bin directory for overrides,
then in some subdirectory of
/usr/lib/newsbin
for the subsystem's
programs,
then in
newsbin
itself for news-wide utilities,
then in the standard system directories for standard Unix utilities.
