Erreur d’installation de node-postgres sur Amazon Linux. Fichier pg_config.h manquant

Cette erreur semble commune sur les boîtes Windows, mais mon instance Amazon Linux EC2 lance cette erreur lorsque je npm install pg :

 ../src/binding.cc:1:23: fatal error: pg_config.h: No such file or directory #include  ^ 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 

Je suis sur Amazon Linux 2014.03 , et c’est une micro-instance exécutant le noeud 0.10.28 .

Postgres 9.2.7 est installé à partir des repos Amazon. Plus précisément, les packages postgresql9* .

Sur une nouvelle mise à jour, locate pg_config retours de locate 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 

Mais locate pg_config.h ne retourne rien.

Des idées?

postgresql9 , postgresql9-libs et postgresql9-server ont été installés par défaut, mais pas postgresql9-devel .

Les fichiers d’en-tête requirejs par node-postgres trouvent dans le package de développement manquant. Les étapes suivantes ont résolu mon problème:

  1. Supprimez le répertoire node-postgres :

    $ rm -rf node_modules/pg

  2. Installez le package de développement postgres à partir des repos ( faites attention à votre version – les repos d’Amazon sont un gâchis quand il s’agit de postgres ):

    $ sudo yum install postgresql9-devel

  3. Réinstallez node-postgres (je le fais localement, vous utilisez peut-être l’option -g ):

    $ npm install pg

Le fichier pg_config.h devrait être présent, donc l’installation devrait fonctionner correctement!