はじめに
テストの自動化する際にGemfileを変更して、bundle updateした時、capybara-webkitでエラーになり、つまったのでメモします。
※やりながら書いたので全然まとまってません。
qmakeコマンドがない
出たエラーは?
もともとcapybara自体は入っていたので、bundle update
。
そしたら、
gem install capybara-webkit -v '1.11.1'
をインストールする時にqmake
ってコマンドがなくてエラーに。。。
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
...
...
Command 'qmake ' not available
extconf failed, exit code 1
Gem files will remain installed in /Users/...gems/capybara-webkit-1.11.1 for inspection.
Results logged to /Users/.../capybara-webkit-1.11.1/gem_make.out
An error occurred while installing capybara-webkit (1.11.1), and Bundler cannot continue.
Make sure that `gem install capybara-webkit -v '1.11.1'` succeeds before bundling.
qmakeをインストールする
調べてみると、この記事で以下のようなコマンドをしたらできるとの事。
brew update
brew install qt55
※私はElCapitanを使っているので、このページを参考にqt55
というバージョンをインストールすることにした。
brew updateができない!!
brew update
するとこんなエラーが・・・
brew doctor
をやっても同じエラーなので、homebrewが使えなくなってる。。。
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- mach (LoadError)
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /usr/local/Library/Homebrew/extend/pathname.rb:2:in `<top (required)>'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /usr/local/Library/Homebrew/global.rb:3:in `<top (required)>'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /usr/local/Library/brew.rb:15:in `<main>'
homebrewを復活させる
原因はここに書かれていますが、ElCapitanにアップデートしたことで、セキュリティー周りの設定が変わり、/usr/local
の下がうまく動作しなかったようです。
なので、書かれている通りのコマンドを実行してみます。
cd $(brew --prefix)
git fetch
git reset --hard origin/master
brew update
でも、まだ怒られる・・・
調べてみるとrootユーザ担ってしまっているのがいけないようです。
以下のコマンドで、adminユーザに変更。
こっちの記事をみるとちゃんと書いてありますね。
sudo chown -R $(whoami):admin /usr/local
以下のコマンドでadmin
ユーザになっている事を確認する。
ls -ld /usr/local
再度、qmakeをインストールするぞ!!
brew tap homebrew/versions
brew install qt55
すると・・・
==> Installing qt55 from homebrew/versions
==> Downloading https://homebrew.bintray.com/bottles-versions/qt55-5.5.1.el_capitan.bottle.tar.gz
######################################################################## 100.0%
==> Pouring qt55-5.5.1.el_capitan.bottle.tar.gz
==> Caveats
...
==> Summary
🍺 /usr/local/Cellar/qt55/5.5.1: 7,246 files, 329.6M
インストールできましたね。
でもこのままだと使えないらしく、以下を実行しておきます。
これをすることによって、qmake
ってコマンドを実行すると、インストールしたqt55のプログラムを実行してくれるようになるんだと思っている。。(ちゃんと調べてないからあってないかも)
brew link --force qt55
capybara-webkitを再度インストール
実行したいGemfileがあるディレクトリに戻ってから、以下を実行。
gem install capybara-webkit -v '1.11.1'
無事できました〜!
Building native extensions. This could take a while...
Successfully installed capybara-webkit-1.11.1
1 gem installed
まとめ
OSのアップデートが原因だとはおもわず、時間がかかりましたが、開発環境そろえる知識が少ないため、すごいペン今日になりました。
ちなみに、qmakeとはクロスプラットフォーム向けのフレームワークの1つ。
クロスプラットフォームというのは、仕様が違う機械やOS上で、同じ仕様のものを動かせるプログラムのことをいうそうです(Wikipediaより)。