RELEASE
The Linux man page maintainer proudly announces. . .

    man-pages-4.16.tar.gz - man pages for Linux

Differences from the previous manual pages release are listed in
the file "Changes".

For further information, visit http://www.kernel.org/doc/man-pages/

POSIX PAGES
This package used to contains a copy of the POSIX 1003.1-2003
man pages.  The POSIX pages are now distributed in the separate
man-pages-posix package.

THE PAGES
These pages are most of the section 2, 3, 4, 5, 7 man pages
for Linux.  A few pages are provided in sections 1 and 8 for commands
that are not documented in other packages, and there are a few pages
in sections 5 and 8 for the timezone utilities.

[The timezone pages were taken from
ftp://elsie.nci.nih.gov/pub/tzcode2001a.tar.gz.]
[The section 3 man pages for the db routines have been taken from
ftp://ftp.terra.net/pub/sleepycat/db.1.86.tar.gz.]
[The rpc man pages were taken from the 4.4BSD-Lite CDROM.]

Here is a breakdown of what this distribution contains:

    Section 1 = user commands (intro, plus a few other pages)
    Section 2 = system calls
    Section 3 = libc calls
    Section 4 = devices (e.g., hd, sd)
    Section 5 = file formats and configuration files (e.g., wtmp, /etc/passwd)
    Section 6 = games (intro only)
    Section 7 = overviews, conventions, macro packages, etc.
    Section 8 = system administration (intro, plus a few other pages)

    This package contains no, or very few, section 1, 6, and 8 man pages
    because these should be distributed with the binaries they are written
    for.  Sometimes Section 9 is used for man pages describing parts of
    the kernel.

    Note that only Section 2 is rather complete, but Section 3 contains
    several hundred man pages.  If you want to write some man pages,
    or suggest improvements to existing pages, please visit
    http://www.kernel.org/doc/man-pages/ .


Copyright information:

    These man pages are distributed under a variety of copyright licenses.
    Although these licenses permit free distribution of the nroff sources
    contained in this package, commercial distribution may impose other
    requirements (e.g., acknowledgement of copyright or inclusion of the
    raw nroff sources with the commercial distribution).
    If you distribute these man pages commercially, it is your
    responsibility to figure out your obligations.  (For many man pages,
    these obligations require you to distribute nroff sources with any
    pre-formatted man pages that you provide.)  Each file that contains
    nroff source for a man page also contains the author(s) name, email
    address, and copyright notice.
