macへnode-opencvをインストールするときにエラーが発生してインストールできなくなったので、それを解決する方法についてです。まず、次のようなエラーが表示されます。
npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! opencv@6.0.0 install: `node-pre-gyp install --fallback-to-build` npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the opencv@6.0.0 install script. npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
インストール環境:
- Mac OSX 10.12.6
- Node.js: v8.4.0
- OpenCV: v.2.4.13
まずハマったのは、OpenCVのインストールについてです。通常Homebrewを使ってインストールします。しかし、次のようにインストールすると、OpenCV3がインストールされてしまうようになりました。
# brew install opencv
現時点では、OpenCV2はopencv@2と名前が変更されているようです。そのため、次のコマンドを実行することで、OpenCV2がインストールされます。
# brew install opencv@2 (中略) This formula is keg-only, which means it was not symlinked into /usr/local, because this is an alternate version of another formula. If you need to have this software first in your PATH run: echo 'export PATH="/usr/local/opt/opencv@2/bin:$PATH"' >> ~/.bash_profile For compilers to find this software you may need to set: LDFLAGS: -L/usr/local/opt/opencv@2/lib CPPFLAGS: -I/usr/local/opt/opencv@2/include For pkg-config to find this software you may need to set: PKG_CONFIG_PATH: /usr/local/opt/opencv@2/lib/pkgconfig If you need Python to find bindings for this keg-only formula, run: echo /usr/local/opt/opencv@2/lib/python2.7/site-packages >> /usr/local/lib/python2.7/site-packages/opencv@2.pth mkdir -p /Users/xxx/Library/Python/2.7/lib/python/site-packages echo 'import site; site.addsitedir("/usr/local/lib/python2.7/site-packages")' >> /Users/xxx/Library/Python/2.7/lib/python/site-packages/homebrew.pth
最後にこのメッセージが表示された場合、OpenCV3がインストールされた状態で、OpenCV2がインストールされたことになります。また、このメッセージの中で、「PKG_CONFIG_PATH: /usr/local/opt/opencv@2/lib/pkgconfig」が重要になります。
node-opencvでは、pkg-configコマンドを使ってライブラリの場所を特定します。pkg-configは/usr/local/lib/pkgconfig/内の.pcファイルに書かれた各ライブラリのインストール場所の情報を参照します。
そこで、ログで表示された/usr/local/opt/opencv@2/lib/pkgconfig/ にあるopencv.pcファイルを/usr/local/lib/pkgconfig/ へコピーします。しかし、すでにOpenCV3 のopencv.pcが存在するため、そのままコピーしてしまうと上書きしてOpenCV3が使えなくなります。
そこで、次のようにします。
# sudo mv /usr/local/lib/pkgconfig/opencv.pc /usr/local/lib/pkgconfig/opencv3.pc # sudo cp /usr/local/opt/opencv\@2/lib/pkgconfig/opencv.pc /usr/local/lib/pkgconfig/opencv.pc
これで、npm i node-opencv とすることで、無事にインストールできるようになります。