Apple - Are my macOS man pages outdated?
Is there a separate update process in macOS required to get updates for the unix tools and system manuals? For example, according to
man screen
Apple packages screen ver 4.0.2 (January 2004 vintage) with macOS 10.14.6; that release was 16 years ago this month.
No. There is no separate process to update Unix tools/utilities.
It’s just very unlikely that the Unix tools will be updated past the versions you’re seeing now.
Why? GPL Licensing.
Using screen
as an example, it will likely remain on version 4.0.2 because that was the last version that used the less restrictive GPLv2 public license. Version 4.2 (2007) and subsequent releases use the GPLv3 which Apple generally doesn’t want to comply with.
See Is macOS mostly closed source? for more info.
As to the issues you raised regarding screen
:
/usr/local/etc
is a BSD directory. A lot of macOS has BSD underpinnings, but this directory is not used.- A lot of environment variables are not set by the OS and this is quite common across all OSes; macOS, BSD, and even Linux distros like RedHat.
- Sample config files not being included in the OS is also common
- Apple doesn’t rewrite the man pages for the changes they make (which the GPLv2 license allows them to do)
If not, has Apple acknowledged this situation? By that I'm only trying to learn if I missed something.
There’s nothing to acknowledge as this was done intentionally by Apple. If you want to “update” to the latest version of a Unix utility, you either have to compile it from source, use MacPorts or HomeBrew. You’ll have to manage the updating of them, however.
Are macOS man pages outdated?
No. They are the correct man pages for the versions of the utilities that ship with macOS.
The only real issue I see here is the mentioning of /usr/local/etc
in the man page. This most probably is just an oversight by Apple when they copied the man page 1:1 from the distribution. On Mojave, screen
reads the default configuration from /private/etc/screenrc
(which doesn't exist unless you create it).
$ strings /usr/bin/screen | grep screenrc
%s/.screenrc
-c file Read configuration file instead of '.screenrc'.
Sorry, too late now. Place that in your .screenrc file.
/private/etc/screenrc
$ ls /private/etc/screenrc
ls: /private/etc/screenrc: No such file or directory
For the other items
- environment variables can be used to point to defaults but they are not mandatory. They just give you the option to read
screenrc
(the system-wide default usually read from/private/etc/screenrc
) or.screenrc
(the user-specific default usually read from~/.screenrc
) from somewhere else (or use a tailored one for specific needs) etc/screenrc
andetc/etcscreenrc
"are shipped as examples with your screen distribution", the path is relative to the distribution directory of the source code. They probably are not included in macOS, if required you can get the source code from Apple or GNU (screenrc, etcscreenrc).
PS: Man pages are part of the standard macOS installation, there is no separate process to update them.
PPS: More recent versions of standard Unix/GNU tools can usually be installed via Homebrew.