linux - Amazon AWS EC2 Linux 上的 Node-gyp Connect-mongo

标签 linux node.js amazon-ec2 node-gyp connect-mongo

我无法在我的 EC2 实例上安装 connect-mongo。与无法访问“/root/.node-gyp/0.10.40”的 node-gyp 有关——这很奇怪,因为安装的 Node 版本是 4.2.1。

文件夹“/root/.node-gyp/”甚至不会在系统上退出。那么为什么 node-gyp 会在那里寻找呢?

在配置服务器时,我先安装了 Node 0.10.40,然后升级到 4.2.1。

我们如何将 node-gyp 指向正确的目录?还是其他地方的问题?

在本地主机上成功安装日志:

$ node --version
v4.2.1
$ npm --version
2.14.7

$ npm install connect-mongo --save
|
> kerberos@0.0.16 install /Users/username/Sites/adserver/node_modules/connect-mongo/node_modules/mongodb/node_modules/mongodb-core/node_modules/kerberos
> node-gyp rebuild

  CXX(target) Release/obj.target/kerberos/lib/kerberos.o
  CXX(target) Release/obj.target/kerberos/lib/worker.o
  CC(target) Release/obj.target/kerberos/lib/kerberosgss.o
../lib/kerberosgss.c:509:13: warning: implicit declaration of function 'gss_acquire_cred_impersonate_name' is invalid in C99 [-Wimplicit-function-declaration]
        maj_stat = gss_acquire_cred_impersonate_name(&min_stat,
                   ^
1 warning generated.
  CC(target) Release/obj.target/kerberos/lib/base64.o
  CXX(target) Release/obj.target/kerberos/lib/kerberos_context.o
  SOLINK_MODULE(target) Release/kerberos.node
connect-mongo@0.8.2 node_modules/connect-mongo
├── depd@1.1.0
├── debug@2.2.0 (ms@0.7.1)
└── mongodb@2.0.47 (es6-promise@2.1.1, readable-stream@1.0.31, mongodb-core@1.2.20)

在 EC2 Linux 上安装失败的日志:

$ node --version
v4.2.1
$ npm --version
2.14.7

$ sudo npm install connect-mongo
\
> kerberos@0.0.16 install /home/ec2-user/apps/adserver/node_modules/connect-mongo/node_modules/mongodb/node_modules/mongodb-core/node_modules/kerberos
> node-gyp rebuild

gyp WARN EACCES user "root" does not have permission to access the dev dir "/root/.node-gyp/0.10.40"
gyp WARN EACCES attempting to reinstall using temporary dev dir "/home/ec2-user/apps/adserver/node_modules/connect-mongo/node_modules/mongodb/node_modules/mongodb-core/node_modules/kerberos/.node-gyp"
make: Entering directory `/home/ec2-user/apps/adserver/node_modules/connect-mongo/node_modules/mongodb/node_modules/mongodb-core/node_modules/kerberos/build'
  CXX(target) Release/obj.target/kerberos/lib/kerberos.o
In file included from ../lib/kerberos.cc:1:0:
../lib/kerberos.h:5:27: fatal error: gssapi/gssapi.h: No such file or directory
 #include <gssapi/gssapi.h>
                           ^
compilation terminated.
make: *** [Release/obj.target/kerberos/lib/kerberos.o] Error 1
make: Leaving directory `/home/ec2-user/apps/adserver/node_modules/connect-mongo/node_modules/mongodb/node_modules/mongodb-core/node_modules/kerberos/build'
gyp ERR! build error 
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/usr/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:267:23)
gyp ERR! stack     at ChildProcess.emit (events.js:98:17)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (child_process.js:820:12)
gyp ERR! System Linux 4.1.7-15.23.amzn1.x86_64
gyp ERR! command "node" "/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /home/ec2-user/apps/adserver/node_modules/connect-mongo/node_modules/mongodb/node_modules/mongodb-core/node_modules/kerberos
gyp ERR! node -v v0.10.40
gyp ERR! node-gyp -v v1.0.1
gyp ERR! not ok 
npm WARN optional dep failed, continuing kerberos@0.0.16
connect-mongo@0.8.2 node_modules/connect-mongo
├── depd@1.1.0
├── debug@2.2.0 (ms@0.7.1)
└── mongodb@2.0.47 (readable-stream@1.0.31, es6-promise@2.1.1, mongodb-core@1.2.20)
[ec2-user@ip-172-31-9-139 adserver]$ 

最佳答案

问题不在于 gyp WARN EACCESS ... 消息。这只是一个警告,npm 可以继续使用解决方法。但要消除此警告消息,请参阅 this link .

问题在于:

./lib/kerberos.h:5:27: fatal error: gssapi/gssapi.h: No such file or directory
 #include <gssapi/gssapi.h>

我找到了这个 link解决方案(在 Ubuntu/Debian 上)似乎是:

sudo apt-get install libkrb5-dev

关于linux - Amazon AWS EC2 Linux 上的 Node-gyp Connect-mongo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33406334/

相关文章:

linux - 程序集:从 stdin 读取整数,增加它并打印到 stdout

javascript - 另一个 "can' t 在发送后设置 header ”

javascript - 等到 promise 完成

linux - 如何解决 amazon ec2 linux 上的 httpd 冲突?

linux - SO_REUSEADDR(setsockopt 选项)的含义是什么 - Linux?

linux - 如果我安装了 SIGCHLD 处理程序,对特定 pid 的 *blocking* 等待是否仍然有效?

c++ - 使用 execvp() 执行进程时加载用户环境;

node.js - Heroku 部署结束时出现错误 npm ERR! 404 未找到 : event-stream@3. 3.6

amazon-web-services - AWS 上的 CloudFormation 模板错误

node.js - AWS EC2未安装nodejs