Bたーんぶろぐ

プログラマがそんなにテックでないことを書きます。

brewでgnutlsが更新できないエラーへの対処

今度はbrewの方

前のMacPortsの件に続き、今度は家のMac miniで使っているHomebrewの方のエラー問題。

 

こちらも数週間ぶりにアップデート。

$ brew update

そして、更新されたソフトウェアを入れ替える。

そこでエラーが発生。

$ brew upgrade

==> Upgrading 3 outdated packages, with result:

gnutls 3.1.18, mysql 5.6.16, wget 1.15

==> Upgrading gnutls

==> Downloading ftp://ftp.gnutls.org/gcrypt/gnutls/v3.1/gnutls-3.1.18.tar.xz

Already downloaded: /Library/Caches/Homebrew/gnutls-3.1.18.tar.xz

==> ./configure --disable-static --prefix=/usr/local/Cellar/gnutls/3.1.18

==> make install

Error: gnutls dependency gmp was built with the following

C++ standard library: libstdc++ (from clang)

 

This is incompatible with the standard library being used

to build gnutls: libc++ (from clang)

 

Please reinstall gmp using a compatible compiler.

hint: Check https://github.com/Homebrew/homebrew/wiki/C++-Standard-Libraries

 

 

hint:を参考に原因を調べると、どうやらMarvericksになってC++のスタンダードライブラリがlibstdc++から、libc++へと変更になったのが原因らしい。

そして、どうやら悪さをしているのはgnutlsそのものではなく、gmpというライブラリの方らしい。

というか、ひっそりとエラーの最後の方にコンパイラを使ってるのはgmpって書いてあるし…

そんなわけで、オプション変えようとしたり、コンパイラ入れ替えようとしたり、色々と悪戦苦闘。

 

gmp再インストールで対処

そうこうしていてgmpを再インストールすればいいということに気がつく。

そもそもコンパイラの仕様が変わっただけで、それに相当するライブラリがないわけではないので再インストールで事足りそう。

 

そんなわけでbrewで再インストールのコマンド実行。

$ brew reinstall gmp

すると、再インストールはすんなり完了。

 

更に、今度は問題のgnutlsを再インストール

$ brew reinstall gnutls

すると、こちらも問題なくインストールされました。

 

そんなわけで、無事にエラーを解決出来ました。

わかってしまえば意外とあっさり。

 

このところ、これ系のエラーに悩まされる事が多いです。

この間は研究室でもUbuntuのXwindowがソフトウェアアップデートで死んだし…

しかも、しょうもないエラーだったりするから、タダ面倒なだけで嫌ですね。

 

それにしてもMarvericksになってからこういった問題が多くなった気がするけど気のせいかな?