69 lines
2.8 KiB
Plaintext
69 lines
2.8 KiB
Plaintext
= Compiling on MacOS X
|
|
|
|
The EnterpriseDB packages are the recommended PostgreSQL installations to use
|
|
with MacOS X. They eliminate most or all of the issues with getting 'pg'
|
|
installed, linked correctly, and running.
|
|
|
|
== Segfaults and SSL Support
|
|
|
|
If you need a custom installation of PostgreSQL, you should ensure that you
|
|
either compile it against the same version of OpenSSL as the OpenSSL extension
|
|
of the Ruby you'll be using, or compile it without SSL support. If you fail to
|
|
do this, you will likely see segfaults when you use 'pg' and the 'openssl'
|
|
extension at the same time. You can see what library it's linked against using
|
|
'otool -L'; for example, on my 10.7 machine I use for 'pg' development:
|
|
|
|
$ otool -L /System/Library/Frameworks/Ruby.framework/Versions\
|
|
/1.8/usr/lib/ruby/1.8/universal-darwin11.0/openssl.bundle
|
|
|
|
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/\
|
|
lib/ruby/1.8/universal-darwin11.0/openssl.bundle:
|
|
/System/Library/Frameworks/Ruby.framework/Versions/1.8/\
|
|
usr/lib/libruby.1.dylib (compatibility version 1.8.0, \
|
|
current version 1.8.7)
|
|
/usr/lib/libssl.0.9.8.dylib (compatibility version 0.9.8, \
|
|
current version 0.9.8)
|
|
/usr/lib/libcrypto.0.9.8.dylib (compatibility version 0.9.8, \
|
|
current version 0.9.8)
|
|
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, \
|
|
current version 159.0.0)
|
|
|
|
|
|
== Dealing with Installation Problems
|
|
|
|
If you are building/installing pg on MacOS X, and the installation doesn't
|
|
work at first, here are a few things you can try.
|
|
|
|
=== pg_config
|
|
|
|
The first thing you should do is ensure that the 'pg_config' tool that comes
|
|
with Postgres is in your path. If it isn't, or the one that's first in your
|
|
path isn't the one that was installed with the Postgres you want to build
|
|
against, you can specify the path to it with the --with-pg-config option.
|
|
|
|
For example, if you're using the Ruby binary that comes with OSX, and
|
|
PostgreSQL 9.0.x installed from MacPorts, do:
|
|
|
|
gem install -- --with-pg-config=/opt/local/lib/postgresql90/bin/pg_config
|
|
|
|
=== ARCHFLAGS and Universal Binaries
|
|
|
|
OS X supports both architecture-specific binaries (e.g. i386), as well as
|
|
universal binaries (i.e. i386 & ppc). If Ruby is built as a universal binary
|
|
and PostgreSQL is not, you need to specify the path to the appropriate
|
|
pg_config binary or set the environment variable ARCHFLAGS appropriately.
|
|
|
|
Alternatively, if the build system can't figure out which architectures it
|
|
should include, you may need to set the 'ARCHFLAGS' environment variable
|
|
explicitly:
|
|
|
|
sudo env ARCHFLAGS='-arch x86_64' gem install pg
|
|
|
|
or, if you're building from source:
|
|
|
|
rake compile ARCHFLAGS="-arch x86_64"
|
|
|
|
Note that the recommended EnterpriseDB packages are correctly compiled as
|
|
universal binaries, and don't need any of these workarounds.
|
|
|