CentOS上でのBcryptのインストール
先の記事でCentOS 5.8にNode.jsをインストールし、MongoDBをUTF8対応しました。やっと環境が揃って、作ったアプリを確認していたらユーザ認証でNodeが落ちてしまいました。
/var/www/****/node_modules/bcrypt/node_modules/bindings/bindings.js:79 throw e
どうやらbcryptモジュールでエラーになっているようです。gitでnode_modules以下も管理してしまったせいで、Mac上でコンパイルされたモジュールが原因のようです。
# npm packして、それを管理すれば良かったのかな
という事でbcryptをコンパイルし直しました。
一度node_modulesを削除して、npm installしましたが、node-gypが無いっぽいエラーが発生してしまいました。という事でインストールします。
$ npm install -g node-gyp ... /root/nvm/v0.8.6/bin/node-gyp -> /root/nvm/v0.8.6/lib/node_modules/node-gyp/bin/node-gyp.js node-gyp@0.6.7 /root/nvm/v0.8.6/lib/node_modules/node-gyp ├── graceful-fs@1.1.10 ├── osenv@0.0.3 ├── rimraf@2.0.2 ├── mkdirp@0.3.3 ├── request@2.9.203 ├── which@1.0.5 ├── semver@1.0.14 ├── fstream@0.1.18 (inherits@1.0.0) ├── glob@3.1.12 (inherits@1.0.0) ├── nopt@2.0.0 (abbrev@1.0.3) ├── minimatch@0.2.6 (lru-cache@2.0.1) ├── npmlog@0.0.2 (ansi@0.1.2) └── tar@0.1.13 (inherits@1.0.0, block-stream@0.0.6)
もう一度npm installしますが、またもやエラーになってしまいます。
> bcrypt@0.7.1 install /var/www/****/node_modules/bcrypt > node-gyp rebuild gyp ERR! configure error gyp ERR! stack Error: Command failed: Unknown option: -- gyp ERR! stack Unknown option: -e gyp ERR! stack Unknown option: -r gyp ERR! stack Unknown option: -s gyp ERR! stack Unknown option: -o gyp ERR! stack Unknown option: -n gyp ERR! stack Unknown option: -- gyp ERR! stack usage: python [option] ... [-c cmd | -m mod | file | -] [arg] ... gyp ERR! stack Try `python -h' for more information. gyp ERR! stack gyp ERR! stack at ChildProcess.exithandler (child_process.js:536:15) gyp ERR! stack at ChildProcess.EventEmitter.emit (events.js:91:17) gyp ERR! stack at maybeClose (child_process.js:634:16) gyp ERR! stack at Socket.ChildProcess.spawn.stdin (child_process.js:806:11) gyp ERR! stack at Socket.EventEmitter.emit (events.js:88:17) gyp ERR! stack at Socket._destroy.destroyed (net.js:356:10) gyp ERR! stack at process.startup.processNextTick.process._tickCallback (node.js:244:9) gyp ERR! System Linux 2.6.18-308.1.1.el5 gyp ERR! command "node" "/root/nvm/v0.8.6/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild" gyp ERR! cwd /var/www/****/node_modules/bcrypt gyp ERR! node -v v0.8.6 gyp ERR! node-gyp -v v0.6.3 gyp ERR! not ok npm ERR! bcrypt@0.7.1 install: `node-gyp rebuild` npm ERR! `sh "-c" "node-gyp rebuild"` failed with 1 npm ERR! npm ERR! Failed at the bcrypt@0.7.1 install script. npm ERR! This is most likely a problem with the bcrypt 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 bcrypt npm ERR! There is likely additional logging output above. npm ERR! System Linux 2.6.18-308.1.1.el5 npm ERR! command "/root/nvm/v0.8.6/bin/node" "/root/nvm/v0.8.6/bin/npm" "install" npm ERR! cwd /var/www/**** npm ERR! node -v v0.8.6 npm ERR! npm -v 1.1.48 npm ERR! code ELIFECYCLE npm ERR! npm ERR! Additional logging details can be found in: npm ERR! /var/www/***/npm-debug.log npm ERR! not ok code 0
そう言えば、pythonのバージョン違いをコンパイルしていたのを思い出して、こちらを使ってみました。
$ export PATH=/opt/python-2.7.3/bin:$PATH $ npm install npm WARN package.json application-name@0.0.1 No README.md file found! npm http GET https://registry.npmjs.org/bcrypt npm http 304 https://registry.npmjs.org/bcrypt npm http GET https://registry.npmjs.org/bindings/1.0.0 npm http 304 https://registry.npmjs.org/bindings/1.0.0 > bcrypt@0.7.1 install /var/www/****/node_modules/bcrypt > node-gyp rebuild gyp http GET http://nodejs.org/dist/v0.8.6/node-v0.8.6.tar.gz gyp http 200 http://nodejs.org/dist/v0.8.6/node-v0.8.6.tar.gz make: Entering directory `/var/www/****/node_modules/bcrypt/build' CXX(target) Release/obj.target/bcrypt_lib/src/blowfish.o CXX(target) Release/obj.target/bcrypt_lib/src/bcrypt.o CXX(target) Release/obj.target/bcrypt_lib/src/bcrypt_node.o SOLINK_MODULE(target) Release/obj.target/bcrypt_lib.node SOLINK_MODULE(target) Release/obj.target/bcrypt_lib.node: Finished COPY Release/bcrypt_lib.node make: Leaving directory `/var/www/****/node_modules/bcrypt/build' bcrypt@0.7.1 node_modules/bcrypt └── bindings@1.0.0
やっとインストールができました。
CentOS 5系は止めた方が良いのかもです。面倒ごとが多いです。