Files
brew/docs/Troubleshooting.md
Mike McQuaid 68cd1d8861 Prefer reliable installed download tools
- Prefer newer working Homebrew or system Git and curl before a path
  suggestion, so overrides cannot displace suitable defaults. Share
  selection with Subversion when it is invoked.
- Cache probes against executable metadata and selection inputs to
  avoid repeated version checks. Read cache data without sourcing shell
  code and pass Bash's known curl version and path to Ruby for reuse.
- Preserve system curl suitability across cached and forced selections
  so legacy remote updates and certificate checks remain correct.
  Keep TLS verification enabled when a suitable custom curl is selected.
- Check Git and curl in `brew doctor`. Invalidate failed cached
  selections and reselect for one retry, refreshing Ruby's cached data
  so subsequent checks use the working replacement.
- Limit invalidation for command failures to explicit version checks.
  Refresh after installation and preserve ordinary download errors
  without retrying downloads or wrapping every invocation.
- Attempt installation when Git/curl are unsuitable or explicitly
  forced. Prevent recursive startup and recheck the result before
  reporting the minimum, observed versions and executable paths.
- Retain version floors and document paths as suggestions without
  promising a fixed selection order, allowing policy to evolve.
2026-10-24 17:20:37 +01:00

2.5 KiB

last_review_date
last_review_date
2026-07-18

Troubleshooting

Use this checklist before creating a Homebrew issue.

Update and diagnose

  1. Run brew update.
  2. Run brew update again so the first update cannot leave the failing command on an older Homebrew version.
  3. Run brew doctor and read every warning.
  4. Correct warnings that apply to the failing command.
  5. Retry the original command and keep its complete output.

brew doctor also checks the Git and curl executables. If a tool fails its version check, this clears its cached selection and retries once.

Do not apply destructive Git, ownership or permission changes from an old issue report without understanding which files they affect. See Common Issues for current recovery guidance.

Search existing reports

Search the tracker responsible for the failing component:

Also search Homebrew Discussions for support and related reports. The Discourse archive is no longer online; anything you find quoted from it is historical material and will contain outdated instructions.

Collect diagnostic information

For a formula installation or build failure, upload its logs:

brew gist-logs FORMULA

For other failures, collect:

brew config
brew doctor

Remove credentials, private repository URLs and other secrets before publishing terminal output. Do not omit warnings merely because they appear unrelated.

Create an issue

If the problem is neither resolved nor already reported, use the issue template in the appropriate repository:

Include the command, complete error, relevant brew config and brew doctor output and the brew gist-logs URL when available. Use a descriptive title that identifies the package, failure and operating system.

See Creating a Homebrew Issue for reporting expectations.