Homebrew error OSX 10.9: "dyld: Symbol not found: _openat"

I am aware that OSX 10.9 is no longer officially supported, but I have been using brew without major issues anyway for a while now. Unfortunately, since yesterday, I am no longer able to use brew at all. All of the commands I’ve tried, including “brew update”, fail with a common error, pasted below.

I’m not sure if brew downloaded some kind of update recently or a remote resource has changed that broke compatibility, or if this is a result of changes in my local environment - I did make some changes to my Python installations recently?

Anyway, updating OSX is not a feasible option for me on this machine and it would be nice to get brew working on 10.9 again. Any help would be appreciated.

ERROR: Your version of macOS (10.9.5) is too old to run Homebrew!

dyld: lazy symbol binding failed: Symbol not found: _openat
  Referenced from: /usr/local/Homebrew/Library/Homebrew/vendor/portable-ruby/current/bin/ruby
  Expected in: /usr/lib/libSystem.B.dylib

dyld: Symbol not found: _openat
  Referenced from: /usr/local/Homebrew/Library/Homebrew/vendor/portable-ruby/current/bin/ruby
  Expected in: /usr/lib/libSystem.B.dylib

Trace/BPT trap: 5

The hammer actually dropped almost 2 weeks ago. Perhaps you only brew updated recently, hence the “late notice”:

Then it looks like you’re stuck.

For what it’s worth, the formulas/casks you’ve already installed will continue to work as well as they do now, but until you can upgrade your macOS, you’ll have to manually compile newer versions of the software you need, or find installers from elsewhere.

Is it possible to revert to the previous version and then prevent it from updating again in the future?

I understand dropping support, but not leaving a path forward for those on an older MacOS - not even making the update process smart enough to not brick the installation by replacing it with an unsupported version - feels nasty. I know I’m not the only one who’s still doing software work on older Mac hardware, and OSX 10.9 still isn’t even ten years old.

Update, for anyone else who has the same problem in the future (running brew on MacOS 10.9 Mavericks, for which support was dropped in brew 2.4.0):

I downloaded the 2.3.0 release: https://github.com/Homebrew/brew/releases/tag/2.3.0

I replaced brew’s Library path (/usr/local/Homebrew/Library on my system) with a symlink to the Library directory from that release.

I modified the Library/Homebrew/cmd/update.sh script by putting an echo with a helpful message followed by “exit 0” before all other commands, in order to prevent any and all updates. This looks like it should stop automatic updates as well.

Brew seems to be functioning again after this.

For what it’s worth: One reasonable solution might be to put linux (arch would be my option) on those older macs and make them this way fast and viable another time … ? :wink: