sql >> Base de Datos >  >> RDS >> PostgreSQL

La gema Ruby 'pg' se vincula a una copia incorrecta de libpq.5.dylib (en OSX)

Tanto la causa del problema como una solución fácil se hicieron evidentes cuando ejecuté bin/pg_config en la línea de comando.

pg_config genera las variables que se utilizan para controlar la compilación y el enlace. De particular interés son LIBDIR y LDFLAGS. LIBDIR especifica la ubicación de las bibliotecas estáticas, mientras que LDFLAGS proporciona ubicaciones para buscar bibliotecas dinámicas. En mi sistema, LIBDIR se configuró correctamente en /LibraryPostgreSQL/9.3/lib , pero LDFLAGS se configuró de la siguiente manera:

LDFLAGS = -L../../../src/common -L/usr/local/lib -L/opt/local/20140109/lib -Wl,-dead-strip-dylibs

Desde libpq.5.dylib no estaba presente en ninguna de estas ubicaciones, la gema no pudo encontrarla y, en cambio, encontró una versión anterior que estaba instalada en /usr/lib .

Una forma de solucionar esto sería inyectar la ubicación correcta del archivo en LDFLAGS, posiblemente modificando el código en extconf.rb que genera el archivo de configuración. Sin embargo, una solución mucho más fácil en este caso es agregar un enlace simbólico en /usr/local/lib a la ubicación correcta del archivo:

/usr/local/lib> ln -s /Library/PostgreSQL/9.3/lib/libpq.5.dylib libpq.5.dylib

Si se encuentra con un problema similar, simplemente examine la salida de pg_config y vea si puede colocar un enlace simbólico a la ubicación correcta del archivo en uno de los directorios que ya está especificado por LDFLAGS.