Homebrewが壊れたら
はじめに
OS X のパッケージマネージャーといえば、もちろん Homebrew だ。
Homebrew — OS X用パッケージマネージャー
開発ツールの管理を非常に便利に行うことができる。
ところが、この Homebrew、ふとした拍子によく壊れる (気がする) 。
特に、OS のアップデートなどで動かなくなるといったケースが散見されるようだ。
今回も次のようなエラーが表示され動かなくなってしまった。
MacBookAir:homebrew admin$ brew update
/usr/local/bin/brew: /usr/local/src/homebrew/Library/brew.rb: /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby: bad interpreter: No such file or directory
/usr/local/bin/brew: line 21: /usr/local/src/homebrew/Library/brew.rb: Undefined error: 0
もちろん、brew.rbなんて弄った覚えはないのだが。
Homebrew の構成
Homebrew は通常、
/usr/local/src/homebrew
に必要なファイルがインストールされる。
実行ファイルである /usr/local/bin/brew も、この src/homebrew 以下のファイルへのシンボリックリンクとなっている。
ということは、この src/homebrew 以下のファイルを正しい状態へ戻してやれば直るはずである。
そして、src/homebrew は Git によってバージョン管理されている。
つまり、個別にファイルを修正する必要はなく、ファイルが壊れたなら git コマンドで HEAD に戻す、あるいはアップデートが必要なら remote から最新バージョンにしてやれば良いということになる。
直す
何はともあれ、まずは念のため git reset をかけておく。
MacBookAir:homebrew admin$ git reset --hard HEAD
次にリポジトリの情報を確認する。
MacBookAir:homebrew admin$ cat .git/config
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
autocrlf = false
[remote "origin"]
url = https://github.com/Homebrew/homebrew.git
fetch = +refs/heads/*:refs/remotes/origin/*
見ての通り、Github のリポジトリが origin として登録されている。
そこで、ここから pull を行う。
MacBookAir:homebrew admin$ git pulll origin master
詳細は割愛するが、大量の更新ファイルがあったようだ。
git log を確認すると、かなりの頻度で更新されているので、現状の OS に合わせたアップデートが必要だったようだ。
MacBookAir:homebrew admin$ tig
2015-09-24 21:04 BrewTestBot o [master] [origin/master] poppler: update 0.36.0 bottle.
2015-09-24 21:04 BrewTestBot o pdf2htmlex: update 0.13.6_3 bottle.
2015-09-24 21:04 BrewTestBot o diff-pdf: update 0.2_3 bottle.
2015-09-21 19:05 Ed Porras o poppler 0.36.0
2015-09-25 12:37 BrewTestBot o nghttp2: update 1.3.4 bottle.
2015-09-25 17:04 Guo Xiao o nghttp2 1.3.4
2015-09-25 13:09 Dominyk Tiller o lynx: update url
2015-09-25 05:08 BrewTestBot o miller: add 2.2.1 bottle.
2015-09-24 20:19 Dominyk Tiller o miller 2.2.1 (new formula)
2015-09-25 03:05 BrewTestBot o librsvg: update 2.40.10_1 bottle.
2015-09-25 03:05 BrewTestBot o gdk-pixbuf: update 2.32.0 bottle.
2015-09-24 20:20 Tom Schoonjans o gdk-pixbuf: relocations now optional, off by default
2015-09-22 14:00 Tom Schoonjans o gdk-pixbuf: disable relocatable library support
2015-09-21 18:46 Tom Schoonjans o gdk-pixbuf 2.32.0
〜
冒頭の brew コマンドをもう一度打って、無事動作を確認することができた。
Homebrew が壊れたら、この方法で直すことができるはずだ。
MacBookAir:homebrew admin$ brew update
Already up-to-date.