Help us understand the problem. What is going on with this article?

今さらだけどHomebrewのコマンドをちゃんと理解して使おう

はじめに

本稿は、今さらではありますが...
分かってるようで実はわかってない?
Homebrewの各コマンドの意味について
復習がてら整理していきます:writing_hand:

Homebrewとは?

参考wiki

https://ja.wikipedia.org/wiki/Homebrew_(%E3%83%91%E3%83%83%E3%82%B1%E3%83%BC%E3%82%B8%E7%AE%A1%E7%90%86%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0)

Homebrewの各コマンドの概要を整理する

(アン)インストール系

  • brew install
  • brew uninstall

一覧にインストール済みパッケージを表示する

  • brew list

各ツールの起動状況確認

  • brew services list

brew関連の問題検出したい

  • brew doctor

brewに関わるローカルの情報を確認したい

  • brew --config

アップデート系

  • brew update
  • brew upgrade

brewでインストールしたパッケージのバージョンを知りたい

  • brew info パッケージ名

パッケージのバージョンを切り替えたい

  • brew switch パッケージ名 バージョン

ゴミデータを消してローカルPCの空き容量を増やしたい

  • brew cleanup

brew install

  • パッケージをインストールする
$ brew install vim

brew uninstall

  • パッケージをアンインストールする
$ brew uninstall vim

brew list

  • これまで brew install したものを一覧で表示する
$ brew list
autoconf        imagemagick     nodebrew        redis
awscli          jpeg            openssl         ruby
fish            libtiff         perl            sqlite
fontconfig      libtool         phantomjs       tig
freetype        libxml2         pkg-config      vim
gd              libyaml         postgresql      webp
gdbm            mongodb         python          xz
graphviz        mysql           python3         yarn
htop            nkf             rbenv
icu4c           node            readline

brew services list

  • brewのパッケージの起動状況を一覧で表示する
  • started になって入れば無事に起動している状態
$ brew services list
Name              Status  User     Plist
elasticsearch     started ユーザー名 /Users/ユーザー名/Library/LaunchAgents/homebrew.mxcl.elasticsearch.plist
mongodb           started ユーザー名 /Users/ユーザー名/Library/LaunchAgents/homebrew.mxcl.mongodb.plist
mysql             stopped
postgresql        started ユーザー名 /Users/ユーザー名/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
redis             started ユーザー名 /Users/ユーザー名/Library/LaunchAgents/homebrew.mxcl.redis.plist

brew doctor

  • brew installに関わる諸問題を検出してくれる
$ brew doctor # 実行結果の例

Please note that these warnings are just used to help the Homebrew maintainers
with debugging if you file an issue. If everything you use Homebrew for is
working fine: please don't worry or file an issue; just ignore this. Thanks!

Warning: Unbrewed dylibs were found in /usr/local/lib.
If you didn't put them there on purpose they could cause problems when
building Homebrew formulae, and may need to be deleted.

Unexpected dylibs:
  /usr/local/lib/libwkhtmltox.0.12.5.dylib

Warning: Unbrewed header files were found in /usr/local/include.
If you didn't put them there on purpose they could cause problems when
building Homebrew formulae, and may need to be deleted.

brew --config

  • Homebrewに関わるローカルの設定を確認する
$ brew --config
HOMEBREW_VERSION: 1.8.0
ORIGIN: https://github.com/Homebrew/brew
HEAD: fdd8e9b7cf1e53322492e1e90f685c19bdfde506
Last commit: 9 days ago
Core tap ORIGIN: https://github.com/Homebrew/homebrew-core
Core tap HEAD: b7bc467b9e1cc8ba4a43cd355d1a6ca16999f0b6
Core tap last commit: 14 hours ago
HOMEBREW_PREFIX: /usr/local
CPU: quad-core 64-bit kabylake
Homebrew Ruby: 2.3.7 => /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/bin/ruby
Clang: 10.0 build 1000
Git: 2.17.1 => /Applications/Xcode.app/Contents/Developer/usr/bin/git
Curl: 7.54.0 => /usr/bin/curl
Java: 1.8.0_181
macOS: 10.13.6-x86_64
CLT: 10.0.0.0.1.1535735448
Xcode: 10.0

brew update

HomebrewのFormulaeとHomebrew自体をアップデートしてくれる

formulae とはHomebrewにおけるビルド方法・手順が書かれたスクリプトのこと

$ brew update
To restore the stashed changes to /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core run:
  'cd /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core && git stash pop'
Updated 3 taps (homebrew/cask-versions, homebrew/core and homebrew/cask).
==> Updated Formulae
vim asciidoc            bzt                 hugo                ipython             presto        tox                 wireguard-tools
advancemame         beast               circleci            imageworsener       kakoune             pwntools            vips                xmrig
app-engine-java     binutils            fd                  imapfilter          platformio          skafos              whois               youtube-dl

brew upgrade

  • インストールしたパッケージをアップデートしてくれる(更新があるパッケージを再ビルド)
$ brew upgrade awscli
Updating Homebrew...
==> Upgrading 1 outdated package:
awscli 1.14.10 -> 1.16.40
==> Upgrading awscli
==> Downloading https://homebrew.bintray.com/bottles/awscli-1.16.40.high_sierra.bottle.tar.gz
######################################################################## 100.0%
==> Pouring awscli-1.16.40.high_sierra.bottle.tar.gz
==> Caveats
The "examples" directory has been installed to:
  /usr/local/share/awscli/examples

Bash completion has been installed to:
  /usr/local/etc/bash_completion.d

zsh completions and functions have been installed to:
  /usr/local/share/zsh/site-functions
==> Summary
🍺  /usr/local/Cellar/awscli/1.16.40: 4,832 files, 43.9MB

brew info

  • インストールされているパッケージのバージョンなどの情報が知りたいとき
$ brew info nodebrew

brew switch

  • インストールされているツールの複数のバージョンを切り替えたい時
  • brew infoとセットで使えば良い
$ brew info libyaml
libyaml: stable 0.2.1 (bottled)
YAML Parser
https://github.com/yaml/libyaml
/usr/local/Cellar/libyaml/0.1.7 (9 files, 299.8KB) *
  Poured from bottle on 2017-12-18 at 15:54:00
/usr/local/Cellar/libyaml/0.2.1 (9 files, 298.9KB)
  Poured from bottle on 2018-10-26 at 12:32:46
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/libyaml.rb
==> Dependencies
Build: autoconf , automake , libtool 
==> Analytics
install: 80,195 (30 days), 252,949 (90 days), 881,478 (365 days)
install_on_request: 24,942 (30 days), 80,537 (90 days), 273,017 (365 days)
build_error: 0 (30 days) # ここのエラーは出ていても動作には大きな影響がない

↑↑↑
バージョンが0.2.1であることがわかったが、ローカル開発環境では、0.1.7を使いたい!
そんな時にbrew switch:thumbsup:

brew switch libyml 0.1.7 # これで0.1.7が有効になる

brewでインストール出来る一覧を知りたい場合

※ HOMEBREW_VERSION: 1.8.0時点のフォルダ構成で実行

brew update コマンドでは、
/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula ディレクトリに対して、
Homebrewのgithubリポジトリの内容を git pullしてFormulaeというインストールレシピを最新にする模様 :pencil:

※ 紛らわしいけど、Formulae(インストールレシピ)の入ってるディレクトリ名はeの抜けたFormulaなので注意

# homebrew-core/Formulaに移動(lsを叩くとbrewでインストールできるパッケージが並ぶ)
$ cd /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula
$ ls # 以下の一覧は brew installしたいときは、末尾の.rbより前の部分を引数に指定する(brew install libyamlのような形で)
apple-gcc42.rb                       gdb.rb                               libxc.rb                             rogue.rb
appledoc.rb                          gdbm.rb                              libxdg-basedir.rb                    roll.rb
appscale-tools.rb                    gdcm.rb                              libxdiff.rb                          rolldice.rb
apr-util.rb                          gdk-pixbuf.rb                        libxkbcommon.rb                      rom-tools.rb
apr.rb                               gdl.rb                               libxlsxwriter.rb                     root.rb
apt-dater.rb                         gdm.rb                               libxmi.rb                            roswell.rb
aptly-completion.rb                  gdmap.rb                             libxml++.rb                          roundup.rb
aptly.rb                             gdnsd.rb                             libxml++3.rb                         rp.rb
aqbanking.rb                         gdrive.rb                            libxml2.rb                           rpcgen.rb
arabica.rb                           gdub.rb                              libxmlsec1.rb                        rpg.rb
arangodb.rb                          geant4.rb                            libxmp-lite.rb                       rpl.rb
aravis.rb                            gearboy.rb                           libxmp.rb                            rpm.rb
arcade-learning-environment.rb       gearman.rb                           libxo.rb                             rpm2cpio.rb
archey.rb                            gearsystem.rb                        libxslt.rb                           rrdtool.rb
archi-steam-farm.rb                  geckodriver.rb                       libxspf.rb                           rsnapshot.rb
archivemail.rb                       gecode.rb                            libyaml.rb                           rssh.rb
archivemount.rb                      gedit.rb                             libyubikey.rb                        rsstail.rb
argon2.rb                            geeqie.rb                            libzdb.rb                            rst-lint.rb
argp-standalone.rb                   gegl.rb                              libzip.rb                            rswift.rb
argtable.rb                          gem-completion.rb                    libzzip.rb                           rsync-time-backup.rb
argus-clients.rb                     genact.rb                            lifelines.rb                         rsync.rb
argus.rb                             genders.rb                           lightning.rb                         rsyslog.rb
argyll-cms.rb                        generate-json-schema.rb              lighttpd.rb                          rt-audio.rb
aria2.rb                             genext2fs.rb                         lilv.rb                              rtags.rb
ark.rb                               gengetopt.rb                         lincity-ng.rb                        rtf2latex2e.rb
arm-linux-gnueabihf-binutils.rb      genometools.rb                       link-grammar.rb                      rtmidi.rb
armadillo.rb                         genstats.rb                          linkerd.rb                           rtmpdump.rb
armor.rb                             geocode-glib.rb                      linklint.rb                          rtptools.rb
arp-scan.rb                          geogram.rb                           links.rb                             rtv.rb
arp-sk.rb                            geographiclib.rb                     liquibase.rb                         rubberband.rb
arpack.rb                            geoip.rb                             liquid-dsp.rb                        ruby-build.rb
arping.rb                            geoipupdate.rb                       liquidprompt.rb                      ruby-completion.rb
arpoison.rb                          geomview.rb                          liquigraph.rb                        ruby-install.rb
arss.rb                              geos.rb                              little-cms.rb                        ruby.rb
artifactory.rb                       geoserver.rb                         little-cms2.rb                       ruby@1.8.rb
arx-libertatis.rb                    gerbv.rb                             livestreamer.rb                      ruby@2.0.rb
arx.rb                               gerrit-tools.rb                      lldpd.rb                             ruby@2.2.rb
ascii.rb                             get-flash-videos.rb                  llnode.rb                            ruby@2.3.rb
asciidoc.rb                          get_iplayer.rb                       llvm.rb                              runcocoa.rb
asciidoctor.rb                       getdns.rb                            llvm@3.9.rb                          runit.rb
asciidoctorj.rb                      getmail.rb                           llvm@4.rb                            rush.rb
asciinema.rb                         gettext.rb                           llvm@5.rb                            rust.rb
asciiquarium.rb                      getxbook.rb                          llvm@6.rb                            rustc-completion.rb
asciitex.rb                          gexiv2.rb                            lm4tools.rb                          rustup-init.rb
asdf.rb                              gf-complete.rb                       lmdb.rb                              rxvt-unicode.rb
asio.rb                              gflags.rb                            lmod.rb                              ry.rb

<中略>

brew cleanup

brew は古くなった formula を自動的に消してくれないので、使い続けるほどにインストールしたパッケージが積もってディスクを圧迫する場合があるようです。  
そこで brew cleanup が大活躍です!
このコマンドを実行することでbrewが管理している古いバージョンを消したり、ダウンロードしたファイルのキャッシュを消したりしてくれます!
Macのお掃除によってストレージ容量が増えて超便利というわけです :relaxed:

$ brew cleanup
Removing: /usr/local/Cellar/awscli/1.14.10... (4,612 files, 41.3MB)
Warning: Skipping fontconfig: most recent version 2.13.1 not installed
Warning: Skipping freetype: most recent version 2.9.1 not installed
Removing: /usr/local/Cellar/gdbm/1.13... (19 files, 553.9KB)
Warning: Skipping htop: most recent version 2.2.0 not installed
Removing: /Users/fuqda/Library/Logs/Homebrew/yarn... (100B)
Removing: /Users/fuqda/Library/Logs/Homebrew/fish... (64B)
Removing: /Users/fuqda/Library/Logs/Homebrew/rbenv... (64B)
<中略>
==> This operation has freed approximately 1.3GB of disk space.

brew cleanupの注意点:古いformulaが削除されるとマズい場合はやらないこと!

例えば、古いバージョンと新しいバージョンのパッケージを使い分ける必要がある場合に無闇にbrew cleanupすると、古いバージョンのformulaがないために、brew switchでバージョンのswitchが出来なくなるので注意が必要です:sweat:

最後に

普段何気なく使っているHomebrewですが、自分自身としてブラックボックスな部分が多いツールだったので、自分なりに理解するため投稿させて頂きました。
間違いなどありましたら、ご指摘頂ければ幸いです:bow_tone1:

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした