ひびのログ

日々ではないけどログを出力していくブログ

Mac で npm の canvas をインストールするときにハマった話

古いバージョンの canvas モジュールのインストール時に node-gyp もインストールされるが、エラーが発生してインストールできなかった。

環境

macOS Hight Sierra ( version 10.13.6 )

やりたかったこと

npm install canvas@1.x.x

TL;DR

brew install pkg-config
brew install cairo
sudo xcode-select --switch /Library/Developer/CommandLineTools
sudo xcode-select -r

解決までの道のり

記載フォーマット

$ 実行コマンド

> 再度 canvas をインストール(npm i canvas)した時のエラーメッセージ

流れ

(最初にどんなエラーが発生したのかは覚えていないが、エラーメッセージで pkg-config がないよ!と言われていたはず。)

$ brew install pkg-config

Package cairo was not found in the pkg-config search path. Perhaps you should add the directory containing `cairo.pc' to the PKG_CONFIG_PATH environment variable No package 'cairo' found gyp: Call to './util/has_lib.sh freetype' returned exit status 0 while in binding.gyp. while trying to load binding.gyp

$ brew install cairo

xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance

$ export PKG_CONFIG_PATH="/usr/local/opt/libffi/lib/pkgconfig"
$ xcode-select --install

xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance

上記のコマンドを実行したら、xcode-select: error: command line tools are already installed, use "Software Update" to install updatesというメッセージが出た。 ただ、ソフトウェアアップデートは特に必要なかった(最新版だった)。

$ sudo xcode-select --switch /Library/Developer/CommandLineTools

xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance

$ sudo xcode-select -r

SOLINK_MODULE(target) Release/canvas-postbuild.node CXX(target) Release/obj.target/canvas/src/Canvas.o :

インストール完了!

古いバージョンだからか、警告が出まくってるけど無視無視。

追記

この手順を踏んでもインストールできない場合があった。要調査。

追々記

上記の手順を行なった後、下記の記事にある手順を実施したらインストールできた。 https://qiita.com/maru_cc/items/ea483477d7ed7df6a9cc

まとめ

Mac に全く詳しくないからわからないが、コンパイルするときには上記の設定が必要なのかもしれない。

参考