尝试全局安装mongodb或mongoose会导致缺少Kerberos的对等依赖
Jamess-MacBook-Pro:ka2 jamessherry$ npm install -g mongodb
/usr/local/lib
└─┬ mongodb@2.0.48
└── UNMET PEER DEPENDENCY kerberos@~0.0
npm WARN EPEERINVALID mongodb-core@1.2.21 requires a peer of kerberos@~0.0 but none was installed.
Jamess-MacBook-Pro:ka2 jamessherry$ npm install -g mongodb
- nan@2.0.9 node_modules/mongodb/node_modules/kerberos/node_modules/nan
- kerberos@0.0.17 node_modules/mongodb/node_modules/kerberos
/usr/local/lib
└─┬ mongodb@2.0.48
└── UNMET PEER DEPENDENCY kerberos@~0.0
npm WARN EPEERINVALID mongodb-core@1.2.21 requires a peer of kerberos@~0.0 but none was installed.
Jamess-MacBook-Pro:ka2 jamessherry$ npm install -g mongoose
/usr/local/lib
└─┬ mongoose@4.2.5
├── async@0.9.0
├── bson@0.4.19
├── hooks-fixed@1.1.0
├── kareem@1.0.1
├─┬ mongodb@2.0.48
│ ├── es6-promise@2.1.1
│ ├── UNMET PEER DEPENDENCY kerberos@~0.0
│ ├── mongodb-core@1.2.21
│ └─┬ readable-stream@1.0.31
│ ├── core-util-is@1.0.1
│ ├── inherits@2.0.1
│ ├── isarray@0.0.1
│ └── string_decoder@0.10.31
├── mpath@0.1.1
├── mpromise@0.5.4
├─┬ mquery@1.6.3
│ ├── bluebird@2.9.26
│ └── debug@2.2.0
├── ms@0.7.1
├── muri@1.0.0
├── regexp-clone@0.0.1
└── sliced@0.0.5
npm WARN EPEERINVALID mongodb-core@1.2.21 requires a peer of kerberos@~0.0 but none was installed.
有谁知道如何解决这个问题?如果您手动安装,则必须在每次更新时执行此操作。
另外,我找不到报告错误的地方......
答案 0 :(得分:28)
我只需运行git clone https://github.com/christkv/kerberos.git
cd kerberos
npm install
即可在我的项目中成功安装mongodb。我假设你也可以在全球范围内做到这一点,但可能还有其他问题。
来自mongodb NPM package文档:
kerberos包是一个需要构建的C ++扩展 要在系统上安装的环境。你必须能够建立 node.js本身能够编译和安装kerberos模块。 此外,kerberos模块需要MIT Kerberos包 在UNIX操作系统上正确编译。咨询你的UNIX 操作系统包管理器要安装哪些库。
它继续提供以下步骤来诊断基于UNIX的操作系统上的问题:
如果您没有构建必需品,则无法构建。对于linux,你将需要gcc和g ++,node.js以及所有头文件和python。找出缺失的最简单方法是尝试构建kerberos项目。您可以通过执行以下步骤来完成此操作。
npm install -g node-gyp
如果完成所有步骤,则安装了正确的工具链。如果找不到node-gyp,则需要通过执行全局安装。
cd yourproject
npm install mongodb --save
如果正确编译并运行测试,那么你就是金色的。我们现在可以通过执行以下命令来尝试安装mongod驱动程序。
npm --loglevel verbose install mongodb
如果仍然失败,则下一步是检查npm日志。重新运行命令,但在这种情况下是详细模式。
{{1}}
这将打印出npm在尝试安装模块时正在执行的所有步骤。
其他可能的问题:
您的python安装可能需要进行gyp break。我总是建议您首先尝试在有问题的服务器上构建节点本身来测试您的部署环境,因为这样可以解决破坏软件包的任何问题(并且那里有很多已损坏的软件包)。
另一件事是确保您的用户具有对安装节点模块的任何位置的写权限。
答案 1 :(得分:0)
#!/bin/bash
#My quasi bash script. This worked for Ubuntu v14.04 using Node.js v5.1.0 and mongodb v3.0.7
clear
# prerequisites for building node.js from its source files
sudo apt-get install clang-3.5 make gcc g++ libssl-dev libkrb5-dev
# where you extracted the latest stable release. https://github.com/nodejs/node/releases
cd ~/Downloads/node
# git clone https://github.com/nodejs/node # this does NOT work because it gets a beta/pre release.
./configure
# "-j 3" uses two processors for the compile on a duo core processor. 3 means 2 for some reason.
make -j 3
sudo make install
make doc
make test
# prerequisites for being able to use '$ npm install mongodb'
cd ~
sudo npm install -g node-gyp
sudo npm install -g kerberos
# npm mongodb will NOT install globally '-g'. Therefore you have to install local to each project.
#cd to/your/project/directory
# make sure you are in your project directory root and that the "node_modules" directory is not 'root:root'
npm install mongodb --save