ruby-on-rails - new - database yml postgres rails



No se puede encontrar la biblioteca de cliente de PostgreSQL(libpq) (10)

Estoy tratando de instalar PostgreSQL for Rails en Mac OS X 10.6. Primero probé la instalación de MacPorts pero no funcionó, así que hice la instalación de DMG con un solo clic. Eso pareció funcionar.

Sospecho que necesito instalar los paquetes de desarrollo de PostgreSQL, pero no tengo idea de cómo hacerlo en OS X.

Esto es lo que obtengo cuando intento hacer sudo gem install pg :

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

        /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb
checking for pg_config... yes
Using config values from /Library/PostgreSQL/8.3/bin/pg_config
checking for libpq-fe.h... yes
checking for libpq/libpq-fs.h... yes
checking for PQconnectdb() in -lpq... no
checking for PQconnectdb() in -llibpq... no
checking for PQconnectdb() in -lms/libpq... no
Can't find the PostgreSQL client library (libpq)
*** 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
    --without-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=/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/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
    --without-pg-config
    --with-pg_config
    --without-pg_config
    --with-pqlib
    --without-pqlib
    --with-libpqlib
    --without-libpqlib
    --with-ms/libpqlib
    --without-ms/libpqlib


Gem files will remain installed in /Library/Ruby/Gems/1.8/gems/pg-0.11.0 for inspection.
Results logged to /Library/Ruby/Gems/1.8/gems/pg-0.11.0/ext/gem_make.out

https://ffff65535.com


Así es como lo hice para trabajar en Mavericks. Nota: Ya había instalado postgresql 9.3 desde homebrew.

  1. Actualice Xcode a 5.0 desde App Store

  2. Instalar herramientas de desarrollador de línea de comando

    xcode-select --install

  3. Aceptar la licencia de Xcode

    sudo xcodebuild -license

  4. Instalar gema

    ARCHFLAGS = "- arch x86_64" joya instalar pg


Así que, básicamente, hice esto ;-)

brew install postgres

Esto es lo que finalmente hizo por mí (combinación de múltiples soluciones proporcionadas anteriormente junto con otras publicaciones):

$ sudo env ARCHFLAGS = "- arch x86_64" gem install pg - with-pg-include = / Library / PostgreSQL / 9.6 / include /


Fake out gem prefijando las variables de entorno apropiadas. Si estaba instalando desde MacPorts, debería poder seguir el siguiente procedimiento:

% /opt/local/lib/postgresql91/bin/pg_config
BINDIR = /opt/local/lib/postgresql91/bin
DOCDIR = /opt/local/share/doc/postgresql
HTMLDIR = /opt/local/share/doc/postgresql
INCLUDEDIR = /opt/local/include/postgresql91
PKGINCLUDEDIR = /opt/local/include/postgresql91
INCLUDEDIR-SERVER = /opt/local/include/postgresql91/server
LIBDIR = /opt/local/lib/postgresql91
PKGLIBDIR = /opt/local/lib/postgresql91
LOCALEDIR = /opt/local/share/locale
MANDIR = /opt/local/share/man
SHAREDIR = /opt/local/share/postgresql91
SYSCONFDIR = /opt/local/etc/postgresql91
PGXS = /opt/local/lib/postgresql91/pgxs/src/makefiles/pgxs.mk
CONFIGURE = '--prefix=/opt/local' '--sysconfdir=/opt/local/etc/postgresql91' '--bindir=/opt/local/lib/postgresql91/bin' '--libdir=/opt/local/lib/postgresql91' '--includedir=/opt/local/include/postgresql91' '--datadir=/opt/local/share/postgresql91' '--mandir=/opt/local/share/man' '--with-includes=/opt/local/include' '--with-libraries=/opt/local/lib' '--with-openssl' '--with-bonjour' '--with-readline' '--with-zlib' '--with-libxml' '--with-libxslt' '--enable-thread-safety' '--enable-integer-datetimes' '--with-ossp-uuid' 'CC=/usr/bin/gcc-4.2' 'CFLAGS=-pipe -O2 -arch x86_64' 'LDFLAGS=-L/opt/local/lib -arch x86_64' 'CPPFLAGS=-I/opt/local/include -I/opt/local/include/ossp'
CC = /usr/bin/gcc-4.2
CPPFLAGS = -I/opt/local/include -I/opt/local/include/ossp -I/opt/local/include/libxml2 -I/opt/local/include
CFLAGS = -pipe -O2 -arch x86_64 -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -Wformat-security -fno-strict-aliasing -fwrapv
CFLAGS_SL = 
LDFLAGS = -L/opt/local/lib -arch x86_64 -L/opt/local/lib -L/opt/local/lib -Wl,-dead_strip_dylibs
LDFLAGS_EX = 
LDFLAGS_SL = 
LIBS = -lpgport -lxslt -lxml2 -lssl -lcrypto -lz -lreadline -lm 
VERSION = PostgreSQL 9.1beta1

A partir de ahí, extraiga el LIBDIR , LIBDIR , CPPFLAGS , LIBS y LDFLAGS (sin LDFLAGS el que creo que lo ejecutará es LIBDIR ). Entonces correría:

setenv PATH /opt/local/lib/postgresql91/bin:${PATH}
sudo env LDFLAGS=-L`pg_config --libdir` CPPFLAGS=`pg_config --cppflags` gem install pg

Eso debería hacerlo por ti. Avísame si no es así.


La respuesta de ARCHFLAGS que otros han propuesto no funcionará si de alguna manera terminaste con una versión de 64 bits de postgres (que homebrew instalará) y una versión de 32 bits de ruby. Por alguna razón, rbenv insiste en construir ruby ​​1.9.2-p290 como 32 bits para mí, lo que hace que sea imposible enlazar con postgres de 64 bits.

Verifica la arquitectura de tu binario ruby ​​con

file `which ruby`

o si usa rbenv

file `rbenv which ruby`

Y compare contra su postgres:

file `which postgres`

Si hay un desajuste, tendrás que volver a instalar postgres o ruby. Con rbenv resolví esto simplemente cambiando a una versión diferente: 1.9.3-p194 vez de 1.9.2-p290 .


No creo que necesite los archivos de desarrollo de Postgres, todo lo que necesita debe haber sido incluido con su instalador. Es más probable que la ruta a la que están instalados no se encuentre en la ruta de su entorno y, por lo tanto, la gema no puede encontrarlos cuando intenta compilar la pg.

No debería tener que ejecutar gem install pg como root; de hecho, si lo hace, es probable que su PATH (la RUTA de la raíz si se ejecute con sudo) no contenga la información necesaria.

Lo siguiente generalmente me funciona:

# Might be different depending on where your installer installed postgres 8.3
export PATH=$PATH:/Library/PostgreSQL/8.3/include/
export ARCHFLAGS='-arch x86_64'
gem install pg

Quizás puedas probar este:

ARCHFLAGS="-arch i386 -arch x86_64" gem install pg

Para conocer la arquitectura de tu biblioteca puedes usar

file /usr/local/lib/libpq.dylib 

que dio solo 1 arquitectura en mi caso (instalado a través de homebrew):

/usr/local/lib/libpq.dylib: Mach-O 64-bit dynamically linked shared library x86_64

Si usa Yosemite:

brew install postgres

Entonces:

ARCHFLAGS="-arch x86_64" gem install pg

Y (opcional) finalmente, si quieres iniciar autovacuum ...

postgres -D /usr/local/var/postgres

Solución: se reinstaló PostgreSQL con Homebrew.


$ sudo su

$ env ARCHFLAGS="-arch x86_64" gem install pg

Building native extensions.  This could take a while...
Successfully installed pg-0.11.0
1 gem installed
Installing ri documentation for pg-0.11.0...
Installing RDoc documentation for pg-0.11.0...

¡TRABAJÓ!





rubygems