まじかよぉ・・・・
ハマったわぁ
MacでRubyのプログラムを動かそうとしたらエラーが出る。
↓こんなヤツ
`require': cannot load such file -- selenium-webdriver (LoadError)
El Capitan以降では、Operation not permitted が発生します。
※
sudo
を付与しても発生します
El CapitanからRootlessという機能が採用されています。
この機能のために Operation not permitted が発生します。
Rootlessを解除するにはリカバリーモードでの起動が必要です。
リカバリーモードの方法は以下の記事をご参照ください。
>> Emacsのauto-installで接続エラー443発生
※上記の記事で「リカバリーモード」や「8−3.」で検索してください。
再現手順
手順としてはこんな感じ
1.selenium-webdriverを使ったプログラムを書く
require 'selenium-webdriver' driver = Selenium::WebDriver.for :chrome
2.selenium をインストール
$ sudo gem install selenium-webdriver
3.gemのインストールリストを確認
$ gem list
リストの中にseleniumが無いのでおかしいんだけど、ひとまず後で考えるとする
4.ruby sele.rb でエラー発生
`require': cannot load such file -- selenium-webdriver (LoadError)
要は selenium-webdriver が無いって言われてる。
gem list に出てないしやっぱりかという感じ。
とは言え、解決方法が分からない。
調べまくった結果やっと分かった。
原因
Macに最初に入っているRubyが古いからアカンねん!!!
解決
Rubyをバージョンアップしなはれぇ〜!!!
1.まずは現在のRubyのバージョンを確認
$ ruby -v ruby 2.0.0p481 (2014-05-08 revision 45883) [universal.x86_64-darwin14]
2.どこにあるのか確認
$ which ruby /usr/local/bin/ruby
3.HomebrewでRubyをインストール
※その前にHomebrewをバージョンアップ
※Homebrewはちょくちょく更新されているのでバージョンアップしておく
$ brew -v Homebrew 0.9.5 (git revision 0f37; last commit 2015-11-20) $ brew update Updated Homebrew from 0f37e294 to 22bde078. ...... $ brew -v Homebrew 0.9.5 (git revision 22bd; last commit 2015-11-26)
4.HomebrewでRubyをインストール
$ brew install ruby ==> Installing dependencies for ruby: readline, libyaml ...... $ ruby -v ruby 2.0.0p481 (2014-05-08 revision 45883) [universal.x86_64-darwin14]
Verが変わってないじゃん と思うでしょうが、まぁ、そらそうです。
HomebrewでインストールしたRubyは「/usr/local/bin/ruby」(/usr/local/Cellar/ruby/2.2.3/bin/ruby が実体)、現在のRubyは「/usr/bin/ruby」。
この現在のRubyをHomebrewでインストールしたものに置き換えればOK!!
5.現在のRubyをバックアップする
$ sudo mv /usr/bin/ruby /usr/bin/ruby_org_2.0.0
これで現在のRubyは不在です。
この位置にHomebrewでインストールしたRubyを置けばOK!!
6.HomebrewでインストールしたRubyのシンボリックリンクを置く
$ sudo ln -s /usr/local/bin/ruby /usr/bin/ruby
7.置き換わったはずのRubyのバージョンを確認
$ ruby -v ruby 2.2.3p173 (2015-08-18 revision 51636) [x86_64-darwin14]
Rubyが置き換わった!!!!
8.selenium-webdriver のインストール
$ sudo gem install selenium-webdriver Fetching: websocket-1.2.2.gem (100%)
これでエラーはなくなって正しく実行されるようになりました。
ホンマこれで半日潰れたわ。
ただ、この時点でも gem list の中に selenium が無いんやけど・・・、ま、ええか。
気にしないようにしましょう(笑)
サンプルプログラム
require 'selenium-webdriver' driver = Selenium::WebDriver.for :chrome driver.navigate.to "http://yahoo.com"
※事前に「brew install chromedriver」しておく必要あり
コメントを残す