- 公式ドキュメント
- アップデートしたいときにこれだけやれば良いコマンド
- brew コマンド
- 補足1:Homebrew の仕組み,Homebrew で使われる用語
- 補足2:Homebrew をインストール後にパスを通す
- 参考
- 更新情報
macOS 用パッケージ管理マネージャ Homebrew の使い方(コマンド)をネットでかき集めてまとめ,よく使うコマンドのチートシートを書いてみた.「このコマンドは追加した方が良い」や間違い等あれば気軽にご指摘を.
とりあえず Homebrew のパッケージ群をアップデートしたい方はこちらへ.Homebrew の仕組みについて興味のある方はこちらへ(ほんの少しだけだけど...).
※ 筆者の開発環境
- macOS Mojave 10.14.4
- Homebrew 2.1.3
公式ドキュメント
Homebrew 公式ドキュメント
アップデートしたいときにこれだけやれば良いコマンド
- Homebrew 自身
- Homebrew でインストールしたパッケージ全部
を一遍にアップデートしたいときは以下のコマンドをターミナルで実行すれば良い.
brew upgrade brew cleanup
brew cleanup
が自動で一定期間ごとに実行されるという記述を見たのだけどどうなんだろう.とりあえずその都度 brew cleanup
を実行しておけば間違いない?
brew コマンド
formula
は,ここではパッケージ名だと考えれば良い.formula の意味については補足で解説している.
パッケージのインストール関連
パッケージのインストール
brew install [formula]
パッケージの検索
/
で囲むと正規表現でパッケージ名を検索できる.
brew search [formula] # brew -S [search-word] と同じ brew search /[formula]/
インストールしたパッケージの管理
インストールしたパッケージ一覧を表示
--versions
オプションを付けるとパッケージのバージョンも出力される
brew list brew list --versions
パッケージのアンインストール
brew uninstall [formula]
更新のあるパッケージを見る
brew outdated
古いバージョン(outdated)のパッケージを消去
--dry-run
or -n
オプションをつけると brew cleanup
のリハーサルのようなことができる(何が消えるかを明示してくれる).
brew cleanup brew cleanup -n # 何が消されるのか一覧を表示.--dry-run オプションでも同じ.
Homebrew では,古いバージョンのパッケージは明示的に削除しない限り残り続けることに注意(もしかしたら昔の話かもしれない).
パッケージの情報を表示
brew info [formula]
パッケージの依存関係を表示
brew deps --tree [formula]
でパッケージの依存関係をツリー表示できる.
brew deps [formula] brew deps --tree [formula]
ツリー表示のコマンドは,以前は brew depstree [formula]
だったので注意(depstree
コマンドは無くなった).
アップデート関連
アップデート関連では,
brew update
brew upgrade
の 2 つがあることに注意.
パッケージのバージョンによる依存関係とか気にしなければいけない場合を除いて brew upgrade
使っとけば OK な気はする.
Homebrew 自身のアップデート:brew update
brew update
Homebrew の自身のアップデート + Homebrew でインストールしたパッケージをアップデート:brew upgrade
brew upgrade
:全てのパッケージをアップデートbrew upgrade [formula]
:指定したパッケージのアップデート
brew upgrade brew upgrade [formula]
brew upgrade
に関して,公式ドキュメントには下記のような記述があった(2019/5 現在).
If formula are given, upgrade only the specified brews (unless they are pinned; see pin, unpin).
Unless HOMEBREW_NO_INSTALL_CLEANUP is set, brew cleanup will be run for the upgraded formulae or, every 30 days, for all formulae.
「環境変数 HOMEBREW_NO_INSTALL_CLEANUP
を設定していない場合,brew cleanup
が 30 日ごとに実行される」で合ってる?もし解釈が合ってれば自動で brew cleanup
を実行されて古いパッケージは消去されることになってるということでいいのだろうか(ユーザが定期的に実行しなくても良くて,パッケージ管理は brew upgrade
だけで十分になる?).
Homebrew の情報を表示するコマンド
Homebrew のバージョン
brew --version
Homebrew 本体の詳細情報
brew --config
出力例
HOMEBREW_VERSION: 2.1.3 ORIGIN: https://github.com/Homebrew/brew HEAD: 099b047349d4ec67519206f15401d0e1cf90e953 Last commit: 18 hours ago Core tap ORIGIN: https://github.com/Homebrew/homebrew-core Core tap HEAD: 86b551915fb928f689813278cf670c181c7442df Core tap last commit: 3 hours ago HOMEBREW_PREFIX: /usr/local CPU: quad-core 64-bit broadwell Homebrew Ruby: 2.3.7 => /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/bin/ruby Clang: 10.0 build 1001 Git: 2.20.1 => /Library/Developer/CommandLineTools/usr/bin/git Curl: 7.54.0 => /usr/bin/curl macOS: 10.14.4-x86_64 CLT: 10.2.1.0.1.1554506761 Xcode: N/A CLT headers: 10.2.1.0.1.1554506761 XQuartz: 2.7.11 => /opt/X11
Homebrew の環境情報
ビルドに使われるコンパイラなどの情報が出力される.
brew --env
出力例
HOMEBREW_CC: clang HOMEBREW_CXX: clang++ MAKEFLAGS: -j4 CMAKE_PREFIX_PATH: /usr/local CMAKE_INCLUDE_PATH: /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include/libxml2:/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/OpenGL.framework/Versions/Current/Headers CMAKE_LIBRARY_PATH: /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/OpenGL.framework/Versions/Current/Libraries PKG_CONFIG_LIBDIR: /usr/lib/pkgconfig:/usr/local/Homebrew/Library/Homebrew/os/mac/pkgconfig/10.14 HOMEBREW_GIT: git HOMEBREW_SDKROOT: /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk ACLOCAL_PATH: /usr/local/share/aclocal PATH: /usr/local/Homebrew/Library/Homebrew/shims/mac/super:/usr/bin:/bin:/usr/sbin:/sbin
Homebrew の環境診断
brew doctor # Your system is ready to brew.
その他(使用頻度低め)
リポジトリのタップ,アンタップ
brew tapとは公式以外のリポジトリをフォーミュラとしてHomebrewに追加するもので、brewのもとでinstall,uninstall,updateなどが行えます。もちろん自分が公開しているものも簡単に追加できます。
Homebrew 上で使えるようになっていないパッケージをレポジトリから直接インストールして brew で管理できるようにするためのコマンド.
brew tap user/repository brew untap user/repository
シンボリックリンクの作成と消去
パッケージがインストールされたときにシンボリックリンクが作成されないものもある.その対処法としてbrew link
がある.--force
オプションを付けて実行すると,シンボリックリンクを上書きすることができる.
brew link [formula] brew unlink [formula]
補足1:Homebrew の仕組み,Homebrew で使われる用語
Homebrew の仕組み,公式ドキュメントで使われる用語に関して少しだけまとめた.
「Homebrew」という語は「ビールを自家醸造して保存,飲む」を意味し,「ユーザが自らパッケージをビルドして使用する」のメタファーとなっている.
Fomula
パッケージの定義(ビルド方法,手順が書かれた Ruby スクリプト)のこと.パッケージは Formula に従ってインストールされる(Formula は/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula
に置かれる).拡張子.rb
を除いた部分がパッケージ名として利用される.
ex)/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/foo.rb
(パッケージ名はfoo
となる)Keg
Formula によってインストールされるさまざまなファイル(パッケージのバイナリファイル,ライセンスファイル,README など)の保存先を示すパス.Cellar 以下は/formula名/version
という構成になっている.
ex)/usr/local/Cellar/foo/0.1
Cellar
Keg がインストールされるパス名,つまり,インストールしたパッケージが/usr/local/Cellar/
に入れられる.インストールと同時に/usr/local/bin/
や/usr/local/lib/
にシンボリックリンクが作られ,ターミナルからそれぞれのパッケージのコマンドが実行できるようになる.ワインセラーとかの「セラー cellar」が由来.
その他の用語を知りたい方は公式ドキュメントへ.
Homebrew の仕組みに関しては以下の記事が参考になった.
補足2:Homebrew をインストール後にパスを通す
- Homebrew でインストールしたパッケージ
- Mac に最初から入っていたパッケージ
の二つのパッケージが存在する場合,Homebrew でインストールした方を使うようにするために ~/.bash_profile
に以下を追記する必要がある.ここでは,コマンド検索パスの優先順位を,Homebrew によって作られたシンボリックリンク(コマンド)を優先するように設定している.ここらへんいつかちゃんと勉強したい...
export PATH="/usr/local/bin":$PATH
参考
- homebrewの更新はbrew upgrade --cleanupだけでよくなっている(2019/1)
- brewのupdateとupgradeの違い(Qiita, 2018/9)
- Homebrew使い方まとめ(Qiita,2016/10)
- Homebrewメモ(Qiita,2014/1)
- Homebrewの使い方
更新情報
- 2019/05/23 記事投稿