過去にNode.jsでメールを取得する記事を書きましたが、
久々にやろうとしてnode-iconvのインストールでこけたのでメモ。(前にどっかで書いてるかも。。。?)
環境
- CentOS 7系
- Node.js v4.1.2
流れと解決
$ npm i --save iconv
こんな感じのエラーログが出ました。
npm WARN package.json mail@1.0.0 No description
npm WARN package.json mail@1.0.0 No repository field.
npm WARN package.json mail@1.0.0 No README data
|
> iconv@2.1.11 install /root/mail/node_modules/iconv
> node-gyp rebuild
make: ディレクトリ `/root/mail/node_modules/iconv/build' に入ります
CC(target) Release/obj.target/libiconv/deps/libiconv/lib/iconv.o
make: cc: コマンドが見つかりませんでした
make: *** [Release/obj.target/libiconv/deps/libiconv/lib/iconv.o] エラー 127
make: ディレクトリ `/root/mail/node_modules/iconv/build' から出ます
gyp ERR! build error
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack at ChildProcess.onExit (/root/.nvm/versions/node/v4.1.2/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:270:23)
gyp ERR! stack at emitTwo (events.js:87:13)
gyp ERR! stack at ChildProcess.emit (events.js:172:7)
gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12)
gyp ERR! System Linux 3.10.0-229.el7.x86_64
gyp ERR! command "/root/.nvm/versions/node/v4.1.2/bin/node" "/root/.nvm/versions/node/v4.1.2/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /root/mail/node_modules/iconv
gyp ERR! node -v v4.1.2
gyp ERR! node-gyp -v v3.0.3
gyp ERR! not ok
npm ERR! Linux 3.10.0-229.el7.x86_64
npm ERR! argv "/root/.nvm/versions/node/v4.1.2/bin/node" "/root/.nvm/versions/node/v4.1.2/bin/npm" "i" "--save" "iconv"
npm ERR! node v4.1.2
npm ERR! npm v2.14.4
npm ERR! code ELIFECYCLE
npm ERR! iconv@2.1.11 install: `node-gyp rebuild`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the iconv@2.1.11 install script 'node-gyp rebuild'.
npm ERR! This is most likely a problem with the iconv package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR! node-gyp rebuild
npm ERR! You can get their info via:
npm ERR! npm owner ls iconv
npm ERR! There is likely additional logging output above.
npm ERR! Please include the following file with any support request:
npm ERR! /root/mail/npm-debug.log
cc: コマンドが見つかりませんでした
って書いてるところがポイントっぽいですね。
この辺覗くと、node-iconvは内部がCで書かれてるっぽいですね、cc
やgcc
といったコンパイラが無いからうまくビルドでき無いみたいです。
yumでgccをインストールしましょう。
$ yum install gcc
再チャレンジ
$ npm i --save iconv
npm WARN package.json mail@1.0.0 No description
npm WARN package.json mail@1.0.0 No repository field.
npm WARN package.json mail@1.0.0 No README data
/
> iconv@2.1.11 install /root/mail/node_modules/iconv
> node-gyp rebuild
make: ディレクトリ `/root/mail/node_modules/iconv/build' に入ります
CC(target) Release/obj.target/libiconv/deps/libiconv/lib/iconv.o
AR(target) Release/obj.target/iconv.a
COPY Release/iconv.a
CXX(target) Release/obj.target/iconv/src/binding.o
make: g++: コマンドが見つかりませんでした
make: *** [Release/obj.target/iconv/src/binding.o] エラー 127
make: ディレクトリ `/root/mail/node_modules/iconv/build' から出ます
gyp ERR! build error
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack at ChildProcess.onExit (/root/.nvm/versions/node/v4.1.2/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:270:23)
gyp ERR! stack at emitTwo (events.js:87:13)
gyp ERR! stack at ChildProcess.emit (events.js:172:7)
gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12)
gyp ERR! System Linux 3.10.0-229.el7.x86_64
gyp ERR! command "/root/.nvm/versions/node/v4.1.2/bin/node" "/root/.nvm/versions/node/v4.1.2/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /root/mail/node_modules/iconv
gyp ERR! node -v v4.1.2
gyp ERR! node-gyp -v v3.0.3
gyp ERR! not ok
npm ERR! Linux 3.10.0-229.el7.x86_64
npm ERR! argv "/root/.nvm/versions/node/v4.1.2/bin/node" "/root/.nvm/versions/node/v4.1.2/bin/npm" "i" "--save" "iconv"
npm ERR! node v4.1.2
npm ERR! npm v2.14.4
npm ERR! code ELIFECYCLE
npm ERR! iconv@2.1.11 install: `node-gyp rebuild`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the iconv@2.1.11 install script 'node-gyp rebuild'.
npm ERR! This is most likely a problem with the iconv package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR! node-gyp rebuild
npm ERR! You can get their info via:
npm ERR! npm owner ls iconv
npm ERR! There is likely additional logging output above.
npm ERR! Please include the following file with any support request:
npm ERR! /root/mail/npm-debug.log
make: g++: コマンドが見つかりませんでした
って出ました。
g++
コマンドが無いらしいのでインストールします。
$ yum -y install gcc-c++
これでg++
が使えるようになったので再度チャレンジ
$ npm i --save iconv
npm WARN package.json mail@1.0.0 No description
npm WARN package.json mail@1.0.0 No repository field.
npm WARN package.json mail@1.0.0 No README data
-
> iconv@2.1.11 install /root/mail/node_modules/iconv
> node-gyp rebuild
make: ディレクトリ `/root/mail/node_modules/iconv/build' に入ります
CC(target) Release/obj.target/libiconv/deps/libiconv/lib/iconv.o
AR(target) Release/obj.target/iconv.a
COPY Release/iconv.a
CXX(target) Release/obj.target/iconv/src/binding.o
SOLINK_MODULE(target) Release/obj.target/iconv.node
COPY Release/iconv.node
make: ディレクトリ `/root/mail/node_modules/iconv/build' から出ます
iconv@2.1.11 node_modules/iconv
└── nan@2.0.9
これでうまくインストールされました。
お疲れ様です!