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.

Overview

The following table shows which operating systems provide mandoc, in which way, for how long, and what they use it for. The table is ordered according to how much these systems rely on mandoc, and in case of ties, for how long they have been relying on it.

Operating system Version Base system Official package Unofficial package Default formatter Default searcher Default viewer Optional viewer Web viewer
OpenBSD 1.14.6 2010 Apr 2 2010 Apr 3 2014 Apr 18 2014 Dec 14 2014 July 12
Alpine Linux 1.14.6 2011 July 12 2010 July 6 2014 Dec 29 2014 Dec 29 2014 Dec 29
Void Linux 1.14.6 2010 Feb 20 2014 Sep 23 2015 Mar 14 2015 Mar 14 man-db + groff ca. 2018
Termux 1.14.5 2015 June 13 2015 June 13 2015 June 13 2015 June 13
Unleashed 1.14.5 2017 Feb 15 2017 Feb 15 2017 Feb 15 2017 Feb 15
Chimera Linux 1.14.6 2021 Oct 30 2021 Oct 30 2021 Oct 30 2021 Oct 30
FreeBSD 1.14.5 2012 Oct 19 2009 Mar 25 2014 Nov 23 2015 May 30 FreeBSD man
NetBSD 1.14.5 2009 Oct 26 2009 Mar 1 2012 Feb 7 NetBSD apropos 4.4BSD man
illumos 1.14.5 2014 July 21 2014 July 21 Solaris man Solaris man
MacOS 1.14.5 2022 Oct 24 2015 Jan 13 2022 Oct 24 FreeBSD man
Arch Linux 1.14.5 2020 Nov 26 2010 Oct 3 groff man-db man-db 2020 Nov 26 2021 Jan 14
openSUSE 1.14.6 2020 Jan 19 2018 Nov 28 groff man-db man-db 2020 Jan 19
Fedora 1.14.5 2019 Feb 7 groff man-db man-db 2020 Feb 24
Gentoo 1.14.6 2017 Jan 28 groff man-db man-db 2020 Dec 11
DragonFly BSD 1.14.6 2009 Oct 29 groff FreeBSD man FreeBSD man
Debian 1.14.6 2016 July 3 groff man-db man-db 2017 Jan 18
Ubuntu 1.14.5 2016 July 7
NixOS 1.14.5 2016 Sep 15
Slackware Linux 1.14.5 2014 Jan 7
IRIX 1.14.5 2020 June 2
Crux Linux 1.14.3 2014 June 10
Minix 3 1.12.3 2010 June 26
IBM AIX 1.12.0 2011 Feb 4
pkgsrc 1.14.5 2009 Mar 1

The columns of the above table have the following meanings:

Base system
The date mandoc was first bundled 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.
Official package
The date mandoc was first officially packaged. To use mandoc, you do not need to build and install it manually. If it isn't installed by default, the easiest way probably is to install a precompiled package distributed from the official servers of the operating system project. 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.
Unofficial package
The date mandoc was first packaged by a third party, not by the maintainers of the operating system itself. In the past, these third-party maintainers did decent jobs, so it should not be a problem that these ports are unofficial. The last few are however seriously outdated and should be updated before use.
Default formatter
The date mandoc was first used by default to format manual pages. If mandoc is not the default formatter, for some systems, the default formatter is mentioned.
Default searcher
The date mandoc was first used as the default implementation of apropos(1).
Default viewer
The date mandoc was first used as the default implementation of man(1).
Optional viewer
The date an option was first provided for update-alternatives(8) to use the mandoc implementations of man(1) and apropos(1). For systems using mandoc by default, an alternative may be mentioned that is officially provided.

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

Additional information about mandoc packaging may be available from Repology.

Links to packages

Maintenance information

Operating system Sources Maintainers
OpenBSD src/usr.bin/mandoc Ingo Schwarze (schwarze@)
Alpine Linux aports/main/mandoc Natanael Copa (ncopa@), Sören Tempel
Void Linux srcpkgs/mdocml Leah Neukirchen
Termux packages/man Fredrick Fornwall (fornwall@)
Unleashed bin/mandoc operating system project no longer maintained
Chimera Linux main/mandoc Daniel Kolesa (q66@)
FreeBSD contrib/mandoc and usr.bin/mandoc Baptiste Daroussin (bapt@)
FreeBSD 9 port ports/textproc/mdocml Ulrich Spoerlein (uqs@)
NetBSD src/external/bsd/mdocml Christos Zoulas (christos@), formerly Joerg Sonnenberger (joerg@)
illumos src/cmd/mandoc Yuri Pankov, Garrett D'Amore
MacOS man; mandoc source not available since MacOS 13.0, likely copied from FreeBSD
MacOS homebrew/mandoc
MacOS macports/mandoc
Arch Linux packages/mandoc Eli Schwartz, Jakub Klinkovský
openSUSE mandoc Matej Cepl (mcepl@)
Fedora rpms/mandoc David Cantrell (dcantrell@), David Shea (dshea@)
Gentoo packages/app-text/mandoc Lars Wendler (polynomial-c@), Mike Frysinger (vapier@)
DragonFly BSD contrib/mdocml and usr.bin/mandoc Sascha Wildner, Franco Fichtner
Debian mdocml Michael Stapelberg (stapelberg@), Bdale Garbee (bdale@)
Ubuntu mdocml
NixOS pkgs/tools/misc/mandoc
Slackware Linux slackbuilds/system/mandoc Daniel Levai
IRIX Xenopatches/mandoc (work in progress) Kazuo Kuroi, Nekoware II
Crux Linux juef/mandoc Svyatoslav Mishyn, no longer maintained
Minix 3 external/bsd/mdocml Lionel Sambuc, no longer maintained
IBM AIX perzl/Main/mdocml Michael Perzl, no longer maintained
pkgsrc textproc/mandoc Thomas Klausner (wiz@)

The porting history is also available.

Other 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 currently available and there is no maintainer for these platforms:

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.

Before mandoc required mmap(2), it was twice ported to Microsoft Windows, but both ports have long been abandoned:

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.)

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.

Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2023 Ingo Schwarze, $Date: 2023/11/15 17:24:58 $