Makehistory
rebuilds the
history(5)
text file and the associated
dbz(3)
database.
The default name of the text file is
/var/lib/news/history;
to specify a different name, use the ``-f'' flag.
Makehistory
scans the
active(5)
file to determine which newsgroup directories within the spool directory,
/var/spool/news,
should be scanned.
(If a group is removed, but its spool directory still exists,
makehistory
will ignore it.)
The program reads each file found and writes a history line for it.
After the text file is written,
makehistory
will build the
dbz
database.
OPTIONS
-A
If the ``-A'' flag is used then the argument given is the pathname
makehistory
can use to store a copy of the history file as it's being built. It will be
appended to, so existing data will not be lost (and so should be valid
history entries).
-a
If the ``-a'' flag is given then the argument is the active file to
use rather than the default one of
/var/lib/news/active.
-b
If the ``-b'' flag is used, then
makehistory
will remove any articles that do not have valid Message-ID headers in them.
-f
If the ``-f'' flag is used, then the database files are named
file.dir
and
file.pag.
If the ``-f'' flag is not used, then a temporary link to the name
history.n
is made and the database files are written as
history.n.pag
and
history.n.dir.
-o
If the ``-o'' flag is used, then the link is not made and any existing
history files are overwritten.
If the old database exists,
makehistory
will use it to determine the size of the new database.
-i
To ignore the old database use the ``-i'' flag.
Using the ``-o'' flag implies the ``-i'' flag.
-s
The program will also ignore any old database if the ``-s'' flag is used
to specify the approximate number of entries in the new database.
Accurately specifying the size is an optimization that will create a more
efficient database.
(The size should be the estimated eventual size of the file, typically
the size of the old file.)
For more information, see the discussion of
dbzfresh
and
dbzsize
in
dbz(3).
-u
If the ``-u'' flag is given, then
makehistory
assumes that
innd
is running.
It will pause the server while scanning, and then
send ``addhist'' commands (see
ctlinnd(8))
to the server for any article that is not found in the
dbz
database.
The command ``makehistory -bu'' is useful after a system crash, to delete
any mangled articles and bring the article database back into a more
consistent state.
-v
If the ``-v'' flag is used with the ``-u'' flag, then
makehistory
will put a copy of all added lines on its standard output.
-n
To scan the spool directory without rebuilding the
dbz
files, use the ``-n'' flag.
If used with ``-u'', the server will not be paused while scanning.
-r
To just build the
dbz
files from an existing text file, use the ``-r'' flag.
The ``-i'' or ``-s'' flags can be useful if there are no valid
dbz
files to use.
-T
Makehistory
needs to create a temporary file that contains one line for each article
it finds, which can become very large.
This file is created in the
/var/spool/news/in.coming/tmp
directory. The ``TMPDIR'' environment variable may be used to specify a
different directory. Alternatively, the ``-T'' flag may be used to
specify a temporary directory. In addition, the
sort(1)
that is invoked during the build writes large temporary files (often to
/var/tmp
but see your system manpages). If the ``-T'' flag is used, then the
flag and its value will be passed to
sort.
On most systems this will change the temporary directory that
sort
uses.
if used, this flag and its value will be passed on to the
sort(1)
command that is invoked during the build.
EXAMPLES
A typical way to use this program is with the following
/bin/sh
commands:
ctlinnd throttle "Rebuilding history file"
cd /var/lib/news
if makehistory -n -f history.n ; then
:
else
echo Error creating history file!
exit 1
fi
# The following line can be used to retain expired history
# It is not necessary for the history file to be sorted.
# awk 'NF==2 { print; }' <history >>history.n
# View history file for mistakes.
if makehistory -r -s `wc -l <history` -f history.n; then
mv history.n history
mv history.n.dir history.dir
mv history.n.pag history.pag
fi
ctlinnd go ''
BUGS AND LIMITATIONS
Makehistory
does not handle symbolic links.
If the news spool area is split across multiple partitions, the following
commands should probably be run before the database is regenerated:
cd /var/spool/news
find . -type l -name '[1-9]*' -print | xargs -t rm
Make sure to run the command on all the appropriate partitions!
HISTORY
Written by Rich $alz <rsalz@uunet.uu.net> for InterNetNews.
This is revision 1.3, dated 1996/11/26.