Il y a des variantes de cette question qui tournent autour de SO, mais aucune d'entre elles ne semble avoir de réponse qui puisse résoudre mon problème.
J'utilise OSX Lion (10.7.3). Le dernier XCode est installé.
J'ai installé Postgres en utilisant le paquet Postgres.app de postgresapp.com.
Mais quand j'essaye d'installer le gem pg, j'obtiens 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 du /Applications/Postgres.app/Contents/MacOS/bin/pg_config
la 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
Tous ces paramètres semblent être corrects, à l'exception de la variable CONFIGURE (qui semble faire référence à un autre ordinateur - je n'ai pas d'utilisateur nommé mattt).
Le contenu du fichier mkmf.log 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 */
Toute suggestion serait appréciée.
J'ai "regardé le fichier extconf.rb, et après un peu de débogage, j'ai découvert
find_header ("libpq-fe.h")
c'est échouer. Non pas parce que libpq-fe.h n’est pas là, mais parce que find_header
la méthode elle-même échoue. J'ai essayé de lancer find_header en utilisant irb, et j'ai eu la même 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.
MODIFIER:
J'ai découvert que mon ordinateur devait être encore plus bouleversé que je ne le pensais. Je faisais une installation groupée pour un autre projet et j'ai eu un échec très similaire lors de l'installation de la pierre précieuse sqlite3.
checking for sqlite3.h... *** extconf.rb failed ***
Je n’ai jamais eu de problèmes avec la gem sqlite3 dans le passé.
Réponses:
62 pour la réponse № 1J'ai enfin trouvé la cause du problème! Bien que je sois encore incertain de l’origine de ce problème.
Examinez le contenu du fichier mkmf.log créé en cas d'échec de ma commande d'installation (voir mon message d'origine). Il enregistre une tentative d'exécution de la commande suivante
/usr/bin/gcc-4.2 ...and so on...
Il n'y a pas /usr/bin/gcc-4.2
sur mon système. Il y a un gcc
, qui est symboliquement lié à llvm-gcc-4.2
. Ma solution était de créer un autre lien symbolique
sudo ln -s llvm-gcc-4.2 gcc-4.2
Après avoir fait ce lien, mon gem install pg
la commande a fonctionné sans aucun problème.
J'ai trouvé la solution à ce problème sur le blog de Frozen Canuck dans l'article Erreur d'installation de Ruby Gem avec extension C. Il spécule que le problème peut être causé par des versions conflictuelles de XCode. quelle que soit la cause, mes remerciements éternels!
19 pour la réponse № 2
Sur OS X Mavericks
sudo ln -s /usr/bin/llvm-gcc /usr/bin/gcc-4.2
travaux.
15 pour la réponse № 3
J'ai eu un problème similaire. Suite à une réponse de bobfet1 pour un question similaire J'ai réussi à obtenir la gemme installée par:
sudo env ARCHFLAGS="-arch x86_64" gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/MacOS/bin/pg_config
13 pour la réponse № 4
Merci à ce gars: http://www.computersnyou.com/2025/
Sur Mavericks utilisant: xcode-select --install
(en supposant que vous ayez installé Xcode à partir de l'App Store) fonctionne.
7 pour la réponse № 5
L'installation de xcode à partir de l'App Store ne suffit pas. Vous aurez également besoin d’outils de ligne de commande de xcode. https://developer.apple.com/library/ios/#documentation/DeveloperTools/Conceptual/WhatsNewXcode/Articles/xcode_4_3.html
Après avoir installé xcode depuis l'App Store, ouvrez xcode. Goto Xcode-> Open Developer Tool-> 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
6 pour la réponse № 6
Problème similaire sur Mavericks 10.9 - mais il était causé par l’absence d’acceptation du contrat de licence Xcode. Blech.
Courir sudo xcodebuild
et accepter la malbouffe. Le tout fonctionne comme prévu.
2 pour la réponse № 7
J'ai également rencontré ce problème, pour moi la réponse était de mettre à jour RVM de toutes choses.
rvm get head
rvm install 1.9.2
2 pour la réponse № 8
Moi aussi, je suis sur Mountain Lion, outre le "sudo ln -s /usr/bin/{llvm- ,Buchgcc-4.2" suggéré par @grilix, je devais faire: