J'essaie d'installer le gem pg pour l'utiliser avec Postgres.app sur mon ordinateur local. Je cours des non-conformistes.
Postgres.app est installé et fonctionne bien, mais je ne parviens pas à faire fonctionner la gemme. J'ai fait ce qui suit:
Tous sans succès. Voici le message d'erreur spécifique que je reçois:
Building native extensions with: '--with-pg-config=/Applications/Postgres.app/Contents/MacOS/bin/pg_config'
This could take a while...
ERROR: Error installing pg:
ERROR: Failed to build gem native extension.
/Users/Brian/.rvm/rubies/Ruby-2.0.0-p353/bin/Ruby extconf.rb --with-pg-config=/Applications/Postgres.app/Contents/MacOS/bin/pg_config
Using config values from /Applications/Postgres.app/Contents/MacOS/bin/pg_config
sh: /Applications/Postgres.app/Contents/MacOS/bin/pg_config: No such file or directory
sh: /Applications/Postgres.app/Contents/MacOS/bin/pg_config: No such file or directory
checking for libpq-fe.h... no
Can't find the 'libpq-fe.h header
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers. Check the mkmf.log file for more details. You may
need configuration options.
Provided configuration options:
--with-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--Ruby=/Users/Brian/.rvm/rubies/Ruby-2.0.0-p353/bin/Ruby
--with-pg
--without-pg
--with-pg-config
--with-pg-dir
--without-pg-dir
--with-pg-include
--without-pg-include=${pg-dir}/include
--with-pg-lib
--without-pg-lib=${pg-dir}/
J'apprécierais toute aide que vous pourriez offrir. Merci!
Vous avez probablement le mauvais chemin pour --with-pg-config
, vérifiez s'il est réellement là.
Vous pouvez trouver le chemin correct pour pg_config
avec:
find /Applications -name pg_config
Dans la dernière version de Postgres.app, le chemin est le suivant:
gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.5/bin/pg_config
Dans mon cas (exécutant Postgres.app v9.3.4.2), il ne semblait fonctionner que lors de l'ajout des indicateurs d'architecture d'environnement:
env ARCHFLAGS="-Arch x86_64" gem install pg -- \
--with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config
Étant sur un tout nouveau Mac, voici ce que je devais faire:
Maintenant, lancez (espérons une commande à l'épreuve du temps):
version=$(ls /Applications/Postgres.app/Contents/Versions/ | tail -1)
gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/$version/bin/pg_config .
Si vous rencontrez des problèmes, vous pouvez résoudre un problème en consultant l'erreur réelle dans le fichier mkmf.log que vous pouvez trouver en exécutant (si vous utilisez rvm):
cd ~/.rvm ; find . -name mkmf.log | grep pg
J'ai pu installer pg avec cette commande
gem install pg -- --with-pg-config=/Library/PostgreSQL/9.3/bin/pg_config
J'ai trouvé mon chemin en courant
Sudo find / -name "pg_config"
et j'ai installé avec succès pg-0.17.1
Pour résoudre ce problème, j'ai installé postgres en utilisant homebrew à l'aide des éléments suivants dans la fenêtre du terminal:
brew install postgres
Homebrew peut être trouvé ici
Cela a fonctionné pour moi:
gem install pg -- --with-pg-config=`which pg_config`
l'ajout du répertoire bin postgress au chemin fait également l'affaire. Ajoutez simplement le bac à la pat comme ceci. Avec les installations récentes, le dernier lien symbolique garantit que ce chemin doit être "stable" pour les futures mises à niveau.
export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/latest/bin
Pour référence future, car beaucoup d’entre nous affichons de nouveaux chemins pour les nouveaux numéros de version:
Actuellement, je vois un lien symbolique appelé latest
dans /Applications/Postgres.app/Contents/Versions/
.
Vous devriez pouvoir faire juste:
$ gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/latest/bin/pg_config
Et oubliez le numéro de version. Cela peut ne pas s'appliquer à toutes les versions (les plus anciennes), mais je recherchais moi-même un extrait que je pourrais sauvegarder et réutiliser.