gem install pg ne fonctionne pas sur mac OSX Lion
Il existe des variantes de cette question de rebondir autour, mais aucun d'entre eux semblent avoir une réponse qui résout mon problème.
Je suis sous OSX Lion (10.7.3). Le dernier XCode est installé.
J'ai installé Postgres à l'aide de la Postgres.package de l'application de postgresapp.com.
Mais quand j'essaie d'installer le pg gem, je reçois un échec:
$ gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/MacOS/bin/pg_config
Building native extensions. This could take a while...
ERROR: Error installing pg:
ERROR: Failed to build gem native extension.
/Users/disaacs/.rvm/rubies/ruby-1.9.3-p125/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
checking for libpq-fe.h... *** 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/disaacs/.rvm/rubies/ruby-1.9.3-p125/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
/Users/disaacs/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/mkmf.rb:381:in `try_do': The compiler failed to generate an executable file. (RuntimeError)
You have to install development tools first.
from /Users/disaacs/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/mkmf.rb:506:in `try_cpp'
from /Users/disaacs/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/mkmf.rb:970:in `block in find_header'
from /Users/disaacs/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/mkmf.rb:790:in `block in checking_for'
from /Users/disaacs/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/mkmf.rb:284:in `block (2 levels) in postpone'
from /Users/disaacs/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/mkmf.rb:254:in `open'
from /Users/disaacs/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/mkmf.rb:284:in `block in postpone'
from /Users/disaacs/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/mkmf.rb:254:in `open'
from /Users/disaacs/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/mkmf.rb:280:in `postpone'
from /Users/disaacs/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/mkmf.rb:789:in `checking_for'
from /Users/disaacs/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/mkmf.rb:969:in `find_header'
from extconf.rb:40:in `<main>'
Gem files will remain installed in /Users/disaacs/.rvm/gems/ruby-1.9.3-p125/gems/pg-0.13.2 for inspection.
Results logged to /Users/disaacs/.rvm/gems/ruby-1.9.3-p125/gems/pg-0.13.2/ext/gem_make.out
La sortie de la /Applications/Postgres.app/Contents/MacOS/bin/pg_config
commande est:
$ /Applications/Postgres.app/Contents/MacOS/bin/pg_config
BINDIR = /Applications/Postgres.app/Contents/MacOS/bin
DOCDIR = /Applications/Postgres.app/Contents/MacOS/share/doc
HTMLDIR = /Applications/Postgres.app/Contents/MacOS/share/doc
INCLUDEDIR = /Applications/Postgres.app/Contents/MacOS/include
PKGINCLUDEDIR = /Applications/Postgres.app/Contents/MacOS/include
INCLUDEDIR-SERVER = /Applications/Postgres.app/Contents/MacOS/include/server
LIBDIR = /Applications/Postgres.app/Contents/MacOS/lib
PKGLIBDIR = /Applications/Postgres.app/Contents/MacOS/lib
LOCALEDIR = /Applications/Postgres.app/Contents/MacOS/share/locale
MANDIR = /Applications/Postgres.app/Contents/MacOS/share/man
SHAREDIR = /Applications/Postgres.app/Contents/MacOS/share
SYSCONFDIR = /Applications/Postgres.app/Contents/MacOS/etc
PGXS = /Applications/Postgres.app/Contents/MacOS/lib/pgxs/src/makefiles/pgxs.mk
CONFIGURE = '--prefix=/Users/mattt/Code/heroku/Postgres/Postgres/Vendor/postgres' '--enable-thread-safety' '--with-openssl' '--with-gssapi' '--with-bonjour' '--with-krb5' '--with-libxml' '--with-libxslt' '--with-ossp-uuid' '--with-perl' '--with-python'
CC = gcc
CPPFLAGS = -I/usr/include/libxml2
CFLAGS = -O2 -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -Wformat-security -fno-strict-aliasing -fwrapv
CFLAGS_SL =
LDFLAGS = -Wl,-dead_strip_dylibs
LDFLAGS_EX =
LDFLAGS_SL =
LIBS = -lpgport -lxslt -lxml2 -lssl -lcrypto -lgssapi_krb5 -lz -lreadline -lm
VERSION = PostgreSQL 9.1.3
Toutes les personnes semblent être correct, sauf pour la configuration de la variable (qui semble se référer à un autre ordinateur, je n'ai pas de nom d'utilisateur mattt).
Le contenu de la mkmf.le fichier journal est
"/usr/bin/gcc-4.2 -o conftest -I/Users/disaacs/.rvm/rubies/ruby-1.9.3-p125/include/ruby-1.9.1/x86_64-darwin10.8.0 -I/Users/disaacs/.rvm/rubies/ruby-1.9.3-p125/include/ruby-1.9.1/ruby/backward -I/Users/disaacs/.rvm/rubies/ruby-1.9.3-p125/include/ruby-1.9.1 -I. -I/Users/disaacs/.rvm/usr/include -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -I/Applications/Postgres.app/Contents/MacOS/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 -L. -L/Users/disaacs/.rvm/rubies/ruby-1.9.3-p125/lib -L/Users/disaacs/.rvm/usr/lib -L. -L/usr/local/lib -L/Applications/Postgres.app/Contents/MacOS/lib -lruby.1.9.1 -lpthread -ldl -lobjc "
checked program was:
/* begin */
1: #include "ruby.h"
2:
3: int main() {return 0;}
/* end */
Toutes les suggestions seraient appréciées.
J'ai regardé le extconf.rb fichier, et après un peu de débogage, j'ai trouvé que c'est un appel à
find_header ('libpq-fe.h')
qui est un échec. Non pas parce que libpq-fe.h n'est pas là, mais parce que le find_header
méthode elle-même est un échec. J'ai essayé de courir find_header à l'aide de la cisr, et a obtenu le même message d'erreur:
$ irb
1.9.3-p125 :001 > require 'mkmf'
=> true
1.9.3-p125 :002 > find_header 'libpq-fe.h'
checking for libpq-fe.h... RuntimeError: The compiler failed to generate an executable file.
You have to install development tools first.
EDIT:
Trouvé mon ordinateur doit être encore plus complètement foireuse que je ne le pensais. Je faisais bundle install pour un autre projet, et j'ai eu une très similaires échec de l'installation du gem sqlite3.
checking for sqlite3.h... *** extconf.rb failed ***
Je n'ai jamais eu de problèmes avec le gem sqlite3 dans le passé.
- stackoverflow.com/questions/8548809/...
- La solution de la question dans ce lien est d'installer le dernier XCode. J'ai déjà le dernier XCode installé.
- Avez-vous essayé d'installer pq à l'aide de homebrew? Aussi la peine d'essayer de voir si le
libpq
oulibpq-dev
forfaits sont disponibles. - J'ai essayé d'installer postgres à l'aide de Homebrew. Je reçois la même erreur lors de l'installation du gem "la vérification de libpq-fe.h... *** extconf.rb a échoué ***" --qu'est-Ce que la libpq-fe.h fichier de toute façon? J'ai regardé dans les fichiers qui ont été installés avec postgres, et il n'y a pas de libpq-fe.h fichier. Il y a un libpq-fs.h fichier.
- J'ai trouvé libpq-fe.h dans /usr/local/include, mais même lorsque je ajouter ce répertoire à l'aide de --with-pg-comprendre, il ne fait aucune différence.
- [supprimé] Oups, pensé que c'était une autre question. Vous avez été d'obtenir la même erreur.
- Si vous créez manuellement le programme de sous-évaluées dans le mkmf.journal, et d'essayer de le compiler en utilisant la ligne juste au-dessus de (/usr/bin/gcc-4.2 [...]), ce qui se passe?
- Je viens d'ajouter quelques informations supplémentaires au fond de ma question d'origine. Il semble que c'est un appel à find_header, à partir de la mkmf de la bibliothèque, qui est à l'origine du problème.
- Avez-vous essayé stackoverflow.com/questions/4393189/...
- Où est le mkmf.fichier journal?
- le mkmf.fichier journal peut être trouvé sous le joyau du répertoire d'installation. E. g., si à l'aide de RVM, puis cherchez un répertoire comme ~/.rvm/gems/ruby 1.9.3-p125/gems/pg-0.13.2/ext/mkmf.journal. Ou essayez d'exécuter la commande `find . | grep mkmf.le journal de la .rvm répertoire. Qui vous permettra de trouver tous les.
Vous devez vous connecter pour publier un commentaire.
J'ai enfin trouvé la cause du problème! Si je ne suis toujours pas sûr de savoir comment ce problème est survenu.
Regarde le contenu de la mkmf.fichier journal est créé lors de ma commande d'installation échoue (voir mon premier post). Il enregistre une tentative d'exécuter la commande suivante
Il n'y a pas de
/usr/bin/gcc-4.2
sur mon système. Il y a ungcc
, qui est symboliquement lié àllvm-gcc-4.2
. Ma solution a été de créer un autre lien symboliqueAprès avoir fait ce lien, mon
gem install pg
commande a fonctionné sans aucun problème.J'ai trouvé la solution à ce problème sur le Congelés Canuck blog dans le post Erreur lors de l'Installation de Ruby Gem avec C Extension. Il suppose que le problème peut être causé par le conflit entre les versions de XCode. quelle que soit la cause, mon éternelle reconnaissance!
Sur OS X Mavericks
œuvres.
J'ai eu un problème similaire. À la suite d'une réponse par bobfet1 pour un problème similaire j'ai été en mesure d'obtenir la gemme installé par:
--
aprèspg
? Il ne semble pas fonctionner sans eux, mais je ne sais pas ce qu'ils sont pour.gem help install
: "Vous pouvez avoir besoin de spécifier le chemin d'accès à la bibliothèque, en-têtes et les bibliothèques de continuer [à construire une extension]. Vous pouvez le faire en ajoutant un-entre RubyGems' options et l'extension du build options". En général,--
signifie "arguments suivants ne sont pas des options." E. g.rm -- -r
supprime un fichier nommé-r
.Grâce à ce mec: http://www.computersnyou.com/2025/
Sur les Mavericks de l'aide:
xcode-select --install
(en supposant que vous avez installé Xcode à partir de l'app store) fonctionne.L'installation de xcode à partir de l'app store n'est pas assez. Vous aurez également besoin d'xcode s outils de ligne de commande.
https://developer.apple.com/library/ios/#documentation/DeveloperTools/Conceptual/WhatsNewXcode/Articles/xcode_4_3.html
Après l'installation de xcode à partir de l'app store, ouvrez xcode.
Goto Xcode->Ouvrir l'Outil de Développeur->Plus d'Outils de développement
Téléchargez et installez les derniers outils de ligne de commande.
Ouvrez une fenêtre de terminal et exécutez:
sudo gem install pg
Problème similaire sur Mavericks 10.9 -- mais elle a été causée par ne pas avoir accepté l'Xcode contrat de licence. Blech.
Exécuter
sudo xcodebuild
et conviennent à la poubelle. Le tout fonctionne comme prévu.J'ai aussi rencontré ce problème, pour moi, la réponse a été mise à jour RVM de toutes choses.
Moi aussi, je suis sur la Montagne du Lion, en plus de la "sudo ln -s /usr/bin/{llvm,}gcc-4.2" suggéré par @grilix, j'avais besoin de faire:
Après un Mavericks mise à niveau...
Réinstaller votre version de ruby.
puis
ou quelle que soit la version de ruby que vous avez.
Je suis sur la Montagne du Lion, et l'on a accepté la réponse de Dave Isaacs a fonctionné pour moi. J'ai également eu à faire
sudo ln -s /usr/bin/{llvm-,}gcc-4.2
travaillé.Plutôt que la mise à jour de RVM lui-même (https://stackoverflow.com/a/10430742/2807795), comme ci-dessus, c'était la réinstallation de Ruby 2.0.0-p247 qui a fait le tour, après avoir essayé toutes les autres étapes ci-dessus sans succès.
En cas d'échec:
Puis, en cas d'échec:
Après vous trouvez
pg_config
de l'emplacement, le lancer pour enfin l'installer:Bien sûr, vous aurez envie de modifier le chemin d'accès à l'endroit où vous avez trouvé
pg_config
.Ensuite, vérifiez votre installation gemmes avec
gem list
, et il devrait afficher quelque chose comme ceci:Plus d'informations peuvent être trouvées dans mon guide.
Si la sortie inclut:
alors il n'y a vraiment quelque chose qui cloche avec votre environnement de compilation. Surtout quand l'échec est le premier test que
extconf.rb
s'exécute.Si vous avez XCode installé, alors peut-être vous n'avez pas les outils de ligne de commande de composants de XCode installé? Ils ont été récemment séparé de XCode bon, si vous avez besoin de les installer séparément.