2012-03-23 12 views
8

Der Versuch, das PG-Juwel zu installieren, gibt mir Fehler.Probleme bei der Installation von PG

Ich benutze Ruby 1.9.3-p125 gebaut mit rbenv/ruby-build. Ich habe PostgreSQL mit dem Ein-Klick-Installationsprogramm installiert. Ich bin in der Lage, mit pgAdmin eine Verbindung zur DB herzustellen. Mir gehen die Ideen aus.

% gem install pg                                                  ~ 
Building native extensions. This could take a while... 
ERROR: Error installing pg: 
    ERROR: Failed to build gem native extension. 

     /Users/sandropadin/.rbenv/versions/1.9.3-p125/bin/ruby extconf.rb 
checking for pg_config... yes 
Using config values from /usr/bin/pg_config 
checking for libpq-fe.h... yes 
checking for libpq/libpq-fs.h... yes 
checking for pg_config_manual.h... yes 
checking for PQconnectdb() in -lpq... yes 
checking for PQconnectionUsedPassword()... yes 
checking for PQisthreadsafe()... yes 
checking for PQprepare()... yes 
checking for PQexecParams()... yes 
checking for PQescapeString()... yes 
checking for PQescapeStringConn()... yes 
checking for PQgetCancel()... yes 
checking for lo_create()... yes 
checking for pg_encoding_to_char()... yes 
checking for pg_char_to_encoding()... yes 
checking for PQsetClientEncoding()... yes 
checking for rb_encdb_alias()... yes 
checking for rb_enc_alias()... yes 
checking for struct pgNotify.extra in libpq-fe.h... yes 
checking for unistd.h... yes 
checking for ruby/st.h... yes 
creating extconf.h 
creating Makefile 

make 
compiling pg.c 
compiling pg_connection.c 
pg_connection.c: In function ‘pgconn_wait_for_notify’: 
pg_connection.c:1986: warning: ‘rb_thread_select’ is deprecated (declared at /Users/sandropadin/.rbenv/versions/1.9.3-p125/include/ruby-1.9.1/ruby/intern.h:379) 
pg_connection.c: In function ‘pgconn_block’: 
pg_connection.c:2512: warning: ‘rb_thread_select’ is deprecated (declared at /Users/sandropadin/.rbenv/versions/1.9.3-p125/include/ruby-1.9.1/ruby/intern.h:379) 
compiling pg_result.c 
linking shared-object pg_ext.bundle 
ld: in /usr/local/lib/libssl.0.9.8.dylib, missing required architecture x86_64 in file for architecture x86_64 
collect2: ld returned 1 exit status 
make: *** [pg_ext.bundle] Error 1 


Gem files will remain installed in /Users/sandropadin/.rbenv/versions/1.9.3-p125/lib/ruby/gems/1.9.1/gems/pg-0.13.2 for inspection. 
Results logged to /Users/sandropadin/.rbenv/versions/1.9.3-p125/lib/ruby/gems/1.9.1/gems/pg-0.13.2/ext/gem_make.out 
+2

Wo haben Sie Ihre libssl her? Klingt, als ob Sie versuchen würden, 32-Bit- und 64-Bit-Binärdateien zu mischen. –

+0

Ich denke nur von der Verwendung 'brew install openssl' – Sandro

+0

Ich denke, du bist richtig über das Mischen der beiden, aber ich weiß nicht, ob es möglich ist oder wie Homebrew zu bauen Openssl als 64-Bit – Sandro

Antwort

14

Nicht sicher, welcher der folgenden Schritte dieses Problem schließlich behoben. Aber da mu zu kurz erwähnt wird, bestand das Problem darin, 32-Bit- und 64-Bit-Binärdateien zu mischen.

  • 1. installierte ich diese 64-bit version of PostgreSQL
  • 2., ich alle alten Homebrew OpenSSL Installation deinstalliert

    $ brauen uninstall openssl

  • 3. Ich installierte die 64-Bit Version von OpenSSL mit Homebrew

    $ brauen

  • Schließlich --64-Bit-openssl installieren, wenn das pg gem Installation, änderte ich die LDFLAGS auf die 64-Bit-Version von OpenSSL

    gem

    $ Punkt installieren pg - --with-ldflags = '- L/usr/local/Keller/openssl/0.9.8s'

+1

Ich muss sagen, dass ich habe gekämpft, um das 'pg'-Juwel auf meiner Kopie von Lion für ca. 6 Monate zu kompilieren. Jetzt kam diese Antwort und ich kann Rails 3.2 + PostgreSQL wie ein Champion laufen lassen. Vielen Dank! –

+1

Dies funktionierte für mich auf Mountain Lion, Rubin 1.9.3p194 (2012-04-20 Revision 35410) [x86_64-darwin12.0.0]. Ich habe 'brew install postgresql' verwendet und hatte openssl nicht bereits, also einfach' brew install --64-bit openssl' und dann die mitgelieferten LDFLAGS verwendet. – thugsb

+0

funktioniert gut, außer die Version von openssl ist weitergegangen (jetzt bei 1.0.1c). Ein Benutzer muss cd/usr/local/Cellar/openssl/und "ls" ausführen, um ihre Versionsnummer –

Verwandte Themen