brew installに失敗したときの対処


glfw3(OpenGL のラッパー)のインストールではまっていたのですが,なんとか対応できたのでメモっておきます.

職場の iMac 5K と MacBook Pro にはまったく問題なくインストールできたのに,自宅の Mac mini だと Cmake が configuration 中にこけていました.なんでも clang のバージョンがわからないと文句を言って.そもそも brew install がこけただけだと,どんなエラーが起きているのかわかりにくいです.brew install -v formula を実行すればビルド中のログを見ることができます.

あれこれやっても原因がよくわからないので,Homebrew に頼らずに自力でビルドしてみたら,あっさりとビルドできてしまいました.やはり,Homebrew の調子が悪いようです.

次にオンラインマニュアル (man brew)で brew install のヘルプを見て –interactive というオプションがあることに気づき,対話モードでインストール作業をすることにしました.対話モードにすると,ソースコードを展開し,パッチをあてた状態で対話用のシェルが開きます.あとは,ビルドのためのコマンドにしたがってビルドすればいいだけです.

cmake \
 -DCMAKE_INSTALL_PREFIX=/opt/brew/Cellar/glfw3/3.0.4 \
 -DCMAKE_BUILD_TYPE=None \
 -DCMAKE_FIND_FRAMEWORK=LAST \
 -DCMAKE_VERBOSE_MAKEFILE=ON \
 -Wno-dev \
 -DGLFW_USE_CHDIR=TRUE \
 -DGLFW_USE_MENUBAR=TRUE \
 -DBUILD_SHARED_LIBS=TRUE \
 .

make install

で,このコマンドはどこからやってきたかというと,$HOMEBREW/Library/Formula/glfw3.rb にだいたい以下のようなことが書かれています.

args = std_cmake_args +%@[
  -DGLFW_USE_CHDIR=TRUE
  -DGLFW_USE_MENUBAR=TRUE
  ...
]

では,std_cmake_args はどこからやってくるのかというと$HOMEBREW/Library/Homebrew/formula.rb に定義されていました.

ということで,ちょっと悩むことになりますが,いろいろやればなんとかなるようです.

それにしても,対話モードだとすっきりインストールできて,そうでないと失敗するというのはどういうことだろうか???