summaryrefslogtreecommitdiffstats
path: root/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'README.md')
-rw-r--r--README.md316
1 files changed, 316 insertions, 0 deletions
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..59c1b10
--- /dev/null
+++ b/README.md
@@ -0,0 +1,316 @@
+# The man-db manual pager suite
+
+ https://gitlab.com/man-db/man-db
+
+ https://man-db.gitlab.io/man-db/
+
+Please read the man-db manual, included in the manual subdirectory of this
+distribution. It contains configuration details and other aspects of this
+manual pager suite that are not duplicated or relevant in this README.
+Check manual/README for details of the formatters required.
+
+ * Read docs/INSTALL.autoconf for generic options to configure. (If you
+ cloned man-db from git, then run `./bootstrap` to create this file.)
+ * Read docs/INSTALL.quick if you know all about man-db.
+ * Read NEWS.md for visible changes since the last public release.
+ * Read ChangeLog for details of recent source code changes.
+ * Read docs/TODO for future plans.
+
+The C source requires an C99 compiler.
+
+
+## Copyright and licensing
+
+Copyright (C) 1990, 1991 John W. Eaton.
+
+Copyright (C) 1994, 1995 Markus Armbruster.
+
+Copyright (C) 1994, 1995 Graeme W. Wilford. (Wilf.)
+
+Copyright (C) 1995 Carl Edman.
+
+Copyright (C) 1996, 1997, 1998, 2000 Fabrizio Polacco.
+
+Copyright (C) 2001-2023 Colin Watson.
+
+Copyright (C) 1984, 1989, 1990, 1991, 1992, 1995, 1996, 1997, 1998, 1999,
+ 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+ 2010, 2011, 2012 Free Software Foundation, Inc.
+
+man-db is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+man-db is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with man-db; if not, write to the Free Software Foundation,
+Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+In addition, man-db incorporates Gnulib, copyrighted by the Free Software
+Foundation and others. Note that much of Gnulib is distributed under the GNU
+General Public License version 3 or later. This means that, although
+man-db's own source code is licensed under GPL v2 or later, the work as a
+whole falls under the terms of the GPL v3 or later. Unless you take special
+pains to remove the GPL v3 portions, you must therefore follow the terms and
+conditions of the GPL v3 or later when distributing man-db.
+
+
+## Notice regarding current state of FHS (Linux/?BSD)
+
+As of May 13th, 2001, the last public release of the Filesystem Hierarchy
+Standard proposed the root of the manual page hierarchy as `/usr/share` and
+the root of the writable cat hierarchy as `/var/cache/man` for the purposes
+of man-to-cat filename translation. As such, the following are defined in
+`./include/manconfig.h`:
+
+```c
+#define FHS_CAT_ROOT "/var/cache/man" /* required by fsstnd() */
+#define FHS_MAN_ROOT "/usr/share" /* required by fsstnd() */
+```
+
+For compatibility with the old FSSTND, the following locations are also
+defined:
+
+```c
+#define CAT_ROOT "/var/catman" /* required by fsstnd() */
+#define MAN_ROOT "/usr" /* required by fsstnd() */
+```
+
+Should these locations change, simply define the paths accordingly and
+recompile. Other FHS changes relating to man/cat paths will not be
+compatible with this version of man-db.
+
+
+## Non-generic arguments to configure
+
+To allow the configuration program, configure, to be non-interactive, it can
+be passed various options to alter the default settings. Generic configure
+options are discussed in docs/INSTALL.autoconf. The following list of
+options is extracted from the man-db manual. It is strongly recommended
+that relevant sections of the manual are read if any of these options are
+used.
+
+* `--enable-cache-owner[=ARG]`
+
+ By default, system-wide cache files will be owned by user man. Use this
+ option with an argument to change the cache file owner.
+
+* `--disable-cache-owner`
+
+ Use this option to leave the ownership of system-wide cache files
+ unconstrained. Users will be allowed to modify them.
+
+* `--disable-setuid`
+
+ By default, man will be installed as a setuid program to the user that
+ owns the system-wide cache files. Use this option to install man as a
+ non-setuid program instead.
+
+* `--enable-mandirs=OS`
+
+ By default, man-db supports manual page directories in any of several
+ layouts used by free and proprietary versions of UNIX. However, in
+ certain cases, this can cause man-db to find the wrong page by mistake,
+ especially when the names of some manual pages on the system contain
+ periods. Use this option with an argument of GNU, HPUX, IRIX, Solaris,
+ or BSD (or more than one of these, separated by commas) to support only
+ the layouts typically used on each of those systems. Note that man-db is
+ not currently capable of writing cat pages in the proper BSD layout.
+
+* `--with-device=DEVICE`
+
+ Use this flag to alter the default output device used by NROFF. DEVICE is
+ passed to NROFF with the -T option. configure will test that NROFF will
+ run with the supplied device argument.
+
+* `--with-db=LIBRARY`
+
+ configure will look for database interface libraries in the order gdbm,
+ Berkeley DB and finally ndbm and will #define appropriate variables
+ relative to the first one found. To override the built-in order on
+ platforms having a choice of interface library, use this option to
+ specify which library to use.
+
+* `--enable-automatic-create`
+
+ If this flag is used, man will automatically create index databases for
+ users' private manual page hierarchies.
+
+* `--disable-automatic-update`
+
+ Normally, man will update entries in index databases if it finds newly
+ installed manual pages (if the --update flag is used) or delete entries
+ if manual pages are removed. This flag suppresses this behaviour.
+
+* `--disable-cats`
+
+ Normally, man will automatically try to create cat files corresponding to
+ manual files when a manual page is read. This flag suppresses this
+ behaviour.
+
+* `--disable-manual`
+
+ Don't build or install the man-db manual. This may be useful when
+ cross-compiling, or to reduce the installation size.
+
+
+## Installation
+
+Configure man-db:
+
+* **Read** `docs/INSTALL.autoconf` regarding `./configure` options.
+
+* **Run** `./configure --help` to see what `--enable` and `--with`
+ options may be useful.
+
+* **Run** `./configure` with the appropriate options and environment
+ variable settings.
+
+**Browse** or **edit** the following files that were created by the
+configuration process:
+
+* `include/manconfig.h` regarding the default section list and other
+ specific definitions.
+
+* `lib/compression.c` if the default compressor support is
+ inadequate for your requirements. (Usually `.Z` [compress],
+ `.z`, `.gz` [gzip].)
+
+configure will determine your system's ability to use native language
+support (NLS) message catalogues. You may set the environment variable
+`LINGUAS` to limit the set of translations installed. `LINGUAS` should
+contain a space-separated list of two-letter language identifiers. To
+compile man-db with no support for message catalogues, simply pass the
+`--disable-nls` option to configure. N.B. This is not related to man's
+ability to display NLS manual pages, support for which is compiled in by
+default.
+
+Build man-db:
+
+* **Run** `make` to compile man-db with the set of translations chosen
+ when running `./configure`.
+
+Sort out the man-db configuration file.
+
+* **Run** `./src/man -l man/man5/manpath.5` from the root of this
+ distribution to read the man-db configuration file details.
+
+* **Edit** `./src/man_db.conf` to your local requirements.
+
+Install the package.
+
+* (gain superuser privileges for the rest of the steps)
+
+* **Run** `make install` to install the utilities and manual pages.
+
+Initialise the index databases for all manpaths marked as global in the
+man-db configuration file.
+
+* **Run** `mandb` (this step is equivalent to running straycats and
+ makewhatis too).
+
+The following steps are optional / dependent on local conventions.
+
+* **Acknowledge** any warnings emitted by mandb. Bogus manual pages
+ are not included in the database and may be a waste of space.
+ Those pages without correctly formatted "whatis" lines are
+ included, but will have a whatis entry of "(unknown)"
+
+* `cd tools` and **run** `mkcatdirs -t` to see if you have all of the
+ required cat directories. `mkcatdirs` without an option will
+ display a usage message.
+
+* `cd tools` and **run** `checkman` with an argument of colon-separated
+ manual page hierarchies to cross check for duplicated manual
+ pages. If no argument is given, your default `$MANPATH` will be
+ used.
+
+ The output of `checkman` may be piped into a file and used as an
+ argument to `rm`; the "is newer than" messages are directed to
+ standard error. E.g. `checkman > dups`
+
+ If you are confident that the duplicates found are indeed
+ duplicates, you can back them up and delete them to save space.
+
+ At this point, running `checkman` again may yield further duplicates
+ that were ignored the first time.
+
+* **Run** `catman` with appropriate options to create any/all cat files
+ that you would like pre-formatted.
+
+
+## Multiple build directories
+
+It is possible to build man-db in a directory other than the directory
+containing this file (and all of the program sources). This is particularly
+useful if compiling on multiple architectures or testing various
+configuration options as only a single copy of the sources is required.
+
+To enable this support, simply change directory to where you would like to
+build the package and run the configure program in this directory
+*from there*. Further information about this support can be found in the
+generic install document `docs/INSTALL.autoconf`.
+
+
+## Makefile targets and variables
+
+The standard GNU Makefile targets: `all`, `install`, `uninstall`,
+`mostlyclean`, `clean`, `distclean`, `realclean` and `TAGS` are available in
+every Makefile- supported directory. In addition, the master Makefile has
+the `dist` target to create a compressed and tarred distribution file.
+
+During the configuration process, `configure` sets the installation
+variables, `prefix` and `exec_prefix`. These are then used to form other
+variables such as `bindir` and `sysconfdir`. To change any of these or
+other standard GNU install variables dynamically, issue the `make` command
+with variable expressions as arguments, eg. `make prefix=/usr/local/packages`
+
+N.B. If `prefix=/usr` (either statically or dynamically), then
+`sysconfdir=/etc` instead of the usual `$(prefix)/etc`. To force
+`sysconfdir` to be `/usr/etc`, set it on the make command line.
+
+
+## Default preprocessors
+
+man-db uses a manual page directed preprocessor system, that is, each manual
+page may request preprocessing by a selection of preprocessors. Some
+systems' manual pages do not come with this information built in. In such
+circumstances, it is advisable to set a default list of preprocessors that
+each manual page should be passed through, so that those requiring special
+processing are readable. To achieve this, set `DEFAULT_MANROFFSEQ` (found in
+`include/manconfig.h`) to the appropriate preprocessor string, after running
+configure, but prior to compilation. This is not necessary for the
+following systems whose default preprocessing requirements are known.
+
+* Known not to require `DEFAULT_MANROFFSEQ`:
+
+ Linux, SunOS
+
+* Known to require `#define DEFAULT_MANROFFSEQ "t"`:
+
+ Ultrix
+
+* Known to require `#define DEFAULT_MANROFFSEQ "te"`:
+
+ HP-UX, OSF/1
+
+If unsure of the default preprocessors required by a system, the standard
+system's man(1) manual page may provide an answer.
+
+
+## Contacting the maintainer
+
+The current maintainer of man-db is Colin Watson <cjwatson@debian.org>.
+Please feel free to contact me with any queries or problems you may have.
+You can report bugs here:
+
+ https://gitlab.com/man-db/man-db/-/issues
+
+Bugs from before the migration to GitLab may be found here:
+
+ https://savannah.nongnu.org/bugs/?group=man-db