/ / gem install pg ne fonctionne pas sous OSX Lion - ruby, postgresql, rubygems, osx-lion, pg

gem install pg ne fonctionne pas sur OSX Lion - rubis, postgresql, rubygems, osx-lion, pg

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 № 1

J'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:



Translate Home - Google Home

Send us feedback

View Google in:
MobileClassic

©2017 Google - Privacy & Terms

sudo ln -s /usr/bin/{llvm-,}g++-4.2

2 pour la réponse № 9

Après une mise à niveau Mavericks ...

Réinstallez votre version ruby.

rvm uninstall 1.9.2-p320

puis

rvm install 1.9.2-p320

ou quelle que soit la version de rubis que vous avez.


1 pour la réponse № 10

Je suis sur Mountain Lion et la réponse acceptée de Dave Isaacs a fonctionné pour moi. Je devais aussi faire

sudo ln -s llvm-g++-4.2 g++-4.2

1 pour la réponse № 11

Plutôt que de mettre à jour RVM lui-même (https://stackoverflow.com/a/10430742/2807795), comme ci-dessus, c'est la réinstallation de Ruby 2.0.0-p247 qui a fait l'affaire, après avoir essayé toutes les autres étapes ci-dessus sans succès.

rvm get head
rvm install 2.0.0

1 pour la réponse № 12
$ gem install pg

Si cela échoue:

$ sudo gem install pg

Ensuite, si cela échouait:

$ sudo find / -name “pg_config”

Après avoir trouvé pg_config"s emplacement, lancez ceci pour finalement l’installer:

$ sudo gem install pg --with-pg-config=/usr/local/Cellar/postgresql/9.5.1/bin/pg_config

Bien sûr, vous voudrez changer le chemin où vous avez trouvé pg_config.

Ensuite, vérifiez vos gemmes installées avec gem list, et cela devrait montrer quelque chose comme ça:

<code> liste de pierres précieuses </ code> montrant les bonnes choses

Plus d'informations peuvent être trouvées dans mon guide.


0 pour la réponse № 13

Si la sortie comprend:

/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.

alors il y a vraiment quelque chose qui cloche dans votre environnement de compilation. Surtout quand l’échec est le tout premier test que extconf.rb s'exécute.

Si vous avez installé XCode, vous n’avez peut-être pas installé le composant Outils de ligne de commande de XCode. récemment séparé de XCode proprement dit, vous devez donc les installer séparément.