rcmdnk's blog

UPDATE girls vol.1 (ぴあMOOK)

Brew-fileを色々アップデート してる中で、Homebrewで入れてる方もアップデートしておこうとしたら 何故か入らなくて困ってましたが、 どうもHomebrewのバグでupdateコマンドを使っても Formulaがアップデートされないような状況になってしまってる場合があるようです。

brew updateのバグと解決法

レポジトリのREADMEにありますが、 8月10、11日辺りにbrew updateを実行していた場合、 それ以降brew updateできちんとHomebrewの更新が出来ていない可能性があります。

これを治すには

$ cd $(brew --repo) && git fetch && git reset --hard origin/master && brew update

の様にHomebrewのレポジトリを直接gitコマンドで最新版にしてあげればOK。

問題に当たっているかどうか分からない場合も 取り敢えず一度やっておくこと良いと思います。

大量のアップデートが入ってくればしばらくアップデートされてなかったということに。

ちなみに、このコマンド売ってみたら

$ brew --repo
usage: brew-file [-f INPUT] [-b BACKUP] [-F FORM] [--leaves]
                 [--top_packages TOP_PACKAGES] [-U] [--preupdate] [-r REPO]
                 [-n] [--caskonly] [--no_appstore] [-C] [-y] [-V VERBOSE]
                 [command] ...
brew-file: error: argument -r/--repo: expected one argument

みたいなエラーに成ってしまったんですが、これは homebrew-filebrew-wrap を使っていて、brew-fileの方に引数が渡されてしまっていたからな様子。

Homebrewのマニュアルを見ると、brew --repositoryというオプションで Homebrewのレポジトリを取得出来る、とのこと。 (--repoでも可。)

brew --repository:
    Display where Homebrew's .git directory is located. For standard installs,
    the prefix and repository are the same directory.

brew --repository user/repo:
    Display where tap user/repo's directory is located.

同様にbrew --prefixというオプションもあって、こちらは binディレクトリなどの親ディレクトリになります。

brew --prefix:
    Display Homebrew's install path. *Default:* /usr/local

brew --prefix formula:
    Display the location in the cellar where formula is or would be installed.

通常は両方共同じく/usr/localになっています。

この--repositoryの方のオプションがいつからあったか定かで無いんですが、 homebrew-fileの--repoと競合してしまっています。

brewの方では場所を表示するためだけのもので、オプションというよりサブコマンド的なものなので、 brew-wrapの中でこの引数が最初に来たらbrewに直接渡すようにしました。

brew-wrapを導入してると上のアップデートコマンドで上の様なエラーが出るかもしれませんが、 その場合は、

$ cd $(command brew --repo) && git fetch && git reset --hard origin/master && brew update

の様に、最初のbrew --repoの前にcommandを付けて直接brewコマンドを実行する様にしてください。 このアップデートをしないとhomebrew-fileもアップデートできないので。

Sponsored Links
Sponsored Links

« Brew-fileのcask_upgradeをアップデート Evernoteが'バージョンが古過ぎます'と言われて開けなくなった時の対処法 »

}