5

I run macOS 10.14.6, "Mojave". I've been studying man screen to make some changes to its default behavior. The 2nd & 4th paragraphs under CUSTOMIZATION read:

When screen is invoked, it executes initialization commands from the files "/usr/local/etc/screenrc" and ".screenrc" in the user's home directory. These are the "programmer's defaults" that can be overridden in the following ways: for the global screenrc file screen searches for the environment variable $SYSS-CREENRC (this override feature may be disabled at compile-time). The user specific screenrc file is searched in $SCREENRC, then $HOME/.screenrc. The command line option -c takes precedence over the above user screenrc files.

4th para:

Two configuration files are shipped as examples with your screen distribution: "etc/screenrc" and "etc/etcscreenrc". They contain a number of useful examples for various commands.

But it seems there are some discrepancies:

  • /usr/local/etc does not exist
  • $SYSSCREENRC is not defined (echo $SYSSCREENRC => null)
  • $SCREENRC is not defined
  • etc/screenrc does not exist (nor does private/etc/screenrc)
  • etc/etcscreenrc does not exist (nor does private/etc/etcscreenrc)

I've assumed that all the "Unix stuff" in macOS is maintained by Apple, and updated when required, just as the "other stuff" is. However, as my system is up-to-date, that may not be the case.

Question...

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.

Is there a process outside macOS for updating this part of the system that's "sanctioned" by Apple? (By "sanctioned" I only mean a procedure designated by Apple to maintain system integrity.)

If not, has Apple acknowledged this situation? By that I'm only trying to learn if I missed something.

9

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.

| improve this answer | |
  • Perfect answer. That said, I do now wonder what Apple will say in year 2104 when asked why they still ship 100 year-old tools with their shiny new OS... but that's asking for speculation, so we won't go there! – Seamus Jan 6 at 10:40
  • 2104? I’m not going to be around so I’ll let someone else worry about that. :-) – Allan Jan 6 at 10:42
  • 2
    Check out the version of Bash that Apple is shipping with. For me, /bin/bash is version 3.2, © 2007. Perhaps the MIT-style license used by zsh is the real motivator for apple to switch the default shell..... – Z4-tier Jan 6 at 15:49
  • @Z4-tier - I would agree with that completely. I actually touch on bash in my linked question – Allan Jan 6 at 15:53
  • A potential wrinkle in this answer: It seems Apple's lack of updates to the open-source Unix tools isn't limited to GPL licensed software; at least some BSD-licensed software in MacOS isn't updated either. – Seamus Feb 24 at 9:47
3

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 and etc/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.

| improve this answer | |

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .