【问题标题】:Error installing node-postgres on Amazon Linux. Missing pg_config.h file在 Amazon Linux 上安装 node-postgres 时出错。缺少 pg_config.h 文件
【发布时间】:2015-10-23 03:20:48
【问题描述】:

这个错误在 windows 机器上似乎很常见,但是当我 npm install pg 时,我的 Amazon Linux EC2 实例抛出了这个错误:

../src/binding.cc:1:23: fatal error: pg_config.h: No such file or directory
 #include <pg_config.h>
                       ^
compilation terminated.
make: *** [Release/obj.target/binding/src/binding.o] Error 1
make: Leaving directory `/home/ec2-user/macros/test/stateHash/node_modules/pg/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/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:807:12)
gyp ERR! System Linux 3.4.82-69.112.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/macros/test/stateHash/node_modules/pg
gyp ERR! node -v v0.10.28
gyp ERR! node-gyp -v v0.10.6
gyp ERR! not ok

我在 Amazon Linux 2014.03 上,它是一个运行 node 0.10.28 的微型实例。

Postgres 9.2.7 是从 Amazon 存储库安装的。具体来说,postgresql9* 包。

在新鲜的updatedblocate pg_config 返回

/usr/bin/pg_config
/usr/share/locale/cs/LC_MESSAGES/pg_config-9.2.mo
/usr/share/locale/de/LC_MESSAGES/pg_config-9.2.mo
/usr/share/locale/es/LC_MESSAGES/pg_config-9.2.mo
/usr/share/locale/fr/LC_MESSAGES/pg_config-9.2.mo
/usr/share/locale/it/LC_MESSAGES/pg_config-9.2.mo
/usr/share/locale/ja/LC_MESSAGES/pg_config-9.2.mo
/usr/share/locale/ko/LC_MESSAGES/pg_config-9.2.mo
/usr/share/locale/nb/LC_MESSAGES/pg_config-9.2.mo
/usr/share/locale/pl/LC_MESSAGES/pg_config-9.2.mo
/usr/share/locale/pt_BR/LC_MESSAGES/pg_config-9.2.mo
/usr/share/locale/ro/LC_MESSAGES/pg_config-9.2.mo
/usr/share/locale/ru/LC_MESSAGES/pg_config-9.2.mo
/usr/share/locale/sv/LC_MESSAGES/pg_config-9.2.mo
/usr/share/locale/ta/LC_MESSAGES/pg_config-9.2.mo
/usr/share/locale/tr/LC_MESSAGES/pg_config-9.2.mo
/usr/share/locale/zh_CN/LC_MESSAGES/pg_config-9.2.mo
/usr/share/locale/zh_TW/LC_MESSAGES/pg_config-9.2.mo
/usr/share/man/man1/pg_config.1.gz

但是locate pg_config.h 什么也没返回。

有什么想法吗?

【问题讨论】:

    标签: linux node.js postgresql amazon-ec2 node-postgres


    【解决方案1】:

    默认安装了postgresql9postgresql9-libspostgresql9-server,但未安装postgresql9-devel

    node-postgres 所需的头文件在缺少的开发包中。以下步骤解决了我的问题:

    1. 删除node-postgres目录:

      $ rm -rf node_modules/pg

    2. 从存储库安装 postgres 开发包(仔细匹配您的版本 - 亚马逊存储库在 postgres 方面一团糟):

      $ sudo yum install postgresql9-devel

    3. 重新安装node-postgres(我在本地做,你可能使用-g选项):

      $ npm install pg

    pg_config.h 文件应该在那里,所以安装应该可以正常工作!

    【讨论】:

    • 不敢相信这没有更多的赞成票。解决了我的问题。
    猜你喜欢
    • 2021-09-09
    • 2017-10-28
    • 1970-01-01
    • 2017-08-19
    • 2021-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多