10

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:

2nd para:

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 $SYS-SCREENRC (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 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)

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

0

2 Answers 2

15

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.

Are macOS man pages often incomplete or don't match the code shipped?

Yes. Apple for a decade of macOS (and OS X) releases has introduced new programs that lack manual pages entirely, released manual pages that don't match the shipping binaries and had undocumented flags and features in code that aren't documented. Whether using the Feedback Assistant to document specific issues is effective is up to some debate, but please do so if you find an issue with any manual page and care that they are complete / correct. The vast majority of content in manual pages is correct and useful, but there are certainly gaps in the shipped documentation if you look closely at some.

6
  • 2
    Would you welcome an edit to add a a summary at the end that no - everyone's man pages are exactly as Apple shipped and yes - many of the shipped manual pages are outdated / incomplete or just wrong. Filing feedback might cause some action if the error is egregious or causes data loss / bad behavior, but I would expect someone internally is already aware of the attention needed and has chosen to focus on other shipping features and not documentation on the command line. Or we could open a new canonical question and just link them here / there - keep this as is.
    – bmike
    Jun 22, 2023 at 17:07
  • Certainly @bmike - I am always open to improving the information delivered,
    – Allan
    Jun 22, 2023 at 17:12
  • 1
    Please refine my edit once I put my "opinion" in words or roll it back if you don't like the change once you see it.
    – bmike
    Jun 22, 2023 at 17:18
  • In re-reading your answer just now, I think I've found a point of confusion: Under topic Are macOS man pages outdated?, you answer No. They are the correct man pages for the versions of the utilities that ship with macOS. But in the next para you state that Apple has ... released manual pages that don't match the shipping binaries. A word or two of clarification may be in order?
    – Seamus
    Jun 23, 2023 at 22:28
  • “Correct version” ≠ “Complete and accurate version” @Seamus
    – Allan
    Jun 23, 2023 at 22:39
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.

0

You must log in to answer this question.

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