About
This site is a collection of free and open-source man pages. Its purpose is to provide convenient and stable access to man page content. For example, it has man pages for several distributions, it has permalinks, it interlinks man pages in various ways and allows linking into a specific line or section of a man page.
Contact
This page and the software behind this site is written by Georg Sauthoff. Don't hesitate to contact me if you have comments, questions or suggestions about this site.
Features
Selected features of this site:
- Permalinks - each man page shows a permalink which is a stable reference to its content. This is useful when citing a man page or parts of it. Stable means that you get the exact same content even if newer versions of that man page source are imported, either when a new distribution version is added or when an updated package (that provides the man page) is added.
- Short links - short links are easy to construct and
thus can be used for direct access to a man page. For example, to access the
strcopy()
man page in Fedora 29: /f29/3/strcpy — or to access theopen
man page in the highest prioritized section: /f29/open - Overview pages - there are pages that list all the section of a distribution or all the pages inside a section, such as /f29/3 (all pages in Section 3 in Fedora 29) and /f29 (all sections in Fedora 29). This allows for better indexing and quick in-browser searches.
- Inter-section links - for some names there are man pages in multiple sections. Since sometimes it's easy to end up in the wrong section or to be surprised that there are other man pages of the same name in other sections the navigation column contains links to man pages of the same name in other sections.
- Inter-distribution links - there also links between man pages of the same name in other distributions. This might be convenient to quickly check the availability of an API in another system or distribution version.
- Reverse-links - i.e. what links here
- Responsive layout - the HTML pages use CSS Flexible Box layout such that the man pages are decently viewable on different screen sizes, e.g. also on smartphones.
- No JavaScript - omitting JavaScript helps with load times and saves some cycles on the client side. Some frontend frameworks come with some good design defaults, an easy to use grid and responsive design but add some hundred kilobytes including some JavaScript. The JavaScript might be there for some extra features or to implement responsive layout in legacy browsers. Thus, there are basically only downsides on using JavaScript in a site like this.
Technology Stack
The site's content is stored in a Postgresql database. The loader
that imports man pages into the database is written in Python,
using SQLAlchemy Core expressions for database operations.
The actual site software is written in Go, using just the
pq Postgres driver
and the gziphandler package as
non-standard dependencies. That means the Go code implements a
HTTP server (using net/http
) that implements
a URL multiplexer, selects from the database and executes
some nested Go HTML templates.
The Go server is put behind an
NGINX reverse proxy such
that
popular pages are served from a cache and to allow for seamless updates.
See Also
- Announcing MANPATH.be (2019-06-07) - a Blog article by the creator of this site that gives some perspective on the motivation behind this project and its execution.
- History of UNIX Manpages
- The obligatory xkcd comics: RTFM, Manuals and Man Page
Related Services
There are many browsable man page repositories available. The following details some of the differences of the more popular ones with this site.
All of the compared sites are missing some semi-advanced features like permalinks, inter-section links, inter-distribution links, reverse-links, linkable sections and line-numbers in man pages.
The Debian project runs manpages.debian.org that provides access to the man pages of some Debian releases. As of 2019-04-30, most pages have inter-system links to Debian stretch, Debian testing, stretch-backports and Debian unstable. It's unclear how stable these links are. That means whether the links to stretch will still work after the next stable Debian is released. There are no permalinks to pages of a distribution version - e.g. a page in stretch or unstable might be replaced by an package update at any time. On the positive side, there are inter-section links, including links to translated pages.
The FreeBSD project has a Web form for querying the man pages of various UNIX/Linux distributions. Since there aren't any overview pages the pages aren't indexed by web search engines like Google. The produced links are long query strings, thus not user friendly for writing them from scratch. There are no inter-distribution links for easily switching between man page versions.
Man7.org serves the man pages from the Linux man-pages project and a few other projects. It probably closely follows the master branch of the man-pages project. Or it contains the HTML renderings of the latest release. In any case, links into this repository aren't stable because you just get some current version. It's also unclear how often the other projects are updated.
Man.cx tracks almost all man-pages of Debian testing. In contrast to many other services, it includes the date of the import run. Similar to other services, the links aren't stable, one can only reference the current version. On the plus side, it provides inter-section links.
Hurrican Electric also provides a man page repository besides its many other awesome free network related services (related to IPv6, DNS etc.). The HTML rendering of the man pages is very basic, e.g. bold/underscore markup is gone, sections aren't rendered as headings, and URLs aren't rendered as link. Parameters are encoded as query strings, but there are some overview pages such that a robot has a chance indexing the pages. It's completely opaque from which system the pages are imported from. As of 2019-04-30, it looks like the pages weren't updated in the last 6 years. The man pages are likely from a Linux distribution that was released in 2013.
die.net also has a Linux man page repository. There isn't any information on how often these man pages are updated, from which Linux system they are imported from and who is behind this service ('a few dozen friends in the US'). The links aren't stable, but the pages are indexed well by Google.