# djbwares Guide

This is a guide to the djbwares toolset. You can find reference documentation accompanying the tools themselves. Each command has a manual page, accessible through the normal `man` command, and the original DocBook XML form of the same, readable with any XML viewer (including WWW browsers).

- Changes from the original Bernstein softwares
- Command and tool list
- Non-command documentation list
- Building the toolset from source
- Timekeeping
  - TAI-10 and UTC
  - Publishing the time
  - Synchronizing with other systems
- Internet publication
  - Conventional publicfile services to run
  - Security
- the Domain Name System:
  - Conventional DNS services to run
  - Security
  - Providing a private root content DNS server
  - Updating the public root content DNS server list
  - Database replication
  - Fully qualified domain names
  - What is the "af"?

## Bernstein tutorials and caveats

There are also some tutorials accompanying a few of Bernstein's toolsets:

- daemontools
- djbdns
- publicfile (note in particular the Users Guide and the list of pre-defined file types)

However, some caution should be applied:

- Be aware that some of the instructions are geared towards a universe where one installs things longhand with highly-specific "install", "setup", and "check" tools; whereas the djbwares toolset omits these in favour of letting the people who package the toolset handle installing things into files and directories with general-purpose packaging systems. Building the djbwares toolset from source, one can build something self-contained that can be enclosed in a "ports tree" (or — ironically — slashpackage) system, or optionally directly build actual first-class software packages for pkgsrc on NetBSD, pkg_ng on FreeBSD, pkg on OpenBSD, and dpkg on Debian.

- The "how to start daemontools" how-to only covers `/etc/rc.local` (obsolete in System 5 Unix in 1983, in FreeBSD in 1995, and in NetBSD in 2000), van Smoorenburg `/etc/inittab` for Linux-based operating systems (not, as the page erroneously claims, Unix System 5 in the first place, which latter had even when daemontools was invented already switched to things like the Service Access Facility, the System Resource Controller, and the Service Management Facility way back in the late 1980s and early 1990s), and several flavours of Upstart (discontinued by Canonical in 2015).

  None of the systems that one will encounter in the real world in the 2020s (Mewburn rc on FreeBSD and NetBSD since 2000, OpenBSD's rc, OpenRC, BusyBox init, systemd, s6-rc, nosh `service-manager`, and others) are covered and the Bernstein how-to is long-since defunct. Because `inittab` is history, a lot of more up-to-date how-tos have been written.

- Several of the djbdns how-tos use undocumented `add-ns` and suchlike programs which the bespoke installation tools in djbdns in fact created on the fly. These are in reality simple shell script wrappers around `tinydns-edit` (that hardwire its location into the script) and wherever you see `./add-childns` (for example) you can substitute `tinydns-edit data data.tmp add childns`. Or write a shell function to do that.

## Other doco

- Life With djbdns by Henning Brauer
- daemontools, the djb way, by Wayne Marshall
- services, services!, the djb way, by Wayne Marshall
- clockspeed, the djb way, by Wayne Marshall
- clockspeed service dæmons, the djb way, by Wayne Marshall
- djbdns, the djb way, by Wayne Marshall
- publicfile, the djb way, by Wayne Marshall

Brauer's Life With djbdns and Marshall's the djb way have mostly stood the test of time since 2005, although several changes from the original Bernstein softwares nowadays apply. Moreover, the leap seconds table supplied with djbwares is up-to-date and the caution given by Marshall in 2003 about Bernstein's 1998 data file does not apply.