Puffy mandoc — UNIX manpage compiler — base system, ports and packages

Availability of the mandoc toolset

When looking for mandoc on your system, be aware that many downstream distributions still use the historical name mdocml for mandoc.

mandoc in the base system

The following operating systems come with bundled mandoc utilities as part of the base system. On these systems, no installation of mandoc is required, you can use it out of the box. All of these projects have helped to make mandoc better, by providing feedback and advice, bug reports, and patches.

mandoc is the default manual formatter and viewer

The following operating systems by default use the mandoc implementation of man(1) and apropos(1).

OpenBSD (default formatter since April 3, 2010; default viewer since December 14, 2014)
src/usr.bin/mandoc (1.14.1 sources under active development and build system)
Maintainer: Ingo Schwarze (schwarze@)
Alpine Linux (testing aport July 6, 2010; main aport June 12, 2011; man(1), apropos(1), makewhatis(8) enabled since December 29, 2014)
aports/main/mdocml (1.14.1 port)
Maintainer: Natanael Copa (ncopa@)
Void Linux (default formatter since September 23, 2014; default viewer since March 14, 2015; a man-db package is also available)
srcpkgs/mdocml (1.14.1 base system package)
Maintainer: Leah Neukirchen

mandoc is the default manual formatter

The following operating systems by default use the bundled mandoc utility to format manual pages for display, but use different implementations of man(1) and apropos(1).

FreeBSD (default since Nov 23, 2014; mandoc apropos(1) supported as an option)
contrib/mdocml (post-1.14.1 sources) usr.bin/mandoc (build system)
Maintainer: Baptiste Daroussin (bapt@)
NetBSD (default since February 7, 2012)
src/external/bsd/mdocml (1.14.1 sources and build system)
Maintainer: Christos Zoulas (christos@), formerly Joerg Sonnenberger (joerg@)
illumos (default since July 21, 2014)
src/cmd/mandoc (1.14.1 sources and build system)
Maintainers: Yuri Pankov and Garrett D'Amore

mandoc is not the default manual formatter

The following operating systems install mandoc by default, but do not use it as the default manual formatter. Both systems are very seriously outdated, with no update for about three years.

DragonFly BSD (in base since October 29, 2009)
contrib/mdocml (1.13.1 sources) lib/libmandoc usr.bin/mandoc (build system)
Maintainers: Sascha Wildner and Franco Fichtner
Last tested version: 1.14.1 still works on DragonFlyBSD 4.7.0 (tested by Sevan Janiyan), so updating the port is a simple task, but it wasn't done yet.
Minix 3 (in base since June 26, 2010)
external/bsd/mdocml (1.12.3 sources and build system)

mandoc via ports and packages

The following operating systems provide ports and packages of mandoc. To use mandoc, you do not need to build and install it manually. The easiest way probably is to install a precompiled package. In case that isn't available, you can build the package yourself, using the ports framework or an equivalent mechanism. Please refer to your operation system documentation for instructions how to install packages and/or how to use the ports system.

Official ports and packages

The following operating systems provide official ports or packages, that is, the files required to build the port or package are stored in an official repository maintained by the respective operating system project.

FreeBSD (since March 25, 2009, useful for version 9 and older)
ports/textproc/mdocml (1.13.4 port)
Maintainer: Ulrich Spoerlein (uqs@)
Debian (since July 3, 2016)
jessie-backports (stable) package (1.13.3) — stretch (testing) package (1.13.3) — sid (unstable) package (1.13.3) — version history
Maintainers: Bdale Garbee (bdale@) and Michael Stapelberg (stapelberg@)
Last tested version: 1.14.2rc1 still works on jessie-8.8 (tested by Ingo Schwarze), so updating the package is a simple task, but it wasn't done yet.
Arch Linux (since October 3, 2010)
packages/md/mdocml (1.14.1 port)

Unofficial ports and packages

For the following operating systems, files to build a port or package are available from third parties, not from the maintainers of the operating system itself. In the past, these two maintainers did a very decent job, so it should not be a problem that these ports are unofficial.

Slackware Linux (since January 7, 2014)
slackbuilds/system/mdocml (1.14.1 SlackBuild script provided by SlackBuilds.org)
Maintainer: Daniel Levai
Crux Linux (since June 10, 2014)
mdocml (1.14.1 port provided by Svyatoslav Mishyn)

The ports for the following operating systems are seriously outdated. Updating them is a pretty simple task. Consider doing that; if you don't want to, using pkgsrc (see below) or compiling from source as explained in the INSTALL file is your second best bet.

IBM AIX (since February 4, 2011)
Main/mdocml (1.12.0 package provided by Michael Perzl)
Last tested version: 1.13.4 still works on AIX 7.1 (tested by Sevan Janiyan), so updating the package is a simple task, but it wasn't done yet.
homebrew/mdocml (1.13.2 homebrew formula provided by Alexis Hildebrandt)
textproc/mdocml (1.13.1 port provided by MacPorts)
Last tested version: 1.14.1 still works on OS X 10.11.6 El Capitan and on OS X 10.4.11 Tiger (tested by Sevan Janiyan), so updating the ports is a simple task, but it wasn't done yet.

Updating the packages for Microsoft Windows is more difficult because newer mandoc requires the mmap(2) function, which is reasonable given that mmap(2) is a POSIX function. Consequently, anybody trying to port mandoc to Windows will have to implement mmap(2) for Windows first. I don't know whether simple code snippets like this one will or will not work.

Cygwin (since December 5, 2012)
mdocml (1.12.2 port)
MinGW (since October 11, 2014)
mandoc (1.13.1 port and pre-built binaries for Microsoft Windows provided by Embedeo Ltd.)

mandoc via pkgsrc

On many other operating systems, for example other Linux distributions, Darwin/Mac OS X, AIX, HP-UX, IRIX, and Solaris, you can use the pkgsrc portable package build system, see the list of supported platforms.

pkgsrc (since March 1, 2009)
textproc/mdocml (1.14.1 port)
Maintainer: Thomas Klausner (wiz@)

Other tested platforms

Building mandoc directly from the distribution tarball as described in the INSTALL file and running it has been tested on the following platforms, but a port or package is not yet available and there is no maintainer for these platforms:

Add or improve mandoc support

If you are interested in building or maintaining another port or consider integrating mandoc into the base system of another operating system, please contact us, such that we can provide help and keep you updated regarding new releases.

Some time ago, Jesse Adams built Linux packages for several distributions on his Open Build Service account and tried to get his package into openSUSE, but then abandoned the project before getting anywhere. It would be useful if someone could pick that work up.

Copyright © 2013, 2014, 2015, 2016, 2017 Ingo Schwarze, $Date: 2017/07/21 15:38:44 $