存在しないファイルを指定されたから他のエラー(Errno::EACCES)を探して解決したった。

gemをインストールできないっ

gem 'nokogumbo' がなぜかインストールできないという自体になったのです。

(gem 'nokogumbo'をGemfileに書いた前提で話を進めていきます。)

ぱっと見簡単そうな問題なのですが、なんで今回私がこんなに悩んだかと言いますと、、

ディレクトリが存在しない

一部抜粋でエラー文を紹介します。

To see why this extension failed to compile, please check the mkmf.log which can be found here:

  /var/folders/h5/7qckhn4s59z93wzyj4ggqg_c0000gn/T/bundler20180527-63132-1bjn9r1nokogumbo-1.5.0/extensions/universal-darwin-17/2.3.0/nokogumbo-1.5.0/mkmf.log

extconf failed, exit code 1

と書いてあったので、mkmf.logの中身を見れば何でエラーになったのかわかるだろうと。

しかし、このファイルは存在しませんでした。

まあ要領悪くで探せなかっただけなのかもしれないですが、

bundler20180527-63132-1bjn9r1nokogumbo-1.5.0/extensions/universal-darwin-17/2.3.0/nokogumbo-1.5.0/mkmf.log

から下の階層がどうやって探してみても存在しないんですよ。

% find / nokogumbo-1.5.0

で検索してみるもヒット数は0。

ここでどん詰まりました。

他のエラー文をみて見ると

どこか他にヒントはないかと探すと

/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/2.3.0/fileutils.rb:253:in `mkdir': Permission denied @ dir_s_mkdir - /Library/Ruby/Gems/2.3.0/gems/nokogiri-1.8.2/ports (Errno::EACCES)

という一文を発見。

Errno::EACCES

ってなんかググればでできそうなエラー文やなと思い立ち、下のエントリーにたどり着く。

tech.librastudio.co.jp

これで解決

以下のコマンドを打てと書いてあったから脳死でとりあえず打ち込むもうまくいかず。

% sudo gem update

しかし、このエントリーをよく見ると、permission関連でエラーがあったとかいてあるではないか。

もしやと思いsudoで試す。

% sudo bundle install

できた! どうやら権限を欲していたらしい。

できたのはいいのだけどなんで今回はsudoを必要としたのだろうか。いつものbundle installとは何か違ったということだろうか。

とりあえず、permission関連のエラーがあったら権限を付与して実行してみると良さそうだ。