mirror of
https://github.com/Homebrew/brew.git
synced 2026-08-12 22:29:27 +04:00
162 lines
6.9 KiB
Markdown
162 lines
6.9 KiB
Markdown
---
|
|
last_review_date: "2026-07-18"
|
|
---
|
|
|
|
# Common Issues
|
|
|
|
This page covers recurring Homebrew problems with current, non-destructive diagnostic steps.
|
|
Start with the [Troubleshooting checklist](Troubleshooting.md) and read the full error before changing files or permissions.
|
|
|
|
* Table of Contents
|
|
{:toc}
|
|
|
|
## Running `brew`
|
|
|
|
### Missing Command Line Tools
|
|
|
|
A supported Homebrew development environment on macOS requires the Xcode Command Line Tools to build formulae from source.
|
|
Counterintuitively, installing Xcode alone is not enough: the Command Line Tools are a separate package.
|
|
Install them with:
|
|
|
|
```sh
|
|
xcode-select --install
|
|
```
|
|
|
|
Casks and bottles can be installed without developer tools, but `brew doctor` will still report the unsupported configuration.
|
|
|
|
### `bad interpreter: /usr/bin/ruby^M`
|
|
|
|
The Homebrew checkout has Windows line endings, usually because of a Git configuration setting.
|
|
Review GitHub's guide to [configuring Git line endings](https://docs.github.com/en/get-started/getting-started-with-git/configuring-git-to-handle-line-endings), then restore the Homebrew repository with `brew update-reset` as described below.
|
|
|
|
### Local changes prevent `brew update`
|
|
|
|
First inspect the repositories reported by `brew update`:
|
|
|
|
```sh
|
|
git -C "$(brew --repository)" status --short
|
|
git -C "$(brew --repository USER/REPOSITORY)" status --short
|
|
```
|
|
|
|
Repeat the second command for each tap named in the error, replacing `USER/REPOSITORY` with its tap name.
|
|
|
|
Unless you are a Homebrew or tap maintainer, any local changes are almost certainly unintentional and resetting is the right fix.
|
|
Preserve any work you intentionally made in Homebrew or a tap before continuing.
|
|
Do not run arbitrary `git clean` or `git reset --hard` commands copied from old issue reports.
|
|
|
|
After preserving intentional changes, reset only the affected repositories:
|
|
|
|
```sh
|
|
brew update-reset "$(brew --repository)"
|
|
brew update-reset "$(brew --repository USER/REPOSITORY)"
|
|
```
|
|
|
|
Run only the commands that apply, replacing `USER/REPOSITORY` with the affected tap name.
|
|
`brew update-reset` fetches and resets each specified repository to its upstream default branch.
|
|
It destroys uncommitted and committed local changes in those repositories, so review its help and preserve your work first.
|
|
Running `brew update-reset` without a repository resets Homebrew and every tap.
|
|
|
|
## Installation and downloads
|
|
|
|
### Git checkout or network failures
|
|
|
|
Errors such as `early EOF`, `index-pack failed` or a failed connection to GitHub usually indicate a network, proxy, mirror or filtering problem.
|
|
|
|
1. Confirm that GitHub and the download host are reachable from the same shell.
|
|
2. Check proxy environment variables, VPN software, firewalls and network-monitoring tools.
|
|
3. Run `brew config` and review any configured Git or bottle mirrors.
|
|
4. Retry from a stable network before reporting the problem.
|
|
|
|
If the failure is reproducible only with Homebrew, follow the [Troubleshooting checklist](Troubleshooting.md) and include the exact command and error output.
|
|
|
|
### `curl` configuration
|
|
|
|
A user `curl` configuration can change proxy, certificate, protocol or output behaviour.
|
|
Inspect `~/.curlrc` and any `CURL_*` environment variables instead of deleting the configuration blindly.
|
|
Temporarily test without custom settings, then correct the specific setting responsible for the failure.
|
|
|
|
The [curl exit-code reference](https://everything.curl.dev/cmdline/exitcode.html) and [libcurl error reference](https://curl.se/libcurl/c/libcurl-errors.html) explain common transport errors.
|
|
|
|
## After a macOS upgrade
|
|
|
|
A macOS upgrade may replace or invalidate the Command Line Tools and libraries used by installed formulae.
|
|
|
|
1. Install all available macOS updates.
|
|
2. Reinstall or update the Xcode Command Line Tools when `brew doctor` reports a problem.
|
|
3. Run `brew update`.
|
|
4. Run `brew upgrade` to rebuild or reinstall outdated formulae.
|
|
|
|
Do not create symlinks for missing versioned libraries.
|
|
Those links can hide an incomplete upgrade and cause incompatible software to load the wrong library.
|
|
|
|
## Multiple Homebrew installations
|
|
|
|
Migration Assistant or an x86_64 terminal on Apple Silicon can leave both `/usr/local` and `/opt/homebrew` installations active.
|
|
Check the current process architecture and executable path:
|
|
|
|
```sh
|
|
arch
|
|
command -v brew
|
|
brew --prefix
|
|
```
|
|
|
|
An Apple Silicon shell should normally report `arm64` and use `/opt/homebrew`.
|
|
Before removing an old Intel installation, run its own executable to record its packages:
|
|
|
|
```sh
|
|
arch -x86_64 /usr/local/bin/brew bundle dump --file=~/intel-Brewfile
|
|
```
|
|
|
|
Review the resulting `~/intel-Brewfile` and reproduce the installation under the correct prefix.
|
|
Follow the [official uninstallation instructions](FAQ.md#how-do-i-uninstall-homebrew) only after confirming the replacement works.
|
|
|
|
## Casks
|
|
|
|
### A cask download fails
|
|
|
|
Open the cask's homepage with `brew home <cask>` and test the vendor's download link.
|
|
|
|
* If the vendor's download also fails, report the failure to the vendor or investigate the network connection.
|
|
* If the vendor has published a different version or URL, [submit a cask update](https://github.com/Homebrew/homebrew-cask/blob/HEAD/CONTRIBUTING.md#updating-a-cask).
|
|
|
|
### A cask checksum does not match
|
|
|
|
Read the error to find the downloaded file, remove only that cached file and retry once.
|
|
If the checksum still differs, compare `brew info <cask>` with the vendor's current release.
|
|
|
|
A persistent mismatch usually means the cask is outdated or the vendor replaced an existing download.
|
|
Do not bypass the checksum.
|
|
Submit an update with evidence of the vendor's current version and download.
|
|
|
|
### Permission denied while installing a cask
|
|
|
|
Confirm that your user can write to the selected application directory and that `brew doctor` does not report ownership problems.
|
|
Use `--appdir` when you intentionally install applications somewhere other than `/Applications`.
|
|
|
|
Do not recursively change ownership or permissions for the entire Caskroom or Homebrew prefix without first identifying the incorrect path and its expected owner.
|
|
Include `ls -ld` output for the failing path when requesting help.
|
|
|
|
### The declared application or artifact is missing
|
|
|
|
The vendor may have renamed or moved files inside its archive.
|
|
Fetch the cask, inspect the archive and compare its layout with `brew cat <cask>`:
|
|
|
|
```sh
|
|
brew fetch CASK
|
|
brew cat CASK
|
|
```
|
|
|
|
Update the relevant artifact stanza to use the current path.
|
|
See the [Cask Cookbook artifact reference](Cask-Cookbook.md#at-least-one-artifact-stanza-is-also-required) and [submit a cask update](https://github.com/Homebrew/homebrew-cask/blob/HEAD/CONTRIBUTING.md#updating-a-cask).
|
|
|
|
## Restoring an installation
|
|
|
|
If `brew doctor` and the preceding checks do not identify the problem, create and review a package record before reinstalling:
|
|
|
|
```sh
|
|
brew bundle dump
|
|
```
|
|
|
|
Keep the generated `Brewfile` somewhere outside the Homebrew prefix.
|
|
Follow the [uninstallation](FAQ.md#how-do-i-uninstall-homebrew) and [installation](Installation.md) documentation, then restore selected packages with `brew bundle install`.
|