はじめに
2015/10/06 時点で、CentOS7 に mongodb を npm コマンドでインストールしようとすると、タイトルのエラーが発生しました。mongodb が依存する kerberos のバージョンが 0.0.9 から 0.0.15 になったところでエラーが発生していました。
解決策としては、下記あたりになるでしょうか。
- kerberos 0.0.9 をバージョン指定してインストールする
- mongodb 2.0.22 をバージョン指定してインストールする
回避方法 その1
エラーの原因である kerberos のバージョン 0.0.15 の代わりに、0.0.9 を指定してインストールします。
$ npm install mongodb kerberos@"0.0.9"
package.json に記述する際は、dependencies に下記のように指定しておくとよいでしょう。
"kerberos": "0.0.9",
"mongodb": "~2.0.45"
回避方法 その2
エラーが出なくなる最新のバージョン 2.0.22 を指定してインストールします。
$ npm install mongodb@"<=2.0.22"
package.json に記述する際は、dependencies に下記のように指定しておくとよいでしょう。
"mongodb": "~2.0.22"
調査結果メモ
正常完了時 (mongodb 2.0.22)
npm http GET https://registry.npmjs.org/mongodb npm http 304 https://registry.npmjs.org/mongodb npm http GET https://registry.npmjs.org/mongodb-core/1.1.17 npm http GET https://registry.npmjs.org/readable-stream/1.0.31 npm http 304 https://registry.npmjs.org/mongodb-core/1.1.17 npm http 304 https://registry.npmjs.org/readable-stream/1.0.31 npm http GET https://registry.npmjs.org/isarray/0.0.1 npm http GET https://registry.npmjs.org/string_decoder npm http GET https://registry.npmjs.org/inherits npm http GET https://registry.npmjs.org/core-util-is npm http 304 https://registry.npmjs.org/isarray/0.0.1 npm http 304 https://registry.npmjs.org/inherits npm http 304 https://registry.npmjs.org/string_decoder npm http 304 https://registry.npmjs.org/core-util-is npm http GET https://registry.npmjs.org/bson npm http GET https://registry.npmjs.org/mkdirp/0.5.0 npm http GET https://registry.npmjs.org/rimraf/2.2.6 npm http GET https://registry.npmjs.org/kerberos/0.0.9 npm http 304 https://registry.npmjs.org/mkdirp/0.5.0 npm http 304 https://registry.npmjs.org/bson npm http 304 https://registry.npmjs.org/rimraf/2.2.6 npm http 304 https://registry.npmjs.org/kerberos/0.0.9 npm http GET https://registry.npmjs.org/minimist/0.0.8 npm http 304 https://registry.npmjs.org/minimist/0.0.8 npm http GET https://registry.npmjs.org/nan/1.6.2 npm http 304 https://registry.npmjs.org/nan/1.6.2 npm http GET https://registry.npmjs.org/nan > kerberos@0.0.9 install /home/mntuser/git/countup-sample-ssdn-heroku/node_modules/mongodb/node_modules/mongodb-core/node_modules/kerberos > (node-gyp rebuild 2> builderror.log) || (exit 0) npm http 304 https://registry.npmjs.org/nan > bson@0.2.22 install /home/mntuser/git/countup-sample-ssdn-heroku/node_modules/mongodb/node_modules/mongodb-core/node_modules/bson > (node-gyp rebuild 2> builderror.log) || (exit 0) make: ディレクトリ <code>/home/mntuser/git/countup-sample-ssdn-heroku/node_modules/mongodb/node_modules/mongodb-core/node_modules/kerberos/build' に入ります</code> <code> CXX(target) Release/obj.target/kerberos/lib/kerberos.o</code> <code>make: ディレクトリ</code>/home/mntuser/git/countup-sample-ssdn-heroku/node_modules/mongodb/node_modules/mongodb-core/node_modules/bson/build' に入ります CXX(target) Release/obj.target/bson/ext/bson.o make: ディレクトリ <code>/home/mntuser/git/countup-sample-ssdn-heroku/node_modules/mongodb/node_modules/mongodb-core/node_modules/kerberos/build' から出ます</code> <code> SOLINK_MODULE(target) Release/obj.target/bson.node</code> <code> SOLINK_MODULE(target) Release/obj.target/bson.node: Finished</code> <code> COPY Release/bson.node</code> <code>make: ディレクトリ</code>/home/mntuser/git/countup-sample-ssdn-heroku/node_modules/mongodb/node_modules/mongodb-core/node_modules/bson/build' から出ます mongodb@2.0.22 node_modules/mongodb tqq readable-stream@1.0.31 (isarray@0.0.1, inherits@2.0.1, string_decoder@0.10.31, core-util-is@1.0.1) mqq mongodb-core@1.1.17 (rimraf@2.2.6, mkdirp@0.5.0, kerberos@0.0.9, bson@0.2.22)
エラー発生時 (mongodb 2.0.23 以上)
npm http GET https://registry.npmjs.org/mongodb
npm http 304 https://registry.npmjs.org/mongodb
npm http GET https://registry.npmjs.org/mongodb/-/mongodb-2.0.23.tgz
npm http 200 https://registry.npmjs.org/mongodb/-/mongodb-2.0.23.tgz
npm http GET https://registry.npmjs.org/mongodb-core/1.1.19
npm http GET https://registry.npmjs.org/readable-stream/1.0.31
npm http 304 https://registry.npmjs.org/readable-stream/1.0.31
npm http 200 https://registry.npmjs.org/mongodb-core/1.1.19
npm http GET https://registry.npmjs.org/mongodb-core/-/mongodb-core-1.1.19.tgz
npm http 200 https://registry.npmjs.org/mongodb-core/-/mongodb-core-1.1.19.tgz
npm http GET https://registry.npmjs.org/core-util-is
npm http GET https://registry.npmjs.org/isarray/0.0.1
npm http GET https://registry.npmjs.org/string_decoder
npm http GET https://registry.npmjs.org/inherits
npm http 304 https://registry.npmjs.org/inherits
npm http 304 https://registry.npmjs.org/string_decoder
npm http 304 https://registry.npmjs.org/isarray/0.0.1
npm http 304 https://registry.npmjs.org/core-util-is
npm http GET https://registry.npmjs.org/bson
npm http GET https://registry.npmjs.org/mkdirp/0.5.0
npm http GET https://registry.npmjs.org/rimraf/2.2.6
npm http GET https://registry.npmjs.org/kerberos
npm http 304 https://registry.npmjs.org/mkdirp/0.5.0
npm http 304 https://registry.npmjs.org/rimraf/2.2.6
npm http 304 https://registry.npmjs.org/kerberos
npm http 304 https://registry.npmjs.org/bson
npm http GET https://registry.npmjs.org/minimist/0.0.8
npm http 304 https://registry.npmjs.org/minimist/0.0.8
npm http GET https://registry.npmjs.org/nan
npm http 304 https://registry.npmjs.org/nan
> kerberos@0.0.15 install /home/mntuser/git/countup-sample-ssdn-heroku/node_modules/mongodb/node_modules/mongodb-core/node_modules/kerberos
> (node-gyp rebuild) || (exit 0)
> bson@0.2.22 install /home/mntuser/git/countup-sample-ssdn-heroku/node_modules/mongodb/node_modules/mongodb-core/node_modules/bson
> (node-gyp rebuild 2> builderror.log) || (exit 0)
make: ディレクトリ <code>/home/mntuser/git/countup-sample-ssdn-heroku/node_modules/mongodb/node_modules/mongodb-core/node_modules/kerberos/build' に入ります</code>
<code> CXX(target) Release/obj.target/kerberos/lib/kerberos.o</code>
<code>make: ディレクトリ</code>/home/mntuser/git/countup-sample-ssdn-heroku/node_modules/mongodb/node_modules/mongodb-core/node_modules/bson/build' に入ります
CXX(target) Release/obj.target/bson/ext/bson.o
In file included from ../lib/kerberos.h:9:0,
from ../lib/kerberos.cc:1:
../node_modules/nan/nan.h:316:47: エラー: ‘REPLACE_INVALID_UTF8’ is not a member of ‘v8::String’
static const unsigned kReplaceInvalidUtf8 = v8::String::REPLACE_INVALID_UTF8;
^
make: *** [Release/obj.target/kerberos/lib/kerberos.o] エラー 1
make: ディレクトリ <code>/home/mntuser/git/countup-sample-ssdn-heroku/node_modules/mongodb/node_modules/mongodb-core/node_modules/kerberos/build' から出ます</code>
<code>gyp ERR! build error</code>
<code>gyp ERR! stack Error:</code>make<code>failed with exit code: 2</code>
<code>gyp ERR! stack at ChildProcess.onExit (/usr/lib/node_modules/node-gyp/lib/build.js:267:23)</code>
<code>gyp ERR! stack at ChildProcess.emit (events.js:98:17)</code>
<code>gyp ERR! stack at Process.ChildProcess._handle.onexit (child_process.js:820:12)</code>
<code>gyp ERR! System Linux 2.6.32-042stab092.2</code>
<code>gyp ERR! command "node" "/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"</code>
<code>gyp ERR! cwd /home/mntuser/git/countup-sample-ssdn-heroku/node_modules/mongodb/node_modules/mongodb-core/node_modules/kerberos</code>
<code>gyp ERR! node -v v0.10.36</code>
<code>gyp ERR! node-gyp -v v0.10.6</code>
<code>gyp ERR! not ok</code>
<code> SOLINK_MODULE(target) Release/obj.target/bson.node</code>
<code> SOLINK_MODULE(target) Release/obj.target/bson.node: Finished</code>
<code> COPY Release/bson.node</code>
<code>make: ディレクトリ</code>/home/mntuser/git/countup-sample-ssdn-heroku/node_modules/mongodb/node_modules/mongodb-core/node_modules/bson/build' から出ます
mongodb@2.0.23 node_modules/mongodb
tqq readable-stream@1.0.31 (isarray@0.0.1, inherits@2.0.1, string_decoder@0.10.31, core-util-is@1.0.1)
mqq mongodb-core@1.1.19 (rimraf@2.2.6, mkdirp@0.5.0, kerberos@0.0.15, bson@0.2.22)