Rails 3 - impossible d'installer pg gem

98

Lorsque j'essaye d'exécuter bundle (bundle install), je reçois tout le temps

Installing pg (0.13.2) with native extensions 
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

        /Users/ryan/.rvm/rubies/ruby-1.9.2-p290/bin/ruby extconf.rb 
checking for pg_config... no
No pg_config... trying anyway. If building fails, please try again with
 --with-pg-config=/path/to/pg_config
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
    --without-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/ryan/.rvm/rubies/ruby-1.9.2-p290/bin/ruby
    --with-pg
    --without-pg
    --with-pg-dir
    --without-pg-dir
    --with-pg-include
    --without-pg-include=${pg-dir}/include
    --with-pg-lib
    --without-pg-lib=${pg-dir}/lib
    --with-pg-config
    --without-pg-config
    --with-pg_config
    --without-pg_config


Gem files will remain installed in /Users/ryan/.rvm/gems/ruby-1.9.2-p290/gems/pg-0.13.2 for inspection.
Results logged to /Users/ryan/.rvm/gems/ruby-1.9.2-p290/gems/pg-0.13.2/ext/gem_make.out
An error occured while installing pg (0.13.2), and Bundler cannot continue.
Make sure that `gem install pg -v '0.13.2'` succeeds before bundling.

J'utilise Mac OS X 10.6, la version de PostgreSQL installée est la 9.1. J'ai trouvé que le problème se trouve dans la libpq-dev , comment puis-je installer / résoudre ce problème?

user984621
la source
2
comment avez-vous installé postgres sur votre mac?
shingara
1
cette façon
user984621
on_click installer? Flink? ou MacPort?
shingara
J'ai essayé d'installer cela de cette façon:, sudo port install libpq-devmais un autre problème - Error: Port libpq-dev not found To report a bug, see <http://guide.macports.org/#project.tickets>. C'est terrible, encore quelques problèmes ...
user984621
1
Voir cette question: [ici] [1] [1]: stackoverflow.com/questions/10321189/…
banditKing

Réponses:

78

Comme indiqué dans votre journal des erreurs, vous devez passer le chemin vers le fichier pg_config. Essayez d'installer la gemme en utilisant:

gem install pg -- --with-pg-config= 'PATH_TO_YOUR_PG_CONFIG'

Si vous ne savez pas où se trouve votre pg_config et en supposant que vous êtes sous Linux ou Mac, vous pouvez exécuter la commande suivante:

which pg_config

Votre pg-config peut se trouver à différents endroits selon la façon dont vous avez installé postgres.

Ethan
la source
A noter, le package binaire du site Postgres ne contient pas les en-têtes de développement ni le pg_configprogramme.
tadman
3
Le paquet binaire d'ici: enterprisedb.com/products-services-training/pgdownload#osx certainement ne contiennent à la fois pg_config(par exemple, à /Library/PostgreSQL/9.1/bin/pg_configdes 9.1.x) et les en- têtes de développement. C'est ce que j'utilise pour tester la pggemme en développement.
Michael Granger
8
Ne serait pas which pg_configplus rapide que find / -name pg_config?
Justin D.
Modifications mineures de vos arguments de ligne de commande. Le remplacement de la version par votre version actuelle devrait fonctionner correctement. Voici ma ligne de commande: sudo env ARCHFLAGS = "- arch x86_64" gem install pg - --with-pg-include = / Library / PostgreSQL / 9.1 / include / --with-pg-lib = / Library / PostgreSQL / 9.1 / lib /
Rod Paddock
13
Sur OSX, vous pouvez également utiliser brew pour obtenir les en-têtes brew install libpqxxet tout se passera bien.
Vetsin
99

si vous utilisez Linux, vous pourriez être intéressé par ce qui a fonctionné pour moi:

sudo apt-get install postgresql
sudo apt-get install libpq-dev

ensuite

gem install pg

puis

bundle install

src: http://wikimatze.de/installing-postgresql-gem-under-ubuntu-and-mac

EE33
la source
1
merci, comme c'est dans mon cas - pas besoin d'exécuter bundle gem install pg
valk
21
Ne convient pas pour OS X.
dfrankow
1
A travaillé pour moi en novembre 2013 sous Ubuntu 13.04!
Starkers
pourquoi cela a-t-il autant de votes positifs alors que c'est clairement pour le mauvais système d'exploitation?
sevenseacat
1
@sevenseacat indique clairement le système d'exploitation sur lequel il doit être utilisé. Et il est clair que beaucoup de gens avec des OS Linux trouvent cette réponse lorsqu'ils étudient ce problème.
EE33
57

Si vous utilisez Postgress.app, vous souhaiterez accéder à ses outils de ligne de commande . Entrez la ligne suivante dans votre terminal ou votre profil PATH :

 PATH="/Applications/Postgres.app/Contents/MacOS/bin:$PATH"

gem install pgdevrait maintenant fonctionner. (C'est ce qui a fonctionné pour moi.)

Remarque Le chemin des nouvelles versions ressemble à ceci:

/Applications/Postgres.app/Contents/Versions/<version>/bin
Ari
la source
3
Merci beaucoup! J'ai passé une demi-heure à parcourir des choses qui ne fonctionnaient pas et j'ai finalement trouvé cela enterré ici. : D
Peter Brown
1
Excellente solution qui ne nécessite pas d'infusion.
lucian303
7
Sachez simplement que le correctif Postgre.app a changé dans la version 93. c'est maintenant: /Applications/Postgres93.app/Contents/MacOS/bin
Alain
2
Cela a fonctionné pour moi, même si mon bac était dans un endroit très différent -> /Library/PostgreSQL/9.3/bin
Jeremiah
5
C'est maintenant - à /Applications/Postgres.app/Contents/Versions/9.3/binpartir de 9.3.5 si vous utilisez le Postgres.app
Ashley
21

Si vous avez un homebrew, tapez simplement:

$ brew installer postgresql

Si vous ne l'avez pas, téléchargez en tapant ceci dans votre terminal:

ruby -e "$ (curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install )"

utilisateur2373148
la source
12

Recherchez libpq:

brew search libpq

Devrait sortir libpqxx

Ensuite, essayez de l'installer:

brew install libpqxx
jlucasps
la source
8

Il vous suffit d'installer libpq-dev:

sudo apt-get install libpq-dev

Ensuite, la gemme devrait s'installer très bien.

Travis Reeder
la source
8
Ne convient pas pour OS X.
dfrankow
Dans mon cas, seul cela a aidé. Merci!
kovpack
7

Suivez les instructions de post-installation: http://postgresapp.com/documentation/configuration-ruby.html

Pour installer le gem pg, assurez-vous d'avoir correctement configuré votre $ PATH (comme spécifié dans http://postgresapp.com/documentation/cli-tools.html ), puis exécutez

sudo ARCHFLAGS="-arch x86_64" gem install pg

Je recommande fortement de lire les deux pages. Je les ai juste écrémés et j'ai perdu 1 heure de ma vie. Lisez-les, problème résolu.

CGK
la source
Fonctionne sur OSX 10.9.5, par défaut ruby ​​version 2.0, rbenv version locale 1.9.3.
jlucasps
Fonctionne sur OSX 10.11 MERCI
Yarin
Fonctionne sur OSX 10.11.4. Merci!!
Martyn Chamberlin
3

Le problème que j'avais était que, pour une raison quelconque, il essayait de compiler avec /usr/bin/gcc-4.2. J'ai découvert cela en changeant try_cpp dans mkmf.rb (que j'ai vu dans la trace de la pile) pour lever une exception avec la ligne de compilation qui échouait.

J'ai lié gcc à gcc-4.2 et cela a fonctionné:

sudo ln -s /usr/bin/gcc /usr/bin/gcc-4.2

Pourquoi essayait-il d'utiliser gcc-4.2? Aucune idée.

La ligne de compilation réelle:

/usr/bin/gcc-4.2 -E -I/Users/dfrankow/.rvm/rubies/ruby-1.9.3-p125/include/ruby-1.9.1/x86_64-darwin11.4.0 -I/Users/dfrankow/.rvm/rubies/ruby-1.9.3-p125/include/ruby-1.9.1/ruby/backward -I/Users/dfrankow/.rvm/rubies/ruby-1.9.3-p125/include/ruby-1.9.1 -I. -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE   -I/usr/local/Cellar/postgresql/9.1.4/include  -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wshorten-64-to-32 -Wimplicit-function-declaration  -fno-common -pipe  conftest.c -o conftest.i (RuntimeError)
dfrankow
la source
3

J'ai eu le même problème mais mon Postgres était installé dans

/Library/PostgreSQL/9.3

Mise à jour du ~ / .bash_profile en ajoutant:

export PATH=/Library/PostgreSQL/9.3/bin:$PATH

Ouvrez un nouveau terminal, exécutez bundle updateet cela a fonctionné pour moi. Merci Ari.

Trang Tung Nguyen
la source
mais pour que je travaille, je dois vérifier la version puis exporter PATH = / Applications / Postgres.app / Contents / Versions / 9.4 / bin: $ PATH
Prateep Kul
1

Vous pouvez définir une option de configuration de construction bundle config build.pg --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_configet l'utiliser gem install pgsans aucune option (le chemin vers pg_config peut être différent pour vous, celui-ci est pour Postgresapp 9.3.5.0)

Konstantine Kalbazov
la source
1

J'ai eu le même problème dans ma machine openSUSE13.1 KDE. Avant ce problème que j'ai rencontré, j'avais installé uniquement les packages postgresqlet en postgresql-serverutilisant la zyppercommande. Puis installé à nouveau 2 autres packages:

[arup@to_do_app]$ sudo zypper in postgresql-devel postgresql-contrib
root's password:
Loading repository data...
Reading installed packages...
Resolving package dependencies...
#....

Ensuite, j'ai couru à nouveau bundle install, et succès !!!

Arup Rakshit
la source
0

Tout d'abord, désinstallez toutes les versions de Homebrew. L'option --force permet de désinstaller toutes les versions.

brew rm postgresql --force

Modifiez les chemins en fonction de votre version.

sudo /sbin/SystemStarter stop postgresql-8.4
sudo rm -rf /Applications/PostgreSQL\ 8.4
sudo rm -rf /etc/postgres-reg.ini
sudo rm -rf /Library/StartupItems/postgresql-8.4
sudo rm -rf /Library/PostgreSQL/8.4
sudo dscl . delete /users/postgres

Modifiez / etc / profile et supprimez toutes les lignes faisant référence à "postgres".

nano /etc/profile

Installez PostgresSQL

brew update
brew install postgresql

Installer de PG GEM

gem install pg

C'est tout. Cordialement.

pabloverd
la source
0

Vous pouvez d'abord vérifier si vous avez un fichier postrgresql dans votre terminal en allant dans le fichier lib. allez cd ~ / opt / local / lib / puis tapez ls et le bouton Entrée. Cela vous montrera une liste de tous les fichiers qui se trouvent dans le répertoire lib.

1.si vous n'avez pas postreseql, vous pouvez télécharger via macports. sudo port installer postgresql93 @ 9.3.2_1

Maintenant, cd de nouveau dans votre dossier que vous essayez de regrouper l'installation

  1. faire fonctionner votre pg avec votre fichier postgesql que vous avez ou venez de télécharger gem install pg - --with-pg-config = / opt / local / lib / postgresql93 / bin / pg_config

lancez maintenant l'installation du bundle

user3256740
la source
0

Sur Fedora:

dnf install postgresql-devel
Mayuresh Srivastava
la source
0

Ce qui a fonctionné pour moi sur El Capitan était la mise à niveau de ruby ​​de la valeur par défaut du système vers la version 2.3.1 semblait trouver les bibliothèques correctes dont le pggemme avait besoin.

Abe Petrillo
la source