安装节点模块时出现 node-gyp 重建错误

node-gyp rebuild error while installing node modules

我尝试使用 'npm install zerorpc' 在节点上安装 zerorpc 包,但出现以下错误。该错误是因为 node-gyp 重建失败。

npm http GET https://registry.npmjs.org/zerorpc
npm http 304 https://registry.npmjs.org/zerorpc
npm http GET https://registry.npmjs.org/underscore/1.3.3
npm http GET https://registry.npmjs.org/node-uuid/1.3.3
npm http GET https://registry.npmjs.org/msgpack/1.0.2
npm http GET https://registry.npmjs.org/zmq
npm http 304 https://registry.npmjs.org/node-uuid/1.3.3
npm http 304 https://registry.npmjs.org/msgpack/1.0.2
npm http 304 https://registry.npmjs.org/zmq
npm http 304 https://registry.npmjs.org/underscore/1.3.3
npm WARN engine msgpack@1.0.2: wanted: {"node":">=0.12.7"} (current: {"node":"v0.10.25","npm":"1.3.10"})
npm http GET https://registry.npmjs.org/bindings
npm http GET https://registry.npmjs.org/nan
npm http GET https://registry.npmjs.org/nan
npm http 304 https://registry.npmjs.org/bindings
npm http 304 https://registry.npmjs.org/nan
npm http 304 https://registry.npmjs.org/nan

> zmq@2.14.0 install /home/deepu/node_modules/zerorpc/node_modules/zmq
> node-gyp rebuild


> msgpack@1.0.2 install /home/deepu/node_modules/zerorpc/node_modules/msgpack
> node-gyp rebuild

make: Entering directory `/home/deepu/node_modules/zerorpc/node_modules/zmq/build'
  CXX(target) Release/obj.target/zmq/binding.o
make: Entering directory `/home/deepu/node_modules/zerorpc/node_modules/msgpack/build'
  CC(target) Release/obj.target/libmsgpack/deps/msgpack/objectc.o
  CC(target) Release/obj.target/libmsgpack/deps/msgpack/unpack.o
  CC(target) Release/obj.target/libmsgpack/deps/msgpack/vrefbuffer.o
  CC(target) Release/obj.target/libmsgpack/deps/msgpack/zone.o
  CC(target) Release/obj.target/libmsgpack/deps/msgpack/version.o
  AR(target) Release/obj.target/deps/msgpack/msgpack.a
  COPY Release/msgpack.a
  CXX(target) Release/obj.target/msgpackBinding/src/msgpack.o
../src/msgpack.cc: In function ‘void v8_to_msgpack(v8::Handle<v8::Value>, msgpack_object*, msgpack_zone*, size_t)’:
../src/msgpack.cc:126:93: error: could not convert ‘v8obj’ from ‘v8::Handle<v8::Value>’ to ‘v8::Local<v8::Value>’
         mo->via.str.size = static_cast<uint32_t>(Nan::DecodeBytes(v8obj, Nan::Encoding::UTF8));
                                                                                             ^
../src/msgpack.cc:129:94: error: could not convert ‘v8obj’ from ‘v8::Handle<v8::Value>’ to ‘v8::Local<v8::Value>’
         Nan::DecodeWrite((char*)mo->via.str.ptr, mo->via.str.size, v8obj, Nan::Encoding::UTF8);
                                                                                              ^
../src/msgpack.cc:136:94: error: could not convert ‘result’ from ‘v8::Handle<v8::Value>’ to ‘v8::Local<v8::Value>’
         mo->via.str.size = static_cast<uint32_t>(Nan::DecodeBytes(result, Nan::Encoding::UTF8));
                                                                                              ^
../src/msgpack.cc:139:95: error: could not convert ‘result’ from ‘v8::Handle<v8::Value>’ to ‘v8::Local<v8::Value>’
         Nan::DecodeWrite((char*)mo->via.str.ptr, mo->via.str.size, result, Nan::Encoding::UTF8);
                                                                                               ^
make: *** [Release/obj.target/msgpackBinding/src/msgpack.o] Error 1
make: Leaving directory `/home/deepu/node_modules/zerorpc/node_modules/msgpack/build'
gyp ERR! build error 
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/usr/share/node-gyp/lib/build.js:267:23)
gyp ERR! stack     at ChildProcess.EventEmitter.emit (events.js:98:17)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (child_process.js:797:12)
gyp ERR! System Linux 3.16.0-60-generic
gyp ERR! command "nodejs" "/usr/bin/node-gyp" "rebuild"
gyp ERR! cwd /home/deepu/node_modules/zerorpc/node_modules/msgpack
gyp ERR! node -v v0.10.25
gyp ERR! node-gyp -v v0.10.10
gyp ERR! not ok 
npm WARN This failure might be due to the use of legacy binary "node"
npm WARN For further explanations, please read
/usr/share/doc/nodejs/README.Debian

npm ERR! weird error 1
Assembler messages:
Fatal error: can't create Release/obj.target/zmq/binding.o: No such file or directory
make: *** [Release/obj.target/zmq/binding.o] Error 1
make: Leaving directory `/home/deepu/node_modules/zerorpc/node_modules/zmq/build'
gyp ERR! build error 
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/usr/share/node-gyp/lib/build.js:267:23)
gyp ERR! stack     at ChildProcess.EventEmitter.emit (events.js:98:17)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (child_process.js:797:12)
gyp ERR! System Linux 3.16.0-60-generic
gyp ERR! command "nodejs" "/usr/bin/node-gyp" "rebuild"
gyp ERR! cwd /home/deepu/node_modules/zerorpc/node_modules/zmq
gyp ERR! node -v v0.10.25
gyp ERR! node-gyp -v v0.10.10
gyp ERR! not ok 
npm WARN This failure might be due to the use of legacy binary "node"
npm WARN For further explanations, please read
/usr/share/doc/nodejs/README.Debian

npm ERR! not ok code 0

然后我尝试使用

更新版本
sudo npm cache clean -f
sudo npm install -g n
sudo n stable

sudo ln -sf /usr/local/n/versions/node/<VERSION>/bin/node /usr/bin/node

https://askubuntu.com/questions/426750/how-can-i-update-my-nodejs-to-the-latest-version 提供,但我收到 'bash: /usr/bin/node: No such file or directory' 错误

我使用

升级到4.3.0版本
sudo npm cache clean -f
sudo npm install -g n
sudo n 4.3.0

然后我用了

sudo npm install zerorpc

成功了!

至于 bash: '/usr/bin/node: No such file or directory' 错误,我做到了

sudo apt-get install node-legacy