Building the postgres gem for a 64bit PostgreSQL on Snow Leopard (10.6)

sudo env ARCHFLAGS=”-arch x86_64″ gem install postgres

10 Comments

  1. To install the pg gem (the successor to postgres gem):

    * does not build against prebuild postgres binary package from enterprise db
    * build postgres from source (straight forward, installs under /usr/local/pgsql)
    * change to root: su -
    * export ARCHFLAGS=’-arch x86_64′
    * export PATH=/usr/local/pgsql/bin:${PATH}
    * gem install pg

  2. Karim says:

    Hi, I’ve tried both methods to install the pg gem on a fresh installation of Snow Leopard and I get the following error. I could install easily in Leopard. Any ideas?

    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb install pg
    checking for main() in -lpq… yes
    checking for libpq-fe.h… yes
    checking for libpq/libpq-fs.h… yes
    checking for PQconnectionUsedPassword()… no
    checking for PQisthreadsafe()… no
    checking for PQprepare()… no
    checking for PQexecParams()… no
    checking for PQescapeString()… no
    checking for PQescapeStringConn()… no
    checking for lo_create()… no
    checking for pg_encoding_to_char()… no
    checking for PQsetClientEncoding()… no
    creating Makefile

    make
    gcc -I. -I. -I/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/universal-darwin10.0 -I. -DHAVE_LIBPQ_FE_H -DHAVE_LIBPQ_LIBPQ_FS_H -I/Library/PostgreSQL/8.4/include -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -fno-common -arch i386 -arch x86_64 -g -Os -pipe -fno-common -DENABLE_DTRACE -fno-common -pipe -fno-common -c compat.c
    In file included from compat.c:16:
    compat.h:38:2: error: #error PostgreSQL client version too old, requires 7.3 or later.
    In file included from compat.c:16:
    compat.h:69: error: conflicting types for ‘PQconnectionNeedsPassword’
    /Library/PostgreSQL/8.4/include/libpq-fe.h:293: error: previous declaration of ‘PQconnectionNeedsPassword’ was here
    compat.h:70: error: conflicting types for ‘PQconnectionUsedPassword’
    /Library/PostgreSQL/8.4/include/libpq-fe.h:294: error: previous declaration of ‘PQconnectionUsedPassword’ was here
    compat.h:121: error: redefinition of typedef ‘PQnoticeReceiver’
    /Library/PostgreSQL/8.4/include/libpq-fe.h:144: error: previous declaration of ‘PQnoticeReceiver’ was here
    compat.h:125: error: redeclaration of enumerator ‘PQERRORS_TERSE’
    /Library/PostgreSQL/8.4/include/libpq-fe.h:105: error: previous definition of ‘PQERRORS_TERSE’ was here
    compat.h:126: error: redeclaration of enumerator ‘PQERRORS_DEFAULT’
    /Library/PostgreSQL/8.4/include/libpq-fe.h:106: error: previous definition of ‘PQERRORS_DEFAULT’ was here
    compat.h:128: error: redeclaration of enumerator ‘PQERRORS_VERBOSE’
    /Library/PostgreSQL/8.4/include/libpq-fe.h:108: error: previous definition of ‘PQERRORS_VERBOSE’ was here
    compat.h:128: error: conflicting types for ‘PGVerbosity’
    /Library/PostgreSQL/8.4/include/libpq-fe.h:108: error: previous declaration of ‘PGVerbosity’ was here
    compat.h:132: error: redeclaration of enumerator ‘PQTRANS_IDLE’
    /Library/PostgreSQL/8.4/include/libpq-fe.h:96: error: previous definition of ‘PQTRANS_IDLE’ was here
    compat.h:133: error: redeclaration of enumerator ‘PQTRANS_ACTIVE’
    /Library/PostgreSQL/8.4/include/libpq-fe.h:97: error: previous definition of ‘PQTRANS_ACTIVE’ was here
    compat.h:134: error: redeclaration of enumerator ‘PQTRANS_INTRANS’
    /Library/PostgreSQL/8.4/include/libpq-fe.h:98: error: previous definition of ‘PQTRANS_INTRANS’ was here
    compat.h:135: error: redeclaration of enumerator ‘PQTRANS_INERROR’
    /Library/PostgreSQL/8.4/include/libpq-fe.h:99: error: previous definition of ‘PQTRANS_INERROR’ was here
    compat.h:137: error: redeclaration of enumerator ‘PQTRANS_UNKNOWN’
    /Library/PostgreSQL/8.4/include/libpq-fe.h:101: error: previous definition of ‘PQTRANS_UNKNOWN’ was here
    compat.h:137: error: conflicting types for ‘PGTransactionStatusType’
    /Library/PostgreSQL/8.4/include/libpq-fe.h:101: error: previous declaration of ‘PGTransactionStatusType’ was here
    compat.h:142: error: conflicting types for ‘PQtransactionStatus’
    /Library/PostgreSQL/8.4/include/libpq-fe.h:285: error: previous declaration of ‘PQtransactionStatus’ was here
    compat.h:143: error: conflicting types for ‘PQparameterStatus’
    /Library/PostgreSQL/8.4/include/libpq-fe.h:287: error: previous declaration of ‘PQparameterStatus’ was here
    compat.h:157: error: conflicting types for ‘PQsetErrorVerbosity’
    /Library/PostgreSQL/8.4/include/libpq-fe.h:309: error: previous declaration of ‘PQsetErrorVerbosity’ was here
    compat.h:169:2: error: #error unsupported postgresql version, requires 7.3 or later.
    compat.c: In function ‘PQsetClientEncoding’:
    compat.c:21: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token
    compat.c:28: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token
    compat.c:35: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token
    compat.c:43: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token
    compat.c:49: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token
    compat.c:55: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token
    compat.c:61: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token
    compat.c:67: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token
    compat.c:73: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token
    compat.c:79: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token
    compat.c:85: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token
    compat.c:93: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token
    compat.c:102: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token
    compat.c:109: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token
    compat.c:115: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token
    compat.c:125: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token
    compat.c:131: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token
    compat.c:137: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token
    compat.c:143: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token
    compat.c:151: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token
    compat.c:159: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token
    compat.c:167: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token
    compat.c:173: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token
    compat.c:179: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token
    compat.c:185: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token
    compat.c:191: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token
    compat.c:197: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token
    compat.c:203: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token
    compat.c:209: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token
    compat.c:215: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token
    compat.c:221: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token
    compat.c:230: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token
    compat.c:237: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token
    compat.c:280: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token
    compat.c:339: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token
    compat.c:386: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token
    compat.c:465: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token
    compat.c:539: error: old-style parameter declarations in prototyped function definition
    compat.c:539: error: expected ‘{’ at end of input
    :

  3. Jim Erickson says:

    Same error as above. Solution is to make sure you also install the developer package (actually a zip file to be placed in the /opt directory) and then follow the above directions. Worked like a charm.

  4. Taylor Yelverton says:

    Im having the same problem @Jim what developer package are you talking about?

  5. Lee says:

    Thank you very much for these instructions :)

  6. A different Lee says:

    Under Snow Leopard, I had the same errors as Karim. Part of the problem is that SL uses gcc 4.2 instead of 4.0. So I moved the /usr/bin/gcc soft link to point to the 4.0 compiler:

    sudo rm /usr/bin/gcc
    sudo ln -s /usr/bin/gcc-4.0 /usr/bin/gcc

    Then install pg, pointing to my installation of postgres.

    sudo env ARCHFLAGS=”-arch i386″ gem install pg — –with-pgsql-include=/usr/local/pgsql/include/ –with-pgsql-lib=/usr/local/pgsql/lib/

    Note that this is a plain 32-bit compilation; I’m not running the 64-bit kernel or the SL version of Ruby or whatever else is causing people to want to compile pg for 64-bit-ness.

  7. As a beginner I could not grapple with the above but found http://blog.blackwhale.at/ which got me up and running – for anyone else that gets stuck getting Ruby and Postgres running on Snow Leopard.

  8. [...] Philipp Schmid » Blog Archive » Building the postgres gem for a 64bit PostgreSQL on Snow Leopard (… [...]

  9. you porn says:

    rdhx niczs porn hub rqntoz t rz i hvj

  10. pyoo wmxzz adult youtube vwcogp f ta f xos

Leave a Reply