Update RBI files for parser.
[Homebrew/brew.git] / docs / Tips-N'-Tricks.md
blob85dde92c8629db5a4479b50101eb2ac6a3fd5494
1 ---
2 last_review_date: "1970-01-01"
3 ---
5 # Tips and Tricks
7 ## Install previous versions of formulae
9 Some formulae in `homebrew/core` are made available as [versioned formulae](Versions.md) using a special naming format, e.g. `gcc@9`. If the version you're looking for isn't available, consider using `brew extract`.
11 ## Quickly remove something from Homebrew's prefix
13 ```sh
14 brew unlink <formula>
15 ```
17 This can be useful if a package can't build against the version of something you have linked into Homebrew's prefix.
19 And of course, you can simply `brew link <formula>` again afterwards!
21 ## Pre-download a file for a formula
23 Sometimes it's faster to download a file via means other than the strategies that are available as part of Homebrew. For example, Erlang provides a torrent that'll let you download at 4–5× compared to the normal HTTP method.
25 Downloads are saved in the `downloads` subdirectory of Homebrew's cache directory (as specified by `brew --cache`, e.g. `~/Library/Caches/Homebrew`) and renamed as `<url-hash>--<formula>-<version>`. The command `brew --cache --build-from-source <formula>` will print the expected path of the cached download, so after downloading the file, you can run `mv the_tarball "$(brew --cache --build-from-source <formula>)"` to relocate it to the cache.
27 You can also pre-cache the download by using the command `brew fetch <formula>` which also displays the SHA-256 hash. This can be useful for updating formulae to new versions.
29 ## Install stuff without the Xcode CLT
31 ```sh
32 brew sh          # or: eval "$(brew --env)"
33 gem install ronn # or c-programs
34 ```
36 This imports the `brew` environment into your existing shell; `gem` will pick up the environment variables and be able to build. As a bonus, `brew`'s automatically determined optimization flags are set.
38 ## Install only a formula's dependencies (not the formula)
40 ```sh
41 brew install --only-dependencies <formula>
42 ```
44 ## Use the interactive Homebrew shell
46 ```console
47 $ brew irb
48 ==> Interactive Homebrew Shell
49 Example commands available with: `brew irb --examples`
50 irb(main):001:0> Formulary.factory("ace").methods - Object.methods
51 => [:install, :test, :test_defined?, :sbin, :pkgshare, :elisp,
52 :frameworks, :kext_prefix, :any_version_installed?, :etc, :pkgetc,
53 ...
54 :on_macos, :on_linux, :debug?, :quiet?, :verbose?, :with_context]
55 irb(main):002:0>
56 ```
58 ## Hide the beer mug emoji when finishing a build
60 ```sh
61 export HOMEBREW_NO_EMOJI=1
62 ```
64 This sets the `HOMEBREW_NO_EMOJI` environment variable, causing Homebrew to hide all emoji.
66 The beer emoji can also be replaced with other character(s):
68 ```sh
69 export HOMEBREW_INSTALL_BADGE="☕️ 🐸"
70 ```
72 ## Migrate a Homebrew installation to a new location
74 Running `brew bundle dump` will record an installation to a `Brewfile` and `brew bundle install` will install from a `Brewfile`. See `brew bundle --help` for more details.
76 ## Appoint Homebrew Cask to manage a manually-installed app
78 Run `brew install --cask` with the `--adopt` switch:
80 ```console
81 $ brew install --cask --adopt textmate
82 ==> Downloading https://github.com/textmate/textmate/releases/download/v2.0.23/TextMate_2.0.23.tbz
83 ...
84 ==> Installing Cask textmate
85 ==> Adopting existing App at '/Applications/TextMate.app'
86 ==> Linking Binary 'mate' to '/opt/homebrew/bin/mate'
87 🍺  textmate was successfully installed!
88 ```
90 ## Editor plugins
92 ### Visual Studio Code
94 - [Brewfile](https://marketplace.visualstudio.com/items?itemName=sharat.vscode-brewfile) adds Ruby syntax highlighting for [Homebrew Bundle](https://github.com/Homebrew/homebrew-bundle) `Brewfile`s.
96 - [Brew Services](https://marketplace.visualstudio.com/items?itemName=beauallison.brew-services) is an extension for starting and stopping Homebrew services.
98 ### Sublime Text
100 - [Homebrew-formula-syntax](https://github.com/samueljohn/Homebrew-formula-syntax) can be installed with Package Control in Sublime Text 2/3, which adds highlighting for inline patches.
102 ### Vim
104 - [brew.vim](https://github.com/xu-cheng/brew.vim) adds highlighting to inline patches in Vim.
106 ### Emacs
108 - [homebrew-mode](https://github.com/dunn/homebrew-mode) provides syntax highlighting for inline patches as well as a number of helper functions for editing formula files.
110 - [pcmpl-homebrew](https://github.com/hiddenlotus/pcmpl-homebrew) provides completion for emacs shell-mode and eshell-mode.
112 ## macOS Terminal.app: Enable the "Open man Page" contextual menu item
114 In the macOS Terminal, you can right-click on a command name (like `ls` or `tar`) and pop open its manpage in a new window by selecting "Open man Page".
116 Terminal needs an extra hint on where to find manpages installed by Homebrew because it doesn't load normal dotfiles like `~/.bash_profile` or `~/.zshrc`.
118 ```sh
119 sudo mkdir -p /usr/local/etc/man.d
120 echo "MANPATH /opt/homebrew/share/man" | sudo tee -a /usr/local/etc/man.d/homebrew.man.conf
123 If you're using Homebrew on macOS Intel, you should also fix permissions afterwards with:
125 ```sh
126 sudo chown -R "${USER}" /usr/local/etc
129 ## Use a caching proxy or mirror for Homebrew bottles
131 You can configure Homebrew to retrieve bottles from a caching proxy or mirror.
133 For example, in JFrog's Artifactory, accessible at `https://artifacts.example.com`,
134 configure a new "remote" repository with `homebrew` as the "repository key" and `https://ghcr.io` as the URL.
136 Then, set these environment variables for Homebrew to retrieve from the caching proxy.
138 ```sh
139 export HOMEBREW_ARTIFACT_DOMAIN=https://artifacts.example.com/artifactory/homebrew/
140 export HOMEBREW_ARTIFACT_DOMAIN_NO_FALLBACK=1
141 export HOMEBREW_DOCKER_REGISTRY_BASIC_AUTH_TOKEN="$(printf 'anonymous:' | base64)"