Homebrew updates automatically to newer macOS/Xcode versions and software because it’s designed for the latest environments, dropping old support for simplicity and security; if your macOS is old, Homebrew builds from source (slower, potentially buggy) or stops working as “bottles” (pre-built binaries) aren’t available, causing upgrades to fetch newer dependencies that break compatibility, which is expected behavior, not a bug, on unsupported systems.
Key Reasons for Updates
- macOS Support: Homebrew focuses on the latest macOS versions (usually the latest three), dropping support for older ones due to time, funding, and technical challenges with older Apple tools (Xcode, Command Line Tools).
- Dependency Chaining: Homebrew doesn’t support mixing old and new package versions; when you install something new, it upgrades dependencies to the latest tested combination, which can break older software.
- Building from Source: On unsupported macOS, Homebrew can’t use pre-compiled “bottles,” forcing it to build from source, which is slow and prone to failure if system libraries are outdated.
- Security & Stability: Maintaining support for ancient OS versions is difficult, so Homebrew prioritizes newer environments for security and to avoid build issues.
What to Do
- Upgrade macOS: The best solution is to update your macOS to a supported version.
- Control Updates (If on Supported macOS): Use
brew update --autoor setHOMEBREW_NO_AUTO_UPDATE=1in your environment if you want to stop automatic package upgrades while keeping Homebrew itself updated. - Deal with Warnings: If you see warnings about unsupported macOS, it’s expected; you might need to manually install specific Command Line Tools from Apple’s developer site to get older software working.
Solution:
homebrew reset
