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

Homebrew使い方まとめ

More than 1 year has passed since last update.

概要

mac用のパッケージマネージャーであるHomebrewのコマンド一覧です。
自分用なので見にくいかもしれません。

インストール

javaとCommand Line Toolsが必要。

terminalで

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

zshのコマンド補完設定

"/usr/local/Library/Contributions/" 配下にbashやzsh用のbrewコマンドの補完関数が追加される。それをzshに読み込ませる。

cd /usr/local/share/zsh/site-functions
ln -s ../../../Library/Contributions/brew_zsh_completion.zsh _brew

用語

formula

Homebrew では、いわゆるパッケージ名のことを formula と呼ぶ。

keg

/usr/local/Cellar/keg/version/

Cellar

デフォルトは /usr/local/Cellar

インストールしたパッケージの実体は /usr/local/Cellar にあり、/usr/local/bin/ や /usr/local/lib/ にシンボリックリンクが作られる。

config.log

/Users/izuku/Library/Logs/Homebrew/php55にある

コマンド

インストール

brew install formula

検索

'/'で囲むと正規表現で検索できる。

brew search text
brew search /text/

一覧

インストールされたformulaの一覧を表示

brew list
brew -v list

アンインストール

brew uninstall formula

更新のあるformulaを見る

brew outdated

古いバージョン(outdated)のformulaを削除

brew cleanup
brew cleanup -n #何が消されるのか一覧を表示する。

Homebrewとformulaをアップデートする

brew update
brew upgrade (formula|無しですべて) #更新があるパッケージを再ビルドする

formulaの情報を見る

brew info formula

依存関係をみる。

brew deps formula
brew deps --tree formula   #tree式

formulaの有効化無効化

brew link formula
brew unlink formula

brewに問題がないか調べる。

brew doctor

Homebrewprefixからデッドシンボリックリンクを削除する。

brew prune

tap/untap

brew tap ユーザー名/リポジトリ名
brew untap ユーザー名/リポジトリ名 #このリポジトリでインストールしたformulaは先に削除しておく

tapしたリポジトリの一覧を表示する

brew tap

brewへのpull requestをpullする

brew pull アドレス

brewへのpull requestが出されているものをインストール出来る?

設定

gitをfast-forward onlyにする

一旦/usr/localをいじるかなにかすると、その後updateごどにマージコミットをしなければならずとてもめんどくさいことになります。なので、fast-forward onlyにしておくと邪魔なマージコミットを除けます。(git version>=2.0.0)

git config --global pull.ff only

もしfatal: Not possible to fast-forward, aborting.というエラーが出てきた場合、localをresetしてリモートと同じ状態にします。

cd `brew --prefix`
git fetch origin
git reset --hard origin/master

拡張

brew-cask

macのディスクトップアプリもbrewでインストールできるようになる拡張。

インストール

最近比較的簡単にインストール出来るようになったらしい。

brew tap caskroom/cask

使い方

brew cask install formula
brew cask upgrade
brew cask list
などなど。

大体brewコマンドと同じように使える。
しかし、brew upgradeに相当するコマンドがないようなので、次に紹介するbrew-fileを使ってupgradeしている。

brew cask install formula

でそのformulaはアップデートできるが、この時前のformulaとは別のディレクトリに出来るので、それは手動で消すかuninstallしてからinstallする必要がある。

こういうワンライナーもある。

brew-file

brewの設定やインストールしたformulaの一覧を管理できるので移行に便利。
まあ移行なんでほとんどしないからcaskのupgradeに使っている。

インストール

brew install rcmdnk/file/brew-file

.zshrcや.bash_profileに以下を追記。

if [ -f $(brew --prefix)/etc/brew-wrap ];then
  source $(brew --prefix)/etc/brew-wrap
fi

これで、brew installなどをすると、~/.brewfile/Brewfileにパッケージリストを作ってくれるらしい。

使い方

基本的にcask_upgradeしか使ってない。

brew file cask_upgrade -C

でインストールしているcaskのupgardeが出来る。(-Cをつけるとcleanupもしてくれる。)

また、以下のコマンドで、インストールcaskの数や、/Application/以下にあるアプリでcaskでもインストール出来るアプリの数を確認できます。

brew file casklist

普通の使い方

最初に現在の状態を書き出すために以下を実行。

brew file init

gitレポジトリでBrewfileを管理出来るらしい。

brewfileの中身を表示

brew file cat

brewfileの内容をインストール

brew file install

トラブルシューティング

  • Xcodeをアップデートするとbrew upgradeできなくなった。
    • xcodeはappstoreで更新しただけではインストールされてないので一度起動しCommand Line Tools をインストールする。
  • brew updateするとマージできないと怒られる。

    • いらないリポジトリがtapしたままだった。
    • cd $(brew --prefix) && git fetch origin && git reset --hard origin/masterする
    • 最悪そのformulaを再インストールする
    • dependencyの問題は一回--universalオプションを付けて再インストールしてみる。
    • 関連のものをrelinkするのも手
  • あるはずのformulaが無いと言われたら。

    • brew tapした中にあるなら、一度untapして再度tapしてみる。
  • insufficient permission for adding an object to repository database .git/objectsと出たら

    • ↑のマージ出来なかった時と同様にreset --hardをする。
vintersnow
情熱のない大人になってしまった
http://vintersnow.github.io/
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
ユーザーは見つかりませんでした